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
|
- ✅ **Plesk-kompatibel**: Funktioniert mit Plesk-verwalteten Shops
|
||||||
- ✅ **CDN-kompatibel**: Funktioniert auch hinter Link11, Cloudflare & Co.
|
- ✅ **CDN-kompatibel**: Funktioniert auch hinter Link11, Cloudflare & Co.
|
||||||
- ✅ **Fail-Open**: Bei Cache-Fehlern wird Traffic durchgelassen (keine Ausfälle)
|
- ✅ **Fail-Open**: Bei Cache-Fehlern wird Traffic durchgelassen (keine Ausfälle)
|
||||||
|
- ✅ **Korrekte Ownership**: Erstellte Dateien gehören dem Shop-User, nicht root
|
||||||
|
|
||||||
## 🏗️ Architektur
|
## 🏗️ 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.
|
**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)
|
## 🚦 Rate-Limiting (Bot-Modus)
|
||||||
|
|
||||||
### Funktionsweise
|
### 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
|
🇩🇪🇦🇹🇨🇭 DACH | 🇪🇺 Eurozone+GB | 🤖 Bot-Rate-Limiting
|
||||||
🛡️ Mit Cache-Validierung und Fail-Open
|
🛡️ Mit Cache-Validierung und Fail-Open
|
||||||
🚦 Rate-Limiting nach BOT-TYP (nicht IP)
|
🚦 Rate-Limiting nach BOT-TYP (nicht IP)
|
||||||
🌐 IP-basierte Erkennung: 37 Ranges für 1 Bot(s)
|
🌐 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
|
### Beispiel: Bot-Rate-Limiting aktivieren
|
||||||
|
|
||||||
```
|
```
|
||||||
|
👤 Ownership: dbartholomae:psacln (uid=10005, gid=10006)
|
||||||
|
|
||||||
🔧 Aktiviere 🤖 Bot-Only für: shop.example.com
|
🔧 Aktiviere 🤖 Bot-Only für: shop.example.com
|
||||||
Modus: Bot-Rate-Limiting nach Bot-Typ (weltweit erreichbar)
|
Modus: Bot-Rate-Limiting nach Bot-Typ (weltweit erreichbar)
|
||||||
Rate-Limit: 30 req/min pro Bot-Typ, Ban: 5 min
|
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)
|
- `bans/` - Aktive Bans (`.ban` Dateien mit Timestamp|Bot-Name)
|
||||||
- `counts/` - Request-Counter (`.count` Dateien)
|
- `counts/` - Request-Counter (`.count` Dateien)
|
||||||
|
|
||||||
|
**Wichtig**: Alle diese Dateien gehören dem Shop-User (z.B. `dbartholomae:psacln`), nicht `root:root`.
|
||||||
|
|
||||||
### System-weit
|
### System-weit
|
||||||
|
|
||||||
- `/var/lib/geoip/active_shops.json` - Tracking aktiver Shops
|
- `/var/lib/geoip/active_shops.json` - Tracking aktiver Shops
|
||||||
@@ -434,10 +469,29 @@ mv index.php.geoip_backup index.php
|
|||||||
# Prüfe Verzeichnis-Berechtigungen
|
# Prüfe Verzeichnis-Berechtigungen
|
||||||
ls -la /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/
|
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/
|
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
|
### Alibaba-Bot wird nicht erkannt
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -502,6 +556,13 @@ grep -oP '(BOT|BANNED): \K[^|]+' /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log
|
|||||||
|
|
||||||
## 📚 Changelog
|
## 📚 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
|
### v4.1.0
|
||||||
- **NEU**: IP-basierte Bot-Erkennung für getarnte Bots
|
- **NEU**: IP-basierte Bot-Erkennung für getarnte Bots
|
||||||
- **NEU**: `BOT_IP_RANGES` mit Alibaba Cloud IP-Ranges (~20 Mio IPs)
|
- **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
|
**Letztes Update**: Dezember 2025
|
||||||
**Status**: Production Ready ✅
|
**Status**: Production Ready ✅
|
||||||
**Bot-Patterns**: 321 spezifisch + 32 generisch
|
**Bot-Patterns**: 321 spezifisch + 32 generisch
|
||||||
**Bot-IP-Ranges**: 37 Ranges für Alibaba (~20 Mio IPs)
|
**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