CrowdSec ist ein kollaboratives Sicherheitsprojekt zum Schutz von Servern, Diensten und Containern im Internet. Hier im Blog wird es auch verwendet bzw. ist in zwischenzeit ein fester Bestandteil kommender Anleitungen. Da immer wieder fragen aufkommen möchte ich hier eine kleine Snippet & Befehlssammlung anlegen und diese mit euch zusammen immer weiter pflegen.
1. Vorwort
Diese Sammlung ist natürlich für den Einsatz von CrowdSec im Docker + Traefik Enviroment gedacht. Vollstädigkeisthalber werde ich versuchen den Grundbefehl immer mit einzupflegen.
2. CSCLI
cscli
ist das Hauptkommando zur Interaktion mit dem Crowdsec-Service, den Szenarien und der Datenbank. Es ermöglicht uns die Verwaltung von Bans, Parser/Szenarien/etc, Api und allgemein unser Crowdsec Setup zu verwalten.
2.1. Befehl
docker exec crowdsec cscli
cscli
2.2. Optionen
Zur Vollständigkeit hier zum cscli-Befehl die Optionen:
-c, --config string Pfad zur Crowdsec-Konfigurationsdatei (Standard "/etc/crowdsec/config.yaml") -o, --output string Ausgabeformat: human, json, raw. --debug Logging auf debug einstellen. --info Logging auf info einstellen. --warning Logging auf warning einstellen. --error Logging auf error einstellen. --trace Logging auf trace einstellen. -h, --help Hilfe zum Kommando cscli
2.3. Übersicht
Die gesamte Dokumentation zu cscli findet ihr in der Dokummentation.
3. Sammlung für den Schnellzugriff
Liste der installierten Konfigurationen
docker exec crowdsec cscli hub list
docker exec crowdsec cscli hub list -a
cscli hub list [-a]
Installierte Konfigurationen updaten bzw. upgraden
Ähnlich wie bei Linux gibt es bei CrowdSec eine .index.json die man über einen Befehl aktualisieren kann.
docker exec crowdsec cscli hub update
cscli hub update
Wenn die besagte .index.json aktualisiert ist können wir die Konfigurationen auf den neusten Stand bringen bzw. upgraden:
docker exec crowdsec cscli hub upgrade
--force Upgrade erzwingen: Überschreiben veralteten Dateien -h, --help Hilfe für upgrade
cscli hub upgrade
In der aktuellen Version der Anleitung “Traefik v2 – Reverse-Proxy mit CrowdSec einrichten” wird dies über einen Cronjob regelmässig ausgeführt, da es wie bei Linux auch sinnvoll ist nicht nur das System CrowdSec aktuell zu halten sondern auch die Pakete dazu.
Gebannte IP-Adressen anzeigen
Bei der Fehlersuche und auch generell ist kann es nützlich sein sich mal die gebannten IP-Adressen ausgeben zu lassen:
docker exec crowdsec cscli decisions list
docker exec crowdsec cscli decisions list -i 1.2.3.4
-a, --all Entscheidungen der zentralen API einbeziehen --since string Liste beschränken auf Meldungen, die jünger sind als (z.B. 4h, 30d) --until string Liste beschränken auf Meldungen, die älter sind als (z.B. 4h, 30d) -t, --type string Liste beschränken auf die Art der Entscheidung (z.B. ban,captcha) --scope string Liste beschränken auf diesem Bereich (z.B. ip,range,session) -v, --value string Liste beschränken auf bestimmte Werte (z.B. 1.2.3.4,userName) -s, --scenario string Liste beschränken auf dieses Szenario (z.B. crowdsecurity/ssh-bf) -i, --ip string Liste beschränken auf Warnungen von dieser Quelle-IP (Kurzform für --scope ip --value <IP>) -r, --range string Liste beschränken auf Warnungen von dieser Quellenbereich (Kurzform für --scope range --value <RANGE>) -l, --limit int Anzahl der abzurufenden Warnungen (0 für keine Begrenzung) (Standardwert 100) --no-simu Entscheidungen im Simulationsmodus ausschließen --contained Abfrageentscheidungen, die in einem Bereich enthalten sind -h, --help Hilfe für Befehl: list
cscli decisions list
Entscheidungen hinzufügen (z.B. IP bannen)
Es lassen sich Entscheidungen definieren. Es gibt verschiedene Gründe zum Beispiel eine IP auszusperren. Der einfachste Grund ist wahrscheinlich das Testen einer CrowdSec geschützen Anwendung:
docker exec crowdsec cscli decisions add [Optionen]
# Bestimmte IP aussperren docker exec crowdsec cscli decisions add --ip 1.2.3.4 # Bestimmter IP-Bereich aussperren docker exec crowdsec cscli decisions add --range 1.2.3.0/24 # Bestimmte IP für 24 Stunden mit Captcha-Abfrage belegen docker exec crowdsec cscli decisions add --ip 1.2.3.4 --duration 24h --type captcha
-i, --ip string Quell-IP (Kurzform für --scope ip --value <IP>) -r, --range string Bereich Quell-IP (Kurzform für --scope range --value <RANGE>) -d, --duration string Dauer der Entscheidung (z.B. 1h,4h,30m) (Standard "4h") -v, --value string Der Wert (z.B. --scope username --value foobar) --scope string Geltungsbereich der Entscheidung (z.B. ip,range,username) (Standard "Ip") -R, --reason string Grund der Entscheidung (z.B. scenario-name) -t, --type string Art der Entscheidung (z.B. ban,captcha,throttle) (Standard "ban") -h, --help Hilfe für Kommando add
cscli decisions add [Optionen]
4. Schlusswort
Die Liste wird mit der Zeit immer weiter gepflegt. Lasst gerne einen Kommentar da, wenn euch ein bestimmtes Snippet fehlt.
Finde ich gelegentlich auch sehr praktisch
Moin, ein kleiner Fehler:
docker exec crowdsec cscli hub list update/upgrade bitte ohne “list” 🙂
Hi, erstmal danke für deine echt guten Anleitungen.
Ich habe nun folgendes Problem
Ich habe Traefik und Crowdsec nach deinen Anleitungen installiert.
und habe Crowdsec um einen Telegram Push ergänzt auch dieser funktioniert super.
Nun habe ich eine IP die mir öfter aufgefallen ist per CLI für 192 Stunden gesperrt, in der Annahme das diese dann auch keine Meldungen mehr erzeugt. Was leider nicht der Fall ist.
root@:~# docker exec crowdsec cscli decisions list -i 61.177.173.18
+——–+———-+——————+———————-+——–+———+—————+——–+——————–+———-+
| ID | Source | Scope:Value | Reason | Action | Country | AS | Events | expiration | Alert ID |
+——–+———-+——————+———————-+——–+———+—————+——–+——————–+———-+
| 135438 | crowdsec | Ip:61.177.173.18 | crowdsecurity/ssh-bf | ban | CN | 4134 Chinanet | 15 | 3h59m48.612579994s | 864 |
+——–+———-+——————+———————-+——–+———+—————+——–+——————–+———-+
Was mache ich Falsch oder verstehe ich falsch.
docker exec crowdsec cscli decisions add –ip 61.177.173.18 -d “192h” -R “bruteforce”
Dies habe ich abgeschickt auf der Console und trotzdem wird mir die IP ständig alarmiert.
Sehr coole Idee, danke! 🙂
Vielen Dank psycho0verload für deine Mühe hier alle Befehle kurz und knapp zusammenzuschreiben 😀