Das Herzstück der CrowdSec-Angriffserkennung verstehen
CrowdSec erkennt Angriffe nicht durch einfache Regeln oder feste Schwellwerte, sondern durch ein mehrstufiges Analyseverfahren. Logdateien werden zunächst eingelesen, anschließend in ein einheitliches Format gebracht und schließlich mithilfe intelligenter Szenarien ausgewertet. Erst wenn ein bestimmtes Angriffsmuster erkannt wird, reagiert CrowdSec mit einer entsprechenden Schutzmaßnahme.
Dieses Konzept macht CrowdSec deutlich flexibler und leistungsfähiger als klassische Werkzeuge zur Angriffserkennung.
In diesem Teil der Serie werfen wir einen detaillierten Blick auf die drei wichtigsten Bausteine der Analyse: Collections, Parser und Szenarien.
Wie CrowdSec einen Angriff erkennt
Jeder Angriff durchläuft mehrere Verarbeitungsstufen.
Logdatei
│
▼
Collection
│
▼
Parser
│
▼
Normalisierte Ereignisse
│
▼
Szenarien
│
▼
Bucket-System
│
▼
Decision
│
▼
Bouncer
Jede dieser Stufen erfüllt eine klar definierte Aufgabe.
Was sind Collections?
Collections sind vorkonfigurierte Pakete für bestimmte Anwendungen oder Dienste.
Sie dienen als Installationspakete und bündeln alle Komponenten, die für die Angriffserkennung einer Anwendung erforderlich sind.
Eine Collection kann beispielsweise enthalten:
- Parser
- Szenarien
- Postoverflows
- Konfigurationsdateien
- Abhängigkeiten
Dadurch entfällt die manuelle Installation jeder einzelnen Komponente.
Beispiel: SSH-Collection
Installieren Sie die SSH-Collection, werden automatisch alle benötigten Parser und Szenarien eingerichtet.
sudo cscli collections install crowdsecurity/sshd
Nach der Installation erkennt CrowdSec unter anderem:
- SSH-Brute-Force
- Passwort-Spraying
- ungewöhnliche Login-Versuche
- Bot-Angriffe
- bekannte Scanner
Beispiel: Apache-Collection
Für Apache genügt ebenfalls ein einzelner Befehl.
sudo cscli collections install crowdsecurity/apache2
Anschließend kann CrowdSec unter anderem erkennen:
- SQL-Injection
- Directory Traversal
- Webscanner
- WordPress-Angriffe
- Bots
- Bad User Agents
- API-Missbrauch
Installierte Collections anzeigen
sudo cscli collections list
Alle verfügbaren Collections:
sudo cscli hub list
Die Parser-Kette
Parser bilden die erste eigentliche Analyseebene.
Da jede Anwendung ein eigenes Logformat besitzt, müssen die Informationen zunächst vereinheitlicht werden.
Ein SSH-Log unterscheidet sich beispielsweise erheblich von einem Apache-Log.
Parser übernehmen unter anderem folgende Aufgaben:
- Zeitstempel lesen
- IP-Adresse extrahieren
- Benutzername erkennen
- HTTP-Methode auslesen
- Statuscodes übernehmen
- Fehlermeldungen identifizieren
- Zusatzinformationen übernehmen
Erst danach stehen alle Daten im gleichen internen Format zur Verfügung.
Warum mehrere Parser?
CrowdSec verwendet nicht nur einen Parser.
Stattdessen arbeiten mehrere Parser hintereinander.
Beispielsweise:
Raw Log
│
▼
Syslog Parser
│
▼
SSH Parser
│
▼
GeoIP Parser
│
▼
Whitelists
│
▼
Normalisierte Daten
Jeder Parser ergänzt weitere Informationen.
Dadurch entsteht Schritt für Schritt ein vollständiges Ereignis.
Parser testen
Mit folgendem Befehl lässt sich nachvollziehen, welche Parser verwendet werden.
sudo cscli explain
Dieses Werkzeug zeigt:
- welche Parser ausgeführt wurden
- welche Felder erkannt wurden
- welche Informationen ergänzt wurden
- welches Szenario anschließend greift
Gerade bei der Fehlersuche ist dieser Befehl unverzichtbar.
Szenarien
Szenarien bilden das eigentliche Gehirn von CrowdSec.
Sie entscheiden anhand der aufbereiteten Informationen, ob es sich um einen Angriff handelt.
Dabei wird nicht nur ein einzelner Logeintrag betrachtet.
Vielmehr analysieren Szenarien das Verhalten eines Clients über einen bestimmten Zeitraum.
Typische Szenarien
CrowdSec bringt bereits zahlreiche Szenarien mit.
Dazu gehören unter anderem:
- SSH-Brute-Force
- Passwort-Spraying
- Portscanner
- SQL-Injection
- Directory Traversal
- HTTP-Scanner
- WordPress-Login-Angriffe
- Bad User Agents
- API-Missbrauch
- Credential Stuffing
Diese Szenarien werden kontinuierlich weiterentwickelt.
Das Bucket-System
Eine Besonderheit von CrowdSec ist das sogenannte Bucket-System.
Ein Bucket kann man sich wie einen Zähler vorstellen.
Beispielsweise:
Ein Benutzer versucht sich mehrfach per SSH anzumelden.
Versuch 1 ↓ Bucket = 1 Versuch 2 ↓ Bucket = 2 Versuch 3 ↓ Bucket = 3 ... Versuch 10 ↓ Schwellwert erreicht ↓ Decision erzeugen
Erst wenn ein definierter Grenzwert erreicht wird, reagiert CrowdSec.
Dadurch werden Fehlalarme deutlich reduziert.
Zeitfenster
Zusätzlich arbeitet CrowdSec mit Zeitfenstern.
Ein Beispiel:
10 Fehlanmeldungen innerhalb von 60 Sekunden
Oder:
100 HTTP-Anfragen innerhalb von 30 Sekunden
Erst wenn beide Bedingungen erfüllt sind, wird das Szenario ausgelöst.
Erkennung komplexer Angriffsmuster
Durch die Kombination verschiedener Informationen erkennt CrowdSec auch deutlich komplexere Angriffe.
Beispiele:
Brute Force
- gleiche IP
- viele Logins
- kurzer Zeitraum
↓
Sperre
Passwort-Spraying
- gleiche IP
- viele Benutzernamen
- wenige Versuche pro Benutzer
↓
Sperre
Webscanner
- hunderte URLs
- ungewöhnliche Pfade
- bekannte Exploit-Muster
↓
Sperre
Botnetze
Mehrere bekannte IP-Adressen
↓
Community Threat Intelligence
↓
frühe Erkennung
Eigene Szenarien
CrowdSec lässt sich nahezu beliebig erweitern.
Eigene Szenarien werden als YAML-Dateien erstellt.
Sie definieren unter anderem:
- Ereignisse
- Schwellwerte
- Zeitfenster
- Filter
- Auslöser
- Entscheidungen
Ein stark vereinfachtes Beispiel:
type: leaky name: custom/bruteforce filter: evt.Meta.service == 'ssh' capacity: 5 leakspeed: 1m blackhole: 5m labels: remediation: true
Eigene Szenarien ermöglichen die Anpassung an individuelle Anwendungen oder interne Dienste.
Szenarien verwalten
Installierte Szenarien:
sudo cscli scenarios list
Neue Szenarien installieren:
sudo cscli scenarios install crowdsecurity/http-bad-user-agent
Entfernen:
sudo cscli scenarios remove crowdsecurity/http-bad-user-agent
Updates
Da sich Angriffsmethoden ständig ändern, veröffentlicht CrowdSec regelmäßig neue Parser, Szenarien und Collections.
Vor der Aktualisierung sollten zunächst die Hub-Daten erneuert werden.
sudo cscli hub update
Anschließend werden alle installierten Komponenten aktualisiert.
sudo cscli hub upgrade
Den Status prüfen:
sudo cscli hub list
Regelmäßige Updates sorgen dafür, dass CrowdSec auch neue Angriffstechniken zuverlässig erkennt.
Best Practices
Für einen sicheren Betrieb haben sich folgende Vorgehensweisen bewährt:
- Nur benötigte Collections installieren.
- Hub-Komponenten regelmäßig aktualisieren.
- Eigene Szenarien zunächst testen.
cscli explainzur Analyse nutzen.- Parser und Szenarien nach Änderungen überprüfen.
- Entscheidungen regelmäßig kontrollieren.
- Fehlalarme beobachten und gegebenenfalls Whitelists einsetzen.
Collections, Parser und Szenarien bilden das Herzstück der CrowdSec-Angriffserkennung. Collections stellen alle benötigten Komponenten für einen Dienst bereit, Parser vereinheitlichen unterschiedlichste Logformate und Szenarien analysieren das Verhalten von Clients anhand intelligenter Regeln. Das Bucket-System sorgt dabei dafür, dass nicht einzelne Ereignisse, sondern auffällige Muster innerhalb definierter Zeitfenster erkannt werden.
Dank dieser modularen Architektur kann CrowdSec sowohl einfache Brute-Force-Angriffe als auch komplexe Webscanner oder Botnet-Aktivitäten zuverlässig identifizieren. Gleichzeitig bleibt das System flexibel und lässt sich durch eigene Szenarien an individuelle Anforderungen anpassen.
Im nächsten Teil der Serie setzen wir dieses Wissen in die Praxis um und zeigen, wie Sie einen Apache-Webserver mit CrowdSec absichern. Sie installieren die passenden Collections, überwachen die Logdateien und erkennen typische Webangriffe wie Brute-Force-Versuche, Scanner oder SQL-Injection automatisch.