CrowdSec Community Firewall Installation
CrowdSec Community Firewall Installation und Konfiguration
Was ist CrowdSec?
CrowdSec ist ein modernes, kollaboratives Intrusion Prevention System (IPS), das auf Crowd-sourced Threat Intelligence basiert. Im Gegensatz zu traditionellen Firewall-Tools wie Fail2Ban lernt CrowdSec von der globalen Community und teilt Bedrohungsdaten. Wenn ein Server irgendwo angegriffen wird, können alle anderen CrowdSec-Nutzer von diesem Wissen profitieren.
Unterschied zu Fail2Ban
- CrowdSec: Zentrale Aggregation, globale Threat Intelligence, mehrere Server synchronisieren
- Fail2Ban: Nur auf diesem Server, keine Synchronisierung mit anderen
- CrowdSec bietet umfangreichere Szenarien und Parsers
- CrowdSec hat ein modernes, wartbares Codebase
- CrowdSec unterstützt nftables (moderner als iptables)
Voraussetzungen
- Ubuntu 20.04 oder neuer (auch Debian, CentOS)
- Root- oder sudo-Zugriff
- Firewall-Tool (iptables oder nftables)
- curl, wget oder ähnliche Tools
- Mindestens 256MB RAM verfügbar
Installation auf Ubuntu
Schritt 1: Official Repository hinzufügen
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
Schritt 2: CrowdSec installieren
sudo apt-get update sudo apt-get install crowdsec crowdsec-firewall-bouncer-iptables
Oder für nftables (moderner):
sudo apt-get install crowdsec crowdsec-firewall-bouncer-nftables
Schritt 3: CrowdSec starten
sudo systemctl enable crowdsec sudo systemctl start crowdsec # Status überprüfen sudo systemctl status crowdsec
CrowdSec Konfiguration
Grundkonfiguration anschauen
cat /etc/crowdsec/config.yaml
Wichtige Konfigurationsbereiche:
common:
log_level: info
crowdsec:
log_level: info
cscli:
output: human
db_config:
type: sqlite
db_path: /var/lib/crowdsec/data/crowdsec.db
api:
client:
log_level: info
credentials_path: /etc/crowdsec/online-api-credentials.json
server:
log_level: info
listen_uri: 127.0.0.1:8080
plugins:
backend: iptables
Log Level anpassen (bei Problemen)
sudo cscli config set crowdsec log_level debug sudo systemctl restart crowdsec
Collections und Scenarios installieren
Hub aktualisieren
sudo cscli hub update
Wichtige Collections installieren
# Für Nginx sudo cscli collections install crowdsecurity/nginx # Für SSH sudo cscli collections install crowdsecurity/sshd # Für Apache sudo cscli collections install crowdsecurity/apache2 # Für fail2ban (wenn Sie noch fail2ban verwenden) sudo cscli collections install crowdsecurity/failtoban # WordPress Security sudo cscli collections install crowdsecurity/wordpress
Installierte Collections anschauen
sudo cscli collections list
Mit CrowdSec Community enrollen
Schritt 1: Enrollment-Link generieren
sudo cscli console enroll
Dies generiert einen Link, unter dem Sie sich registrieren können.
Schritt 2: Enrollment durchführen
Folgen Sie dem Link und registrieren Sie sich auf der CrowdSec-Webseite. Sie erhalten einen enrollment-Code.
Schritt 3: Enrollment-Code eingeben
sudo cscli console enroll YOUR_ENROLLMENT_CODE
Danach wird Ihr Server mit der CrowdSec-Community verbunden und teilt/empfängt Daten.
Firewall-Bouncer konfigurieren
Bouncer installieren (falls nicht schon geschehen)
sudo apt-get install crowdsec-firewall-bouncer-iptables
Bouncer starten und aktivieren
sudo systemctl enable crowdsec-firewall-bouncer sudo systemctl start crowdsec-firewall-bouncer sudo systemctl status crowdsec-firewall-bouncer
Bouncer-Konfiguration
sudo cat /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml
Wichtige Optionen:
mode: iptables chain: INPUT set_counters: true update_frequency: 10s deny_action: DROP log_prefix: "CrowdSecBouncer:"
Bouncer mit CrowdSec verbinden
Der Bouncer benötigt API-Credentials um CrowdSec zu kommunizieren:
sudo cscli bouncers add crowdsec-firewall-bouncer --auto
Alerts und Decisions anschauen
Aktive Decisions (blockierte IPs)
sudo cscli decisions list
Output Beispiel:
+-----------+----------+----------+---------+----+--------+ | ID | DURATION | DECISION | VALUE | BY | REASON | +-----------+----------+----------+---------+----+--------+ | 1234 | 4h | ban | 1.2.3.4 | | ssh | | 5678 | 24h | ban | 5.6.7.8 | | nginx | +-----------+----------+----------+---------+----+--------+
Alle Alerts anschauen
sudo cscli alerts list
Alerts nach Szenarien filtern
sudo cscli alerts list --scenario crowdsecurity/ssh-slow-bruteforce
Whitelist (Ausnahmen)
IP zur Whitelist hinzufügen
Erstellen Sie eine Whitelist-Datei:
sudo cat > /etc/crowdsec/parsers/s99-whitelist.yaml << 'EOF'
name: crowdsecurity/whitelist
description: "Whitelist specific IPs"
whitelist:
ip:
- 192.168.1.0/24
- 10.0.0.5
- your-office-ip
EOF
CrowdSec neustarten um Whitelist zu laden
sudo systemctl restart crowdsec
Metriken und Statistiken
Metriken anschauen
sudo cscli metrics
Dies zeigt:
- Anzahl der blockierten IPs
- Alerts pro Szenario
- Entscheidungen pro Typ
- Bouncer-Status
Vollständige Statistik
sudo cscli lapi-status
Szenarien verstehen
Verfügbare Szenarien anschauen
sudo cscli scenarios list
Szenarien-Details anschauen
sudo cscli scenarios inspect crowdsecurity/ssh-brute-force
Szenarien deaktivieren
Falls ein Szenario zu viele False-Positives verursacht:
sudo cscli scenarios disable crowdsecurity/ssh-slow-bruteforce sudo systemctl restart crowdsec
Logs analysieren
CrowdSec Logs anschauen
sudo journalctl -u crowdsec -f
Firewall-Bouncer Logs
sudo journalctl -u crowdsec-firewall-bouncer -f
Debug-Modus aktivieren
sudo cscli config set crowdsec log_level debug sudo systemctl restart crowdsec sudo journalctl -u crowdsec -f
Entscheidungen manuell verwalten
Eine IP manuell blockieren
sudo cscli decisions add -i 1.2.3.4 -d 48h -r "manual-block"
Eine blockierte IP entsperren
sudo cscli decisions delete -i 1.2.3.4
Alle Decisions löschen (Vorsicht!)
sudo cscli decisions delete --all
CrowdSec Updates
Updates prüfen und installieren
sudo apt-get update sudo apt-get upgrade sudo systemctl restart crowdsec
CrowdSec vs. Fail2Ban – Vergleich
| Merkmal | CrowdSec | Fail2Ban |
|---|---|---|
| Threat Intelligence | Global, Crowd-sourced | Lokal nur |
| Szenarien | Umfangreich, wartbar | Regex-basiert, kompliziert |
| Mehrere Server | Zentrale Verwaltung möglich | Unabhängig voneinander |
| UI | Moderne Web-Konsole | Keine Web-UI |
| Performance | Modern, effizient | Bewährt, leicht |
Häufige Probleme und Lösungen
Bouncer funktioniert nicht
# Bouncer neustarten sudo systemctl restart crowdsec-firewall-bouncer # Logs überprüfen sudo journalctl -u crowdsec-firewall-bouncer -n 50 # Bouncer mit CrowdSec neu verbinden sudo cscli bouncers delete crowdsec-firewall-bouncer sudo cscli bouncers add crowdsec-firewall-bouncer --auto sudo systemctl restart crowdsec-firewall-bouncer
Zu viele False Positives
Deaktivieren Sie aggressive Szenarien:
sudo cscli scenarios disable crowdsecurity/ssh-slow-bruteforce sudo systemctl restart crowdsec
CrowdSec startet nicht
sudo crowdsec -c /etc/crowdsec/config.yaml -dsn sqlite:///var/lib/crowdsec/data/crowdsec.db
Best Practices
- Enrollen Sie sich in der Community um Threat Intelligence zu erhalten
- Installieren Sie relevant Collections für Ihre Services (nginx, ssh, etc.)
- Überwachen Sie die Logs regelmäßig auf False Positives
- Whitelist Ihre eigenen IPs um nicht selbst blockiert zu werden
- Kombinieren Sie CrowdSec mit Ihrer Firewall (UFW, etc.)
- Führen Sie regelmäßige Updates durch
- Überprüfen Sie Metrics um Trends zu erkennen