CrowdSec einrichten: Open-Source-Schutz gegen Cyber-Angriffe für Linux-Server
Crowdsec einrichten – der moderne, kollaborative Schutz gegen Cyber-Angriffe für deinen Heimserver. CrowdSec ist eine Open-Source-Intrusion-Detection-Lösung, die durch Crowdsourcing bösartige IP-Adressen teilt und blockiert. In diesem Guide lernst du, wie du CrowdSec auf deinem Linux-Server installierst und konfigurierst.
Was ist CrowdSec und warum ist es besser als Fail2ban?
CrowdSec wurde als moderner Nachfolger von Fail2ban entwickelt und bietet entscheidende Vorteile:
- Crowdsourced Threat Intelligence: Millionen von Installationen weltweit teilen Angriffsdaten – du profitierst automatisch von der gesamten Community
- Dezentral: Kein zentraler Server mit deinen Logs – nur aggregierte Angriffs-IPs werden geteilt
- Modular: Trenne Erkennung (Agents) von Blockierung (Bouncers)
- Multi-Service: Schützt SSH, Nginx, Apache, WordPress, Nextcloud und viele mehr
- Dashboard: Grafisches Dashboard über app.crowdsec.net
Wie funktioniert CrowdSec?
CrowdSec besteht aus zwei Hauptkomponenten:
- CrowdSec Agent: Liest Logs, erkennt Angriffsmuster und meldet bösartige IPs
- Bouncer: Setzt die Blockierungen tatsächlich um (Firewall, Nginx, etc.)
Der Agent erkennt Angriffe anhand von Szenarien (ähnlich wie Fail2ban-Rules), zum Beispiel zu viele fehlgeschlagene SSH-Logins oder WordPress-Brute-Force-Versuche. Der Bouncer blockiert die Angreifer-IP dann auf Firewall-Ebene.
CrowdSec installieren
Debian / Ubuntu
# Repository hinzufügen
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
# CrowdSec installieren
sudo apt install crowdsec
Status prüfen
sudo systemctl status crowdsec
sudo cscli metrics
Firewall-Bouncer installieren
Der Agent allein blockiert noch nichts – dafür ist ein Bouncer zuständig. Für die meisten Linux-Server ist der iptables/nftables-Bouncer empfohlen:
sudo apt install crowdsec-firewall-bouncer-iptables
Der Bouncer registriert sich automatisch beim lokalen CrowdSec-Agent und blockiert erkannte Angreifer per iptables.
Szenarien und Collections verwalten
CrowdSec nutzt „Collections“ – Pakete von Szenarien und Parsern für verschiedene Dienste:
# Verfügbare Collections anzeigen
sudo cscli collections list
# Nginx-Collection installieren
sudo cscli collections install crowdsecurity/nginx
# WordPress-Schutz
sudo cscli collections install crowdsecurity/wordpress
# SSH-Schutz (meist bereits installiert)
sudo cscli collections install crowdsecurity/sshd
# Dienst neu starten
sudo systemctl reload crowdsec
Logs konfigurieren
CrowdSec muss wissen, wo die Logs deiner Dienste liegen. Prüfe die Konfiguration unter /etc/crowdsec/acquis.yaml:
filenames:
- /var/log/auth.log
- /var/log/syslog
labels:
type: syslog
---
filenames:
- /var/log/nginx/access.log
labels:
type: nginx
Entscheidungen anzeigen und verwalten
# Aktuelle Blockierungen anzeigen
sudo cscli decisions list
# Einzelne IP manuell blockieren
sudo cscli decisions add --ip 1.2.3.4 --reason "manuell blockiert" --duration 24h
# IP aus Blockierung entfernen
sudo cscli decisions delete --ip 1.2.3.4
# Statistiken
sudo cscli metrics
CrowdSec Dashboard einrichten
Über app.crowdsec.net kannst du deine CrowdSec-Installation mit einem kostenlosen Account verbinden und ein grafisches Dashboard erhalten:
sudo cscli console enroll DEIN-ENROLLMENT-CODE
Den Enrollment-Code erhältst du nach der Registrierung auf der CrowdSec-Website.
CrowdSec mit Docker-Services
Für Docker-Container gibt es einen speziellen Bouncer, der direkt in das Docker-Netzwerk eingreift. Außerdem kann der CrowdSec-Agent selbst als Docker-Container laufen:
docker run -d \
--name crowdsec \
-e GID=1000 \
-v /var/log:/var/log:ro \
-v crowdsec-db:/var/lib/crowdsec/data/ \
-v crowdsec-config:/etc/crowdsec/ \
crowdsecurity/crowdsec
Whitelisting: Eigene IPs freigeben
Wichtig: Stelle sicher, dass deine eigenen IP-Adressen nicht geblockt werden! Füge deine Heimnetz-IPs zur Whitelist hinzu:
# /etc/crowdsec/parsers/s02-enrich/mywhitelists.yaml
name: crowdsecurity/mywhitelists
description: "Eigene Whitelist"
whitelist:
reason: "private Adressen"
ip:
- "192.168.1.0/24"
- "10.0.0.0/8"
CrowdSec einrichten: Best Practices und erweiterte Konfiguration
CrowdSec für Docker-Logs konfigurieren
Wenn deine Dienste als Docker-Container laufen, musst du CrowdSec Zugriff auf die Container-Logs geben:
# /etc/crowdsec/acquis.yaml ergänzen
source: docker
container_name:
- nginx
- vaultwarden
labels:
type: nginx
Notifications einrichten: Telegram-Benachrichtigungen
CrowdSec kann bei neuen Blockierungen Benachrichtigungen senden:
sudo cscli notifications install telegram
sudo cscli notifications test telegram
Konfiguriere deinen Telegram-Bot-Token und Chat-ID in /etc/crowdsec/notifications/telegram.yaml.
CrowdSec mit Traefik (Reverse Proxy)
Der Traefik-Bouncer schützt alle Dienste hinter deinem Reverse Proxy in einem Schritt. Füge den bouncer als Middleware in Traefik ein:
docker run -d --name traefik-crowdsec-bouncer -e CROWDSEC_BOUNCER_API_KEY=dein-api-key -e CROWDSEC_AGENT_HOST=crowdsec:8080 -p 8080:8080 fbonalair/traefik-crowdsec-bouncer
Performance-Tuning
CrowdSec kann bei sehr hohem Log-Aufkommen Ressourcen verbrauchen. Optimiere durch:
- Log-Rotierung aktivieren, um riesige Log-Dateien zu verhindern
- Nicht benötigte Szenarien deaktivieren:
sudo cscli scenarios list - Prometheus-Metriken für CrowdSec mit Grafana visualisieren
CrowdSec Monitoring mit Grafana und Prometheus
CrowdSec bietet einen eingebauten Prometheus-Exporter. Aktiviere ihn in /etc/crowdsec/config.yaml:
prometheus:
enabled: true
level: full
listen_addr: 127.0.0.1
listen_port: 6060
Füge den CrowdSec-Target in deine prometheus.yml ein:
- job_name: 'crowdsec'
static_configs:
- targets: ['localhost:6060']
Im CrowdSec-GitHub-Repository findest du ein offizielles Grafana-Dashboard (ID: 14584), das dir folgende Metriken anzeigt:
- Anzahl erkannter Angriffe nach Szenario und Zeit
- Aktive Blockierungen und ihre Herkunftsländer
- Performance des Parsers (verarbeitete Logs pro Sekunde)
- Anteil der Community-Blockliste (Angriffe aus bekannten bösen IPs)
Damit hast du ein vollständiges Bild deiner Sicherheitslage direkt in Grafana – ohne externe Dienste oder Cloud-Abhängigkeit.
CrowdSec einrichten: Troubleshooting und häufige Probleme
CrowdSec startet nicht oder Logs werden nicht gelesen
Wenn CrowdSec keine Angriffe erkennt, prüfe zuerst die Logs und den Metriken-Output:
# Logs in Echtzeit anzeigen
sudo journalctl -fu crowdsec
# Aktuelle Metriken prüfen
sudo cscli metrics
# Acquis-Konfiguration testen
sudo crowdsec -t -c /etc/crowdsec/config.yaml
Häufige Ursachen:
- Falsche Log-Pfade: Prüfe, ob die in
acquis.yamlangegebenen Log-Dateien existieren und von CrowdSec lesbar sind (ls -la /var/log/nginx/access.log) - Parser-Fehler: Wenn Logs nicht im erwarteten Format vorliegen, erkennt CrowdSec keine Muster. Prüfe mit
sudo cscli parsers list, ob der passende Parser installiert ist. - SELinux/AppArmor: Auf Systemen mit aktivierten MAC-Systemen kann der Zugriff auf Logs blockiert sein. Prüfe
dmesg | grep denied.
Bouncer blockt eigene IP
Wenn du dich aus dem Server ausgesperrt hast:
# Per lokaler Konsole oder Out-of-Band-Zugang:
sudo cscli decisions delete --ip DEINE_IP
# Präventiv: Eigene IPs dauerhaft whitelisten
sudo cscli decisions add --ip 192.168.1.0/24 --reason "homelan" --duration 8760h
False Positives: Legitime Dienste werden geblockt
Wenn CrowdSec legitime Dienste oder Crawlern irrtümlich blockiert:
# Geblockte IPs mit Grund anzeigen
sudo cscli decisions list -o json | python3 -m json.tool
# Szenario temporär deaktivieren
sudo cscli scenarios remove crowdsecurity/http-crawl-non_statics
CrowdSec im Vergleich: Fail2ban vs. CrowdSec vs. Crowdsec + Firewall
Um die richtige Lösung für dein Homelab zu wählen, hilft ein direkter Vergleich:
| Feature | Fail2ban | CrowdSec |
|---|---|---|
| Community-Blocklisten | Nein | Ja – automatisch aktualisiert |
| Echtzeit-Threat-Intelligence | Nein | Ja |
| Modular (Agent + Bouncer) | Nein | Ja |
| Dashboard | Nur Logs | app.crowdsec.net |
| Docker-Support | Eingeschränkt | Nativ |
| Performance | Leicht | Etwas mehr RAM |
| Schwierigkeit Setup | Einfach | Mittel |
Empfehlung: Für neue Homelab-Setups ist CrowdSec die klar bessere Wahl. Für bestehende Fail2ban-Installationen lohnt eine Migration – die Konfiguration kann größtenteils übernommen werden. Beide können parallel betrieben werden, während du CrowdSec testest.
CrowdSec und Fail2ban kombinieren
Während der Migrations-Phase können beide Tools gleichzeitig laufen. CrowdSec übernimmt neue Dienste schrittweise, Fail2ban schützt ältere Dienste weiterhin. Entferne Fail2ban-Regeln nach und nach, sobald CrowdSec-Collections dieselben Dienste abdecken.
CrowdSec API und Automatisierung
CrowdSec bietet eine lokale REST-API, über die du Entscheidungen programmgesteuert abrufen und hinzufügen kannst. Das ermöglicht die Integration in eigene Skripte und Automatisierungsworkflows:
# API-Key für lokale API erstellen
sudo cscli bouncers add mein-skript
# Aktuelle Entscheidungen über REST API abrufen
curl -s -H "X-Api-Key: DEIN_API_KEY" http://localhost:8080/v1/decisions | python3 -m json.tool
Praktische Anwendungsfälle für die API:
- SIEM-Integration: Automatisch Blockierungen in dein Security Information and Event Management exportieren
- Homeautomation: Bei kritischen Angriffen automatisch Benachrichtigungen an Home Assistant senden
- Multi-Server-Setup: Entscheidungen von einem zentralen CrowdSec-Server auf mehrere Maschinen verteilen – nutze dafür die LAPI (Local API) mit mehreren Agents
Für ein Multi-Server-Homelab kannst du einen dedizierten CrowdSec-Server aufsetzen, der alle Agents koordiniert. Alle Server schicken ihre Erkennungen an den zentralen LAPI-Server, der wiederum Blockierungen an alle Bouncers verteilt. So schützen sich alle deine Server gegenseitig.
Fazit: Aktiver Schutz durch Community-Power
CrowdSec ist die moderne Antwort auf Fail2ban und bietet durch seine Crowdsourcing-Funktion einen einzigartigen Vorteil: Dein Server ist von Angriffen geschützt, die andere bereits erkannt haben – noch bevor der Angreifer dich überhaupt erreicht. Die Installation dauert 15 Minuten und der laufende Betrieb ist praktisch wartungsfrei.
