diff --git a/README.md b/README.md index 1df4792..38a46cc 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ **Hybrid-System für temporäres GeoIP-Blocking auf Plesk-Servern mit mehreren Shops** -Dieses Tool ermöglicht es, einzelne Shops auf einem Plesk-Server temporär für alle Zugriffe außerhalb der DACH-Region (Deutschland, Österreich, Schweiz) zu sperren. Es kombiniert PHP-Level-Blocking mit CrowdSec Firewall-Integration für maximalen Schutz. +Dieses Tool ermöglicht es, einzelne oder alle Shops auf einem Plesk-Server temporär für alle Zugriffe außerhalb der DACH-Region (Deutschland, Österreich, Schweiz) zu sperren. Es kombiniert PHP-Level-Blocking mit CrowdSec Firewall-Integration für maximalen Schutz. ## 🎯 Features @@ -11,6 +11,8 @@ Dieses Tool ermöglicht es, einzelne Shops auf einem Plesk-Server temporär für - ✅ **Doppelter Schutz**: PHP-Level + Firewall-Level (CrowdSec) - ✅ **Automatische Synchronisation**: Blockierte IPs werden automatisch an CrowdSec weitergegeben - ✅ **Multi-Shop-Management**: Verwaltung mehrerer Shops auf einem Server +- ✅ **Bulk-Operationen**: Alle Shops gleichzeitig aktivieren/deaktivieren +- ✅ **Gesamtübersicht**: Logs und Statistiken über alle Shops hinweg - ✅ **Auto-Deaktivierung**: Blocking läuft nach 72 Stunden automatisch ab - ✅ **Systemd-Service**: Automatischer Start beim Booten - ✅ **Sauberes Cleanup**: Vollständige Deinstallation bei Deaktivierung @@ -90,10 +92,24 @@ Das war's! Das Script ist vollständig selbstverwaltend. ## 📖 Verwendung -### Blocking aktivieren +### Hauptmenü + +``` +[1] GeoIP-Blocking AKTIVIEREN (einzeln) +[2] GeoIP-Blocking DEAKTIVIEREN (einzeln) +[3] Logs anzeigen +[4] Status anzeigen +──────────────────────────────────────── +[5] 🚀 ALLE Shops aktivieren +[6] 🛑 ALLE Shops deaktivieren +──────────────────────────────────────── +[0] Beenden +``` + +### Blocking aktivieren (einzelner Shop) 1. Script starten: `python3 geoip_shop_manager.py` -2. Option `[1] GeoIP-Blocking AKTIVIEREN` wählen +2. Option `[1] GeoIP-Blocking AKTIVIEREN (einzeln)` wählen 3. Shop aus der Liste auswählen 4. Bestätigen mit `ja` @@ -105,10 +121,56 @@ Das war's! Das Script ist vollständig selbstverwaltend. - Blocking ist sofort aktiv - Erlaubt werden nur IPs aus: 🇩🇪 Deutschland, 🇦🇹 Österreich, 🇨🇭 Schweiz -### Blocking deaktivieren +### Blocking für ALLE Shops aktivieren 1. Script starten: `python3 geoip_shop_manager.py` -2. Option `[2] GeoIP-Blocking DEAKTIVIEREN` wählen +2. Option `[5] 🚀 ALLE Shops aktivieren` wählen +3. Liste der zu aktivierenden Shops wird angezeigt +4. Bestätigen mit `ja` + +**Was passiert:** +- Zeigt alle Shops an, die noch nicht geschützt sind +- Installiert den Watcher-Service (falls noch nicht vorhanden) +- Aktiviert das Blocking für jeden Shop nacheinander +- Zeigt Fortschritt während der Aktivierung +- Am Ende: Zusammenfassung mit Erfolgs-/Fehlerzählung + +**Beispielausgabe:** +``` +══════════════════════════════════════════════════════════════ + DACH GeoIP-Blocking für ALLE Shops aktivieren +══════════════════════════════════════════════════════════════ + +📋 Folgende 5 Shop(s) werden aktiviert: + + • shop1.example.com + • shop2.example.com + • shop3.example.com + ... + +[1/5] Aktiviere: shop1.example.com + ✅ Aktiviert (bis 2025-12-11 14:30) + +[2/5] Aktiviere: shop2.example.com + ✅ Aktiviert (bis 2025-12-11 14:30) +... + +══════════════════════════════════════════════════════════════ + ZUSAMMENFASSUNG +══════════════════════════════════════════════════════════════ + + ✅ Erfolgreich aktiviert: 5 + ❌ Fehlgeschlagen: 0 + + 🇩🇪 🇦🇹 🇨🇭 Nur DACH-Traffic erlaubt + ⏰ Gültig für 72 Stunden +══════════════════════════════════════════════════════════════ +``` + +### Blocking deaktivieren (einzelner Shop) + +1. Script starten: `python3 geoip_shop_manager.py` +2. Option `[2] GeoIP-Blocking DEAKTIVIEREN (einzeln)` wählen 3. Shop aus der Liste auswählen 4. Bestätigen mit `ja` @@ -119,13 +181,70 @@ Das war's! Das Script ist vollständig selbstverwaltend. - Shop wird deregistriert - Bei LETZTEM Shop: Systemd-Service wird deinstalliert +### Blocking für ALLE Shops deaktivieren + +1. Script starten: `python3 geoip_shop_manager.py` +2. Option `[6] 🛑 ALLE Shops deaktivieren` wählen +3. Liste der aktiven Shops wird angezeigt +4. Bestätigen mit `ja` + +**Was passiert:** +- Zeigt alle Shops mit aktivem Blocking +- Deaktiviert das Blocking für jeden Shop nacheinander +- Entfernt alle zugehörigen CrowdSec-Decisions +- Deinstalliert den Watcher-Service am Ende +- Zusammenfassung mit Erfolgs-/Fehlerzählung + ### Logs anzeigen 1. Script starten: `python3 geoip_shop_manager.py` 2. Option `[3] Logs anzeigen` wählen -3. Shop auswählen +3. Auswahl treffen: -**Zeigt:** +``` +📋 Logs anzeigen für: + [0] 📊 ALLE Shops (Zusammenfassung) + [1] shop1.example.com + [2] shop2.example.com + ... +``` + +#### Option [0]: Gesamtübersicht aller Shops + +Zeigt eine aggregierte Statistik über alle aktiven Shops: + +``` +════════════════════════════════════════════════════════════════ + 📊 GESAMTÜBERSICHT ALLER SHOPS +════════════════════════════════════════════════════════════════ + +📝 PHP-Blocks gesamt: 1.247 + ├─ shop1.example.com: 523 █████████████████████ + ├─ shop2.example.com: 412 ████████████████ + └─ shop3.example.com: 312 ████████████ + +🛡️ CrowdSec-Bans gesamt: 892 + ├─ shop1.example.com: 401 ████████████████ + ├─ shop2.example.com: 298 ███████████ + └─ shop3.example.com: 193 ███████ + +🔥 Top 10 blockierte IPs (alle Shops): + 185.220.101.34: 127 █████████████████████████ + 45.95.169.22: 89 █████████████████ + 194.26.192.64: 67 █████████████ + ... + +════════════════════════════════════════════════════════════════ +``` + +**Enthält:** +- PHP-Blocks pro Shop mit visuellen Balken +- CrowdSec-Bans pro Shop +- Top 10 der am häufigsten blockierten IPs über alle Shops hinweg + +#### Option [1-n]: Einzelner Shop + +Zeigt detaillierte Logs für einen spezifischen Shop: - PHP-Level Blocks (letzte 50 Einträge) - CrowdSec Firewall Bans (letzte 20 mit Ablaufzeit) - Gesamtstatistiken @@ -499,7 +618,7 @@ cat /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log | \ ### Während aktivem Blocking -1. ✅ Logs regelmäßig prüfen +1. ✅ Logs regelmäßig prüfen (Gesamtübersicht nutzen!) 2. ✅ Auf Fehlblockierungen achten (sehr selten) 3. ✅ CrowdSec-Statistiken beobachten 4. ✅ Server-Performance monitoren @@ -529,7 +648,7 @@ cat /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log | \ - ✅ Nur temporär nutzen (Notfälle, Angriffe) - ✅ Nicht als permanente Lösung - ✅ Kombinieren mit anderen Security-Maßnahmen -- ✅ Regelmäßig Logs prüfen +- ✅ Regelmäßig Logs prüfen (Gesamtübersicht für schnellen Überblick) ## 🤝 Contributing @@ -556,7 +675,7 @@ MIT License - siehe LICENSE Datei Bei Problemen: 1. Prüfe die Troubleshooting-Sektion -2. Prüfe die Logs +2. Prüfe die Logs (Gesamtübersicht oder einzeln) 3. Erstelle ein GitHub Issue mit: - Fehlerbeschreibung - Relevante Logs @@ -571,7 +690,23 @@ Bei Problemen: --- -**Version**: 2.0.0 (DACH) +**Version**: 2.1.0 (DACH) **Letztes Update**: Dezember 2025 **Status**: Production Ready ✅ -**Erlaubte Länder**: 🇩🇪 Deutschland | 🇦🇹 Österreich | 🇨🇭 Schweiz \ No newline at end of file +**Erlaubte Länder**: 🇩🇪 Deutschland | 🇦🇹 Österreich | 🇨🇭 Schweiz + +### Changelog + +#### v2.1.0 +- **NEU**: Option [5] - Alle Shops gleichzeitig aktivieren +- **NEU**: Option [6] - Alle Shops gleichzeitig deaktivieren +- **NEU**: Gesamtübersicht in Logs (Option [0]) mit aggregierten Statistiken +- **NEU**: Top 10 blockierte IPs über alle Shops hinweg +- **NEU**: Visuelle Balken in der Statistik-Anzeige +- Verbessertes Menü-Layout mit Trennlinien + +#### v2.0.0 +- DACH-Support (DE, AT, CH statt nur DE) +- Systemd-Service für Watcher +- CrowdSec-Integration +- Multi-Shop-Management \ No newline at end of file