README.md aktualisiert
This commit is contained in:
149
README.md
149
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.
|
||||
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/)
|
||||
Reference in New Issue
Block a user