README.md aktualisiert
This commit is contained in:
70
README.md
70
README.md
@@ -23,6 +23,7 @@ Dieses Tool ermöglicht es, einzelne oder alle Shops auf einem Plesk-Server temp
|
||||
- ✅ **Plesk-kompatibel**: Funktioniert mit Plesk-verwalteten Shops
|
||||
- ✅ **CDN-kompatibel**: Funktioniert auch hinter Link11, Cloudflare & Co.
|
||||
- ✅ **Fail-Open**: Bei Cache-Fehlern wird Traffic durchgelassen (keine Ausfälle)
|
||||
- ✅ **Korrekte Ownership**: Erstellte Dateien gehören dem Shop-User, nicht root
|
||||
|
||||
## 🏗️ Architektur
|
||||
|
||||
@@ -49,6 +50,35 @@ Dieses Tool ermöglicht es, einzelne oder alle Shops auf einem Plesk-Server temp
|
||||
|
||||
**Anwendungsfall**: Shop soll weltweit erreichbar bleiben, aber Bots sollen gebremst werden.
|
||||
|
||||
## 👤 Ownership-Handling
|
||||
|
||||
### Problem: root:root Dateien
|
||||
|
||||
Wenn das Script als root läuft, werden erstellte Dateien standardmäßig `root:root` zugeordnet. Das kann zu Problemen führen:
|
||||
|
||||
- PHP läuft als Domain-User und kann die Dateien evtl. nicht lesen/schreiben
|
||||
- Plesk zeigt falsche Berechtigungen an
|
||||
- Backup-Tools erfassen die Dateien möglicherweise nicht korrekt
|
||||
|
||||
### Lösung: Automatische Owner-Erkennung
|
||||
|
||||
Das Script ermittelt automatisch den häufigsten Owner im `httpdocs`-Verzeichnis und verwendet diesen für alle erstellten Dateien:
|
||||
|
||||
```
|
||||
👤 Ownership: dbartholomae:psacln (uid=10005, gid=10006)
|
||||
```
|
||||
|
||||
**Betroffene Dateien/Ordner:**
|
||||
- `index.php` (nach Änderung)
|
||||
- `index.php.geoip_backup`
|
||||
- `geoip_blocking.php`
|
||||
- `geoip_ip_ranges.cache`
|
||||
- `geoip_ratelimit/` (inkl. Unterordner)
|
||||
|
||||
### Warum "häufigster Owner"?
|
||||
|
||||
In manchen Fällen können einzelne Dateien im `httpdocs`-Verzeichnis einem anderen User gehören (z.B. durch manuelle Uploads oder Plugins). Die Zählung der häufigsten `uid:gid`-Kombination stellt sicher, dass der "richtige" Owner verwendet wird.
|
||||
|
||||
## 🚦 Rate-Limiting (Bot-Modus)
|
||||
|
||||
### Funktionsweise
|
||||
@@ -211,11 +241,12 @@ Das war's! Das Script ist vollständig selbstverwaltend.
|
||||
|
||||
```
|
||||
============================================================
|
||||
GeoIP Shop Blocker Manager v4.1.0
|
||||
GeoIP Shop Blocker Manager v4.2.0
|
||||
🇩🇪🇦🇹🇨🇭 DACH | 🇪🇺 Eurozone+GB | 🤖 Bot-Rate-Limiting
|
||||
🛡️ Mit Cache-Validierung und Fail-Open
|
||||
🚦 Rate-Limiting nach BOT-TYP (nicht IP)
|
||||
🌐 IP-basierte Erkennung: 37 Ranges für 1 Bot(s)
|
||||
👤 Korrekte Ownership für erstellte Dateien
|
||||
============================================================
|
||||
|
||||
----------------------------------------
|
||||
@@ -254,6 +285,8 @@ Region wählen [1/2]:
|
||||
### Beispiel: Bot-Rate-Limiting aktivieren
|
||||
|
||||
```
|
||||
👤 Ownership: dbartholomae:psacln (uid=10005, gid=10006)
|
||||
|
||||
🔧 Aktiviere 🤖 Bot-Only für: shop.example.com
|
||||
Modus: Bot-Rate-Limiting nach Bot-Typ (weltweit erreichbar)
|
||||
Rate-Limit: 30 req/min pro Bot-Typ, Ban: 5 min
|
||||
@@ -341,6 +374,8 @@ Region wählen [1/2]:
|
||||
- `bans/` - Aktive Bans (`.ban` Dateien mit Timestamp|Bot-Name)
|
||||
- `counts/` - Request-Counter (`.count` Dateien)
|
||||
|
||||
**Wichtig**: Alle diese Dateien gehören dem Shop-User (z.B. `dbartholomae:psacln`), nicht `root:root`.
|
||||
|
||||
### System-weit
|
||||
|
||||
- `/var/lib/geoip/active_shops.json` - Tracking aktiver Shops
|
||||
@@ -434,10 +469,29 @@ mv index.php.geoip_backup index.php
|
||||
# Prüfe Verzeichnis-Berechtigungen
|
||||
ls -la /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/
|
||||
|
||||
# Sollte 777 sein (PHP läuft als Domain-User)
|
||||
# Sollte 777 sein und dem Shop-User gehören
|
||||
chmod -R 777 /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/
|
||||
|
||||
# Falls Owner falsch ist (root statt Shop-User):
|
||||
chown -R SHOPUSER:psacln /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/
|
||||
```
|
||||
|
||||
### Dateien gehören root:root
|
||||
|
||||
Falls du eine ältere Version verwendet hast, können Dateien noch `root:root` gehören:
|
||||
|
||||
```bash
|
||||
# Prüfen
|
||||
ls -la /var/www/vhosts/SHOP/httpdocs/geoip_*
|
||||
|
||||
# Korrigieren (ersetze SHOPUSER mit dem richtigen User)
|
||||
chown SHOPUSER:psacln /var/www/vhosts/SHOP/httpdocs/geoip_*
|
||||
chown SHOPUSER:psacln /var/www/vhosts/SHOP/httpdocs/index.php*
|
||||
chown -R SHOPUSER:psacln /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/
|
||||
```
|
||||
|
||||
Alternativ: Shop deaktivieren und mit v4.2.0+ neu aktivieren.
|
||||
|
||||
### Alibaba-Bot wird nicht erkannt
|
||||
|
||||
```bash
|
||||
@@ -502,6 +556,13 @@ grep -oP '(BOT|BANNED): \K[^|]+' /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log
|
||||
|
||||
## 📚 Changelog
|
||||
|
||||
### v4.2.0
|
||||
- **NEU**: Korrekte Ownership für erstellte Dateien
|
||||
- **NEU**: Automatische Erkennung des häufigsten Owners im httpdocs-Verzeichnis
|
||||
- **NEU**: Alle erstellten Dateien/Ordner gehören dem Shop-User statt root
|
||||
- **NEU**: `get_most_common_owner()` und `set_owner()` Hilfsfunktionen
|
||||
- Betroffene Dateien: index.php, Backup, geoip_blocking.php, Cache, ratelimit-Ordner
|
||||
|
||||
### v4.1.0
|
||||
- **NEU**: IP-basierte Bot-Erkennung für getarnte Bots
|
||||
- **NEU**: `BOT_IP_RANGES` mit Alibaba Cloud IP-Ranges (~20 Mio IPs)
|
||||
@@ -537,9 +598,10 @@ grep -oP '(BOT|BANNED): \K[^|]+' /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log
|
||||
|
||||
---
|
||||
|
||||
**Version**: 4.1.0
|
||||
**Version**: 4.2.0
|
||||
**Letztes Update**: Dezember 2025
|
||||
**Status**: Production Ready ✅
|
||||
**Bot-Patterns**: 321 spezifisch + 32 generisch
|
||||
**Bot-IP-Ranges**: 37 Ranges für Alibaba (~20 Mio IPs)
|
||||
**Modi**: 🌍 GeoIP-Blocking | 🤖 Bot-Rate-Limiting
|
||||
**Modi**: 🌍 GeoIP-Blocking | 🤖 Bot-Rate-Limiting
|
||||
**Ownership**: Automatisch vom Shop-User übernommen 👤
|
||||
Reference in New Issue
Block a user