From 1a3fee78b98e74ba9219a52eb0a0c0650a84451a Mon Sep 17 00:00:00 2001 From: thomasciesla Date: Mon, 1 Dec 2025 21:25:39 +0100 Subject: [PATCH] README.md aktualisiert --- README.md | 149 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 126 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index ddb6162..1d9bb39 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,8 @@ Der CrowdSec IP Analyzer ist ein Python-Skript, das eine vollständige Analyse e - **Parallele Verarbeitung**: Nutzt mehrere CPU-Cores für schnelles Durchsuchen großer Log-Mengen - **Zeitstempel-Analyse**: Zeigt wann und warum IPs blockiert wurden - **VHost-Support**: Durchsucht alle VHost-Logs inkl. komprimierter Archive -- **Interaktive Entsperrung**: Bietet Option zum temporären Whitelisten von IPs +- **Moderne AllowLists**: Nutzt CrowdSec AllowLists (v1.6.8+) für temporäres Whitelisting +- **Intelligente Erkennung**: Unterscheidet zwischen aktiven Bans und Whitelist-Einträgen - **Farbige Ausgabe**: Übersichtliche, farbcodierte Darstellung der Ergebnisse ## 🚀 Installation @@ -27,20 +28,20 @@ Der CrowdSec IP Analyzer ist ein Python-Skript, das eine vollständige Analyse e - Linux-System (Ubuntu/Debian getestet) - Python 3.6+ -- CrowdSec installiert und konfiguriert +- CrowdSec v1.6.8+ (für AllowList-Feature) - Root-Rechte für vollständige Funktionalität ### Script installieren ```bash # Script herunterladen -wget https://raw.githubusercontent.com/DEIN_USER/DEIN_REPO/main/check-if-ip-banned.py +wget https://raw.githubusercontent.com/DEIN_USER/DEIN_REPO/main/crowdsec-ip-analyzer.py # Ausführbar machen -chmod +x check-if-ip-banned.py +chmod +x crowdsec-ip-analyzer.py # Optional: In PATH verschieben -sudo mv check-if-ip-banned.py /usr/local/bin/check-if-ip-banned +sudo mv crowdsec-ip-analyzer.py /usr/local/bin/check-if-ip-banned ``` ### Optionale Abhängigkeit @@ -59,7 +60,7 @@ pip install python-dateutil --break-system-packages ```bash # Als root ausführen (empfohlen) -sudo ./check-if-ip-banned.py 78.43.28.75 +sudo ./crowdsec-ip-analyzer.py 78.43.28.75 # Oder wenn in PATH installiert sudo check-if-ip-banned 192.168.1.100 @@ -68,7 +69,7 @@ sudo check-if-ip-banned 192.168.1.100 ### Optionen ```bash -check-if-ip-banned --help +crowdsec-ip-analyzer.py --help ``` **Argumente:** @@ -90,8 +91,8 @@ sudo check-if-ip-banned 78.43.28.75 > analyse.txt 2>&1 ## 🔍 Was wird analysiert? ### 1. CrowdSec Decisions -- Aktive Blockierungen -- Whitelist-Einträge +- Aktive Blockierungen (nur ban-Decisions) +- Whitelist-Einträge (werden separat angezeigt) - Zeitstempel (Erstellung, Ablauf) - Decision-Typ (ban, whitelist) - Dauer der Sperre @@ -159,7 +160,7 @@ Zeitstempel der Decisions: ⚠️ Hinzugefügt um: 2024-11-27 10:30:15 (läuft ab in 3h 58m) >>> VHost Logs durchsuchen (parallel, inkl. .gz Archive) -ℹ️ Durchsuche 45 VHosts parallel... +✓ Durchsuche 45 VHosts parallel... ⚠️ IP in 3 VHost(s) gefunden: example.com: 847 Einträge @@ -173,8 +174,13 @@ ZUSAMMENFASSUNG ================================================================================ BLOCKIERUNGEN GEFUNDEN: -❌ CrowdSec hat aktive Decisions für diese IP +❌ CrowdSec hat aktive ban-Decisions für diese IP ❌ IP ist in Firewall-Regeln vorhanden +❌ IP wird von Bouncers aktiv blockiert + +ZEITLICHE ÜBERSICHT: +⚠️ Erste Sperrung: 2024-11-27 10:30:15 (vor 3h 45m) +⚠️ Grund: crowdsecurity/postfix-relay-denied WARUM WURDE GEBLOCKT: ⚠️ crowdsecurity/postfix-relay-denied (5x) @@ -195,26 +201,69 @@ Das Skript nutzt automatisch `CPU-Cores - 6` für die parallele Log-Durchsuchung Dies beschleunigt die Analyse erheblich, besonders bei vielen VHost-Logs. -### Interaktive Whitelist-Erstellung +### Interaktive AllowList-Erstellung -Am Ende der Analyse bietet das Skript an, die IP temporär zu entsperren: +Am Ende der Analyse bietet das Skript an, die IP temporär zu entsperren **mittels CrowdSec AllowLists** (verfügbar seit v1.6.8): ``` ⚠️ IP ist AKTUELL blockiert! Möchtest du diese IP für 72 Stunden entsperren? Dies wird: 1. Alle aktuellen CrowdSec Decisions löschen - 2. Eine temporäre Whitelist-Decision für 72h erstellen + 2. IP zur AllowList 'temp-whitelist-from-check-if-ip-banned' hinzufügen (72h) 3. Die IP aus der Firewall entfernen (falls vorhanden) +Hinweis: AllowLists funktionieren sofort (kein Neustart nötig) -Whitelist erstellen? [j/n]: +AllowList erstellen? [j/n]: ``` **Was passiert bei "ja":** -1. Alle aktiven Decisions werden gelöscht -2. Eine 72h Whitelist-Decision wird erstellt -3. Die IP wird aus ipset entfernt -4. Der neue Status wird verifiziert + +1. **Decisions löschen**: Alle aktiven ban-Decisions werden entfernt +2. **AllowList erstellen**: Falls noch nicht vorhanden, wird die AllowList `temp-whitelist-from-check-if-ip-banned` erstellt +3. **IP hinzufügen**: Die IP wird mit 72h Expiration zur AllowList hinzugefügt +4. **ipset säubern**: Die IP wird aus ipset-Einträgen entfernt (falls vorhanden) +5. **Verifizierung**: Der neue Status wird überprüft und angezeigt + +**Vorteile von AllowLists:** +- ✅ Änderungen wirken **sofort** (kein CrowdSec-Restart nötig) +- ✅ Funktioniert mit **allen CrowdSec-Komponenten** (AppSec, Bouncers, etc.) +- ✅ Zentrale Verwaltung über `cscli allowlist` Befehle +- ✅ Automatisches **Ablaufen nach 72h** + +**Manuelle Verwaltung der AllowList:** + +```bash +# AllowList anzeigen +cscli allowlist inspect temp-whitelist-from-check-if-ip-banned + +# Weitere IP hinzufügen +cscli allowlist add temp-whitelist-from-check-if-ip-banned 192.168.1.100 --expiration 72h + +# IP aus AllowList entfernen +cscli allowlist delete temp-whitelist-from-check-if-ip-banned 78.43.28.75 + +# Komplette AllowList löschen +cscli allowlist delete temp-whitelist-from-check-if-ip-banned +``` + +### Intelligente Ban-Erkennung + +Das Skript unterscheidet zwischen: + +- **Ban-Decisions**: Aktive Blockierungen (werden als kritisch markiert) +- **Whitelist-Decisions**: Erlaubte IPs (werden nicht als Blockierung gewertet) + +**Beispiel:** +``` +# IP mit Whitelist-Decision wird NICHT als blockiert angezeigt +KEINE AKTIVEN BLOCKIERUNGEN GEFUNDEN + +# IP mit Ban-Decision wird korrekt erkannt +BLOCKIERUNGEN GEFUNDEN: +❌ CrowdSec hat aktive ban-Decisions für diese IP +❌ IP wird von Bouncers aktiv blockiert +``` ### Zeitstempel-Analyse @@ -263,6 +312,18 @@ vhosts_path = '/var/www/vhosts' # Standard vhosts_path = '/home/vhosts' ``` +### AllowList-Name anpassen + +Der Name der temporären AllowList kann geändert werden: + +```python +# In der prompt_unblock Methode: +allowlist_name = "temp-whitelist-from-check-if-ip-banned" # Standard + +# Anpassen auf z.B.: +allowlist_name = "my-custom-allowlist" +``` + ## 🐛 Fehlerbehandlung Das Skript enthält umfangreiche Fehlerbehandlung: @@ -272,16 +333,35 @@ Das Skript enthält umfangreiche Fehlerbehandlung: - **Fehlende Dateien**: Überspringt nicht-existierende Log-Verzeichnisse - **Große Dateien**: Überspringt Dateien >100MB - **Encoding-Fehler**: Behandelt ungültige UTF-8-Zeichen +- **AllowList-Fehler**: Zeigt hilfreiche Fehlermeldungen bei AllowList-Problemen ## 📝 Empfehlungen für permanente Whitelists -Für dauerhafte Whitelists empfiehlt das Skript: +Für dauerhafte Whitelists gibt es zwei Methoden: + +### Methode 1: AllowList ohne Expiration (empfohlen) ```bash -# IP in Custom Whitelist eintragen +# Permanente AllowList erstellen +cscli allowlist create permanent-whitelist -d "Permanent whitelisted IPs" + +# IP ohne Expiration hinzufügen +cscli allowlist add permanent-whitelist 78.43.28.75 \ + --comment "Trusted customer IP" + +# Verifizieren +cscli allowlist inspect permanent-whitelist +``` + +### Methode 2: Parser-basierte Whitelist (traditionell) + +Für Parser-basierte Whitelists: + +```bash +# Custom Whitelist erstellen sudo nano /etc/crowdsec/parsers/s02-enrich/jtl_whitelist.yaml -# CrowdSec neu laden +# CrowdSec neu laden (erforderlich!) sudo systemctl reload crowdsec ``` @@ -296,11 +376,28 @@ whitelist: - "192.168.1.0/24" ``` +**Wichtig:** Parser-basierte Whitelists erfordern einen CrowdSec-Reload, AllowLists wirken sofort! + ## 🔒 Sicherheitshinweise - **Root-Rechte erforderlich**: Für vollständigen Zugriff auf alle Logs und Firewall-Regeln - **Sensible Daten**: Die Ausgabe kann sensitive Informationen enthalten (IPs, URLs, Pfade) - **Vorsicht beim Whitelisten**: Stelle sicher, dass die IP vertrauenswürdig ist +- **72h Limit**: Temporäre AllowLists laufen automatisch ab - für dauerhafte Freigaben andere Methoden nutzen + +## 🆕 Changelog + +### Version 2.0 (2024-12) +- ✨ Unterstützung für CrowdSec AllowLists (v1.6.8+) +- ✨ Intelligente Unterscheidung zwischen Ban- und Whitelist-Decisions +- ✨ Korrekte Bouncer-Warnung nur bei aktiven Bans +- 🐛 Behoben: AllowList expiration verwendet jetzt korrekte Duration (72h statt Timestamp) +- 📝 Verbesserte Ausgabe und Zusammenfassungen + +### Version 1.0 (2024-11) +- 🎉 Erste Version mit paralleler Verarbeitung +- 🎉 VHost-Log-Durchsuchung +- 🎉 Szenario-spezifische Log-Analyse ## 🤝 Beitragen @@ -318,4 +415,10 @@ Dieses Projekt ist Open Source. Details siehe LICENSE-Datei. ## 🙏 Credits -Entwickelt für effiziente CrowdSec-Analysen in Multi-VHost-Umgebungen. \ No newline at end of file +Entwickelt für effiziente CrowdSec-Analysen in Multi-VHost-Umgebungen. + +## 📚 Weitere Ressourcen + +- [CrowdSec Dokumentation](https://docs.crowdsec.net/) +- [CrowdSec AllowLists Guide](https://docs.crowdsec.net/docs/next/whitelist/create) +- [CrowdSec CLI Reference](https://docs.crowdsec.net/docs/next/cscli/) \ No newline at end of file