README.md aktualisiert

This commit is contained in:
2025-12-18 14:38:56 +01:00
parent 7b681aab10
commit 764ea68d92

View File

@@ -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 👤