Einer der größten Vorteile von CrowdSec ist die automatische Reaktion auf erkannte Angriffe. Wird beispielsweise ein SSH-Brute-Force-Angriff erkannt, erstellt CrowdSec selbstständig eine sogenannte Decision, die den Angreifer für einen definierten Zeitraum sperrt.
Doch nicht jede Situation lässt sich vollständig automatisieren. Administratoren möchten gelegentlich IP-Adressen dauerhaft blockieren, bestimmte Netzwerke von der Überwachung ausnehmen oder versehentlich gesetzte Sperren wieder entfernen.
CrowdSec bietet hierfür umfangreiche Verwaltungsfunktionen.
Was sind Decisions?
Eine Decision ist die Reaktion von CrowdSec auf ein erkanntes Ereignis.
Der Ablauf sieht vereinfacht so aus:
Logdatei ↓ Parser ↓ Szenario ↓ Alert ↓ Decision ↓ Bouncer blockiert Zugriff
Eine Decision enthält unter anderem:
- Ziel-IP-Adresse
- Art der Entscheidung
- Ursache
- Ablaufzeit
- Szenario
- Zeitpunkt der Erstellung
Der Bouncer übernimmt anschließend die eigentliche Sperre.
Aktuelle Decisions anzeigen
Alle aktiven Entscheidungen lassen sich mit folgendem Befehl anzeigen:
sudo cscli decisions list
Beispiel:
ID Value Scope Type Origin Expires 1 192.0.2.15 Ip Ban crowdsec 2h 2 198.51.100.7 Ip Ban crowdsec 4h
Die Ausgabe zeigt:
- eindeutige ID
- betroffene IP
- Typ der Entscheidung
- Ursprung
- verbleibende Laufzeit
Details einer Decision
Für umfangreichere Informationen eignet sich:
sudo cscli decisions inspect <ID>
Beispiel:
sudo cscli decisions inspect 2
Hier werden zusätzliche Informationen wie Szenario, Alert und Metadaten angezeigt.
Eine IP-Adresse manuell sperren
Nicht jede Sperre muss durch CrowdSec ausgelöst werden.
Eine IP kann jederzeit manuell blockiert werden.
sudo cscli decisions add --ip 203.0.113.10
Die Sperre wird unmittelbar an den Bouncer übertragen.
Sperrdauer festlegen
Standardmäßig verwendet CrowdSec die konfigurierte Ablaufzeit.
Diese lässt sich beim Erstellen überschreiben.
sudo cscli decisions add \ --ip 203.0.113.10 \ --duration 24h
Weitere Beispiele:
--duration 30m --duration 6h --duration 7d --duration 30d
Dadurch können Sperren individuell an die jeweilige Situation angepasst werden.
Mehrere IP-Adressen sperren
Auch mehrere Adressen lassen sich nacheinander hinzufügen.
sudo cscli decisions add --ip 203.0.113.10 sudo cscli decisions add --ip 203.0.113.20 sudo cscli decisions add --ip 203.0.113.30
Für größere Listen empfiehlt sich die Automatisierung per Skript.
Ganze Netzwerke sperren
Nicht nur einzelne Hosts können blockiert werden.
Auch komplette Subnetze sind möglich.
sudo cscli decisions add --range 203.0.113.0/24
Dies ist sinnvoll, wenn Angriffe wiederholt aus demselben Netzwerk erfolgen.
Permanente Sperren
Besonders auffällige Angreifer sollen manchmal dauerhaft blockiert bleiben.
Dies lässt sich über eine sehr lange Laufzeit oder – je nach eingesetzter CrowdSec-Version – ohne Ablaufzeit umsetzen.
Beispiel mit langer Laufzeit:
sudo cscli decisions add \ --ip 203.0.113.50 \ --duration 3650d
Vor permanenten Sperren sollte jedoch sorgfältig geprüft werden, ob es sich tatsächlich um einen dauerhaften Angreifer handelt.
Eine Decision löschen
Eine Sperre lässt sich jederzeit entfernen.
Über die IP-Adresse:
sudo cscli decisions delete --ip 203.0.113.10
Oder über die ID:
sudo cscli decisions delete --id 5
Der Bouncer übernimmt die Änderung unmittelbar.
Alle Decisions anzeigen und filtern
Je nach Version stehen verschiedene Filtermöglichkeiten zur Verfügung.
Beispiele:
sudo cscli decisions list
oder
sudo cscli decisions list --ip 203.0.113.10
Dadurch lassen sich bestimmte Einträge schneller finden.
Whitelist und Allowlist – wo liegt der Unterschied?
Die Begriffe Whitelist und Allowlist werden häufig synonym verwendet.
Technisch beschreiben beide eine Liste von IP-Adressen oder Netzwerken, die von bestimmten Maßnahmen ausgenommen werden.
Der Begriff Allowlist setzt sich in neuerer Dokumentation zunehmend durch.
Eine Allowlist sorgt beispielsweise dafür, dass:
- interne Server niemals gesperrt werden
- Administratoren stets Zugriff behalten
- Monitoring-Systeme nicht blockiert werden
- Reverse-Proxys erreichbar bleiben
Typische Kandidaten für eine Allowlist
Nicht jede IP sollte von CrowdSec überwacht oder blockiert werden.
Häufig aufgenommen werden:
- interne Server
- Management-Netzwerke
- VPN-Endpunkte
- eigene Bürostandorte
- Monitoring-Systeme
- Backup-Server
- Reverse-Proxys
- Load Balancer
Dadurch werden versehentliche Sperren vermieden.
Allowlists konfigurieren
Allowlists werden in den entsprechenden Konfigurationsdateien von CrowdSec definiert.
Je nach Version befinden sich diese beispielsweise unter:
/etc/crowdsec/parsers/s02-enrich/
oder
/etc/crowdsec/
Ein einfaches Beispiel:
name: my-whitelist
whitelist:
reason: Internal network
ip:
- "192.168.0.0/16"
- "10.0.0.0/8"
cidr:
- "172.16.0.0/12"
Nach Änderungen sollte CrowdSec neu geladen werden.
sudo systemctl restart crowdsec
Blacklists
Eine Blacklist verfolgt den umgekehrten Ansatz.
Hier werden bekannte Angreifer grundsätzlich blockiert.
Beispiele:
- kompromittierte Server
- bekannte Botnetze
- interne Testsysteme
- dauerhaft auffällige IP-Adressen
Blacklists können sowohl manuell als auch automatisiert gepflegt werden.
Ablaufzeiten verstehen
Nicht jede Sperre sollte dauerhaft bestehen.
Typische Werte:
AngriffEmpfohlene DauerSSH-Brute-Force4 StundenWebscanner12 StundenSQL Injection24 StundenCredential Stuffing24 StundenBotnetzmehrere TageWiederholungstätermehrere Wochen
Die optimale Sperrdauer hängt immer vom jeweiligen Einsatzszenario ab.
Decisions im Dashboard verwalten
Wer das CrowdSec Dashboard installiert hat, kann Decisions komfortabel grafisch verwalten.
Dort lassen sich:
- aktive Sperren anzeigen
- Details aufrufen
- Ablaufzeiten prüfen
- Entscheidungen nachvollziehen
- Entscheidungen entfernen
Gerade bei vielen Servern ist dies deutlich komfortabler als die ausschließliche Arbeit mit der Kommandozeile.
Best Practices
Für den produktiven Betrieb haben sich folgende Empfehlungen bewährt:
- keine dauerhaften Sperren ohne Prüfung vergeben
- interne Netzwerke grundsätzlich auf eine Allowlist setzen
- Reverse-Proxys berücksichtigen
- Ablaufzeiten regelmäßig überprüfen
- Entscheidungen dokumentieren
- manuelle Sperren sparsam einsetzen
- Allowlists nach Infrastrukturänderungen aktualisieren
- Blacklists regelmäßig bereinigen
Decisions bilden das Herzstück der automatischen Reaktion von CrowdSec auf erkannte Angriffe. Gleichzeitig behalten Administratoren jederzeit die volle Kontrolle und können IP-Adressen manuell sperren oder freigeben, Allowlists für vertrauenswürdige Systeme definieren und Blacklists für bekannte Angreifer pflegen. Mit einer durchdachten Kombination aus automatischen Entscheidungen und gezielten manuellen Eingriffen lässt sich die Sicherheit eines Linux-Servers weiter erhöhen, ohne den regulären Betrieb zu beeinträchtigen.