Crowdsec Grundsätzliches: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 7: Zeile 7:
 
CrowdSec analysiert verschiedene Logdateien von Servern und Anwendungen mithilfe von sogenannten "Parsers". Angriffsversuche werden anhand von vordefinierten "Scenarios" erkannt, und basierend darauf kann CrowdSec eine Entscheidung treffen ("Decision"), um beispielsweise eine IP-Adresse temporär oder dauerhaft zu sperren.
 
CrowdSec analysiert verschiedene Logdateien von Servern und Anwendungen mithilfe von sogenannten "Parsers". Angriffsversuche werden anhand von vordefinierten "Scenarios" erkannt, und basierend darauf kann CrowdSec eine Entscheidung treffen ("Decision"), um beispielsweise eine IP-Adresse temporär oder dauerhaft zu sperren.
  
= Grundlagen zu CrowdSec =
+
= Grundlagen von CrowdSec =
CrowdSec besteht aus mehreren Komponenten, die zusammenarbeiten, um Angriffe zu erkennen und abzuwehren.
+
CrowdSec ist ein Open-Source Intrusion Prevention System (IPS), das Log-Dateien analysiert, Angriffe erkennt und automatisch blockiert. Es basiert auf einer Kombination aus **Szenarien**, **Alerts**, **Decisions** und **Bouncern**, um verdächtige Aktivitäten zu erkennen und darauf zu reagieren.
  
== Was ist ein Bouncer? ==
+
== Szenario ==
Ein Bouncer ist eine Komponente, die erkannte bösartige IPs aktiv blockiert. Er setzt die Entscheidungen (Decisions) in der Firewall, im Reverse Proxy oder in anderen Systemen um. Bouncer gibt es für verschiedene Technologien, z. B.: 
+
Ein **Szenario** ist eine definierte Regel, die CrowdSec nutzt, um verdächtiges Verhalten zu erkennen. Jedes Szenario beschreibt eine spezifische Angriffsmethode oder ein auffälliges Muster in den Logs.
* iptables/nftables (Firewall-Bouncer) 
 
* Nginx/Apache (Webserver-Bouncer) 
 
* Cloudflare, Traefik, HAProxy usw.
 
  
== Was ist ein Alert? ==
+
=== Bestandteile eines Szenarios ===
Ein Alert wird erzeugt, wenn eine verdächtige Aktivität erkannt wird. Er enthält Informationen wie:
+
* **Ereignisquelle:** Welche Logs durchsucht werden (z. B. `/var/log/auth.log` für SSH).
* Die erkannte Bedrohung (z. B. Brute-Force-Angriff auf SSH)
+
* **Muster:** Welche Art von Verhalten als Angriff gilt (z. B. wiederholte Login-Fehlversuche).
* Die betroffene IP-Adresse
+
* **Schwellenwert:** Ab wie vielen Vorkommnissen innerhalb eines bestimmten Zeitraums eine Reaktion erfolgt.
* Den Zeitpunkt des Angriffs 
+
* **Maßnahmen:** Was passiert, wenn das Szenario greift (z. B. eine IP-Adresse für 10 Minuten blockieren).
  
Alerts führen nicht automatisch zu einer Blockierung, sondern geben an, dass ein Angriff identifiziert wurde.
+
=== Beispiel für ein SSH-Brute-Force-Szenario ===
 +
Das Szenario `crowdsecurity/ssh-bf` erkennt, wenn ein Client mehrfach in kurzer Zeit versucht, sich per SSH mit falschen Anmeldeinformationen anzumelden. Wird eine bestimmte Schwelle überschritten (z. B. 5 Fehlversuche in 10 Sekunden), wird ein **Alert** ausgelöst und der Angreifer blockiert.
  
== Was ist eine Decision? == 
+
Überprüfung der aktiven Szenarien:
Eine Decision ist eine Entscheidung, die CrowdSec trifft, um eine erkannte Bedrohung zu blockieren. Sie kann beinhalten:
+
*'''sudo cscli scenarios list'''
* Eine IP-Adresse für eine bestimmte Zeit zu bannen 
+
Filtern nach SSH-Szenarien:
* Eine IP global (z. B. über CAPI) zu blockieren 
+
*'''sudo cscli scenarios list | grep ssh'''
* Nur bestimmte Dienste zu sperren 
 
  
Decisions werden von den Bouncern umgesetzt, z. B. durch das Hinzufügen der IP zu einer Firewall-Regel oder einer Sperrliste im Webserver.
+
== Alert ==
 +
Ein **Alert** ist eine Warnung, die CrowdSec erstellt, wenn ein Szenario ausgelöst wird. Alerts enthalten Informationen über die Quelle des Angriffs (z. B. IP-Adresse) und das erkannte Verhalten.
  
== Wie arbeiten diese Komponenten zusammen? == 
+
Anzeigen der aktuellen Alerts:
1. Der CrowdSec Agent analysiert die Logs von verschiedenen Diensten. 
+
*'''sudo cscli alerts list'''
2. Wenn eine verdächtige Aktivität erkannt wird, erzeugt er einen Alert. 
 
3. Falls die erkannte Aktivität eine bestimmte Schwelle überschreitet (z. B. mehrere fehlgeschlagene Login-Versuche in kurzer Zeit), erzeugt CrowdSec eine Decision. 
 
4. Der Bouncer setzt diese Decision um, z. B. indem er die angreifende IP blockiert.
 
  
== Status der aktuellen Entscheidungen prüfen ==
+
== Decision ==
* sudo cscli decisions list
+
Eine **Decision** ist die Maßnahme, die CrowdSec basierend auf einem Alert trifft. Eine typische Decision ist das Sperren einer IP-Adresse.
 +
 
 +
Überprüfung der aktuellen Sperren:
 +
*'''sudo cscli decisions list'''
 +
 
 +
Löschen einer Sperre für eine bestimmte IP-Adresse:
 +
*'''sudo cscli decisions delete -i <IP-Adresse>'''
 +
 
 +
== Bouncer ==
 +
Ein **Bouncer** setzt die von CrowdSec getroffenen Entscheidungen in die Tat um. Er kann verschiedene Mechanismen wie `iptables`, `nftables`, `nginx` oder `cloudflare` nutzen, um Angreifer zu blockieren.
 +
 
 +
Verfügbare Bouncer anzeigen:
 +
*'''sudo cscli bouncers list'''
  
 
= Installation von CrowdSec aus den Originalquellen =   
 
= Installation von CrowdSec aus den Originalquellen =   

Version vom 8. März 2025, 08:41 Uhr

CrowdSec - Open-Source Schutzsystem

CrowdSec ist ein Open-Source Intrusion-Prevention-System (IPS), das auf Community-Intelligenz basiert. Es analysiert Logdateien, erkennt verdächtige Aktivitäten und kann automatisiert auf Angriffe reagieren. Dabei teilt es erkannte Bedrohungen mit der globalen CrowdSec-Community, um kollektiv Angreifer zu blockieren.

Funktionsweise

CrowdSec analysiert verschiedene Logdateien von Servern und Anwendungen mithilfe von sogenannten "Parsers". Angriffsversuche werden anhand von vordefinierten "Scenarios" erkannt, und basierend darauf kann CrowdSec eine Entscheidung treffen ("Decision"), um beispielsweise eine IP-Adresse temporär oder dauerhaft zu sperren.

Grundlagen von CrowdSec

CrowdSec ist ein Open-Source Intrusion Prevention System (IPS), das Log-Dateien analysiert, Angriffe erkennt und automatisch blockiert. Es basiert auf einer Kombination aus **Szenarien**, **Alerts**, **Decisions** und **Bouncern**, um verdächtige Aktivitäten zu erkennen und darauf zu reagieren.

Szenario

Ein **Szenario** ist eine definierte Regel, die CrowdSec nutzt, um verdächtiges Verhalten zu erkennen. Jedes Szenario beschreibt eine spezifische Angriffsmethode oder ein auffälliges Muster in den Logs.

Bestandteile eines Szenarios

  • **Ereignisquelle:** Welche Logs durchsucht werden (z. B. `/var/log/auth.log` für SSH).
  • **Muster:** Welche Art von Verhalten als Angriff gilt (z. B. wiederholte Login-Fehlversuche).
  • **Schwellenwert:** Ab wie vielen Vorkommnissen innerhalb eines bestimmten Zeitraums eine Reaktion erfolgt.
  • **Maßnahmen:** Was passiert, wenn das Szenario greift (z. B. eine IP-Adresse für 10 Minuten blockieren).

Beispiel für ein SSH-Brute-Force-Szenario

Das Szenario `crowdsecurity/ssh-bf` erkennt, wenn ein Client mehrfach in kurzer Zeit versucht, sich per SSH mit falschen Anmeldeinformationen anzumelden. Wird eine bestimmte Schwelle überschritten (z. B. 5 Fehlversuche in 10 Sekunden), wird ein **Alert** ausgelöst und der Angreifer blockiert.

Überprüfung der aktiven Szenarien:

  • sudo cscli scenarios list

Filtern nach SSH-Szenarien:

  • sudo cscli scenarios list | grep ssh

Alert

Ein **Alert** ist eine Warnung, die CrowdSec erstellt, wenn ein Szenario ausgelöst wird. Alerts enthalten Informationen über die Quelle des Angriffs (z. B. IP-Adresse) und das erkannte Verhalten.

Anzeigen der aktuellen Alerts:

  • sudo cscli alerts list

Decision

Eine **Decision** ist die Maßnahme, die CrowdSec basierend auf einem Alert trifft. Eine typische Decision ist das Sperren einer IP-Adresse.

Überprüfung der aktuellen Sperren:

  • sudo cscli decisions list

Löschen einer Sperre für eine bestimmte IP-Adresse:

  • sudo cscli decisions delete -i <IP-Adresse>

Bouncer

Ein **Bouncer** setzt die von CrowdSec getroffenen Entscheidungen in die Tat um. Er kann verschiedene Mechanismen wie `iptables`, `nftables`, `nginx` oder `cloudflare` nutzen, um Angreifer zu blockieren.

Verfügbare Bouncer anzeigen:

  • sudo cscli bouncers list

Installation von CrowdSec aus den Originalquellen

GPG-Schlüssel hinzufügen

CrowdSec installieren

  • sudo apt install crowdsec -y

Status prüfen

  • sudo systemctl status crowdsec

Whitelisten für das Labor anpassen

Datei bearbeiten

  • sudo vi /etc/crowdsec/parsers/s02-enrich/whitelists.yaml

Folgende Einträge auskommentieren oder entfernen

whitelist:
  reason: "private ipv4/ipv6 ip/ranges"
  ip:
    - "127.0.0.1"
    - "::1"
  cidr:
    - "192.168.0.0/16"
    - "10.0.0.0/8"
    - "172.16.0.0/12"

CrowdSec neu starten

  • sudo systemctl restart crowdsec