CrowdSec einrichten – Moderne Security mit Community-Intelligenz (Fail2ban-Ersatz)

Der entscheidende Unterschied: Community-Intelligenz

Fail2ban arbeitet isoliert. Wenn ein Angreifer deinen SSH-Scan startet, merkt das nur dein Server. Der gleiche Angreifer kann 10.000 andere Server scannen, ohne dass Fail2ban das mitbekommt. Jeder Server kämpft allein.

CrowdSec vernetzt die Server. Wenn auf deinem Server ein Angriff erkannt wird, wird diese Information an die CrowdSec-Community-API gesendet. Wenn der gleiche Angreifer dann den nächsten Server scannt, ist dieser bereits informiert und blockt die IP sofort – ohne dass ein einziger Angriffsversuch sichtbar wird.

Stell es dir vor wie eine Nachbarschaftswache: Wenn in deiner Straße eingebrochen wird, rufst du die Polizei – und alle anderen in der Straße schließen ihre Türen ab, bevor der Einbrecher überhaupt bei ihnen klingeln kann.

CrowdSec arbeitet mit sogenannten Collections – vorgefertigten Paketen aus Parsern, Szenarien und Bouncern für bestimmte Dienste. Statt selbst Regex zu schreiben (wie bei Fail2ban), installierst du einfach cscli collections install crowdsecurity/nginx und CrowdSec weiß automatisch, wie Nginx-Angriffe aussehen, wie man sie erkennt und was man dagegen tun kann.

Warum CrowdSec zusätzlich zu Fail2ban?

Beide lassen sich parallel betreiben, und das ist sogar eine gute Strategie:

  • Fail2ban übernimmt die lokale, sofortige Abwehr von Brute-Force-Angriffen auf SSH, Mail und Dienste, bei denen du sofort sperren willst (z.B. WordPress-Login).
  • CrowdSec sammelt Daten, analysiert Verhaltensmuster über längere Zeiträume und schützt dich vor Angreifern, die in der globalen Blocklist stehen.

Die Kombination ist wie eine zweistufige Sicherheitskontrolle: Fail2ban ist der Posten am Tor, CrowdSec die Videoanalyse mit KI. Beide zusammen geben dir die beste Abdeckung.

Was ist CrowdSec?

CrowdSec ist die moderne Weiterentwicklung von Fail2ban. Es analysiert Logdateien, erkennt Angriffe und sperrt IPs – aber mit einem entscheidenden Vorteil: Community-Intelligenz. Wenn ein Angreifer auf deinem Server auffällt, wird er in die globale Blocklist aufgenommen und alle anderen CrowdSec-Nutzer sind sofort geschützt.

Im Vergleich zu Fail2ban:

Feature Fail2ban CrowdSec
IP-Sperre ✅ Lokal ✅ Lokal + Global
Community-Blocklist
Web-Dashboard ✅ (Metabase)
API-basierte Bouncer ✅ (Nginx, Cloudflare, etc.)
Simulations-Modus ✅ (Testen ohne zu sperren)

Architektur

  Logdateien (auth.log, mail.log, nginx/access.log ...)
       │
       ▼
  CrowdSec (crowdsec.service) – analysiert Logs auf Angriffsmuster
       │
       ├─► Lokale Entscheidung: IP sperren (via nftables)
       │
       └─► Community-API: Angreifer melden & globale Blocklist empfangen
       │
       ▼
  CrowdSec Bouncer (z.B. Nginx-Firewall-Bouncer) – setzt Sperren durch

1. Installation

# CrowdSec installieren (offizielles Repo)
curl -s https://install.crowdsec.net | sudo bash
sudo apt-get install crowdsec

# Nginx-Firewall-Bouncer (blockt IPs im Nginx)
sudo apt-get install crowdsec-firewall-bouncer-nftables

# Optional: Metabase-Dashboard (schöne UI)
sudo apt-get install crowdsec-metabase

2. Konfiguration (config.yaml)

common:
  daemonize: true
  log_media: file
  log_level: info
  log_dir: /var/log/
  log_max_size: 20
  compress_logs: true

db_config:
  type: sqlite
  db_path: /var/lib/crowdsec/data/crowdsec.db

api:
  server:
    listen_uri: 127.0.0.1:8888
    profiles_path: /etc/crowdsec/profiles.yaml
    trusted_ips:
      - 127.0.0.1
      - ::1
  client:
    credentials_path: /etc/crowdsec/local_api_credentials.yaml

crowdsec_service:
  acquisition_path: /etc/crowdsec/acquis.yaml
  parser_routines: 3

prometheus:
  enabled: true
  level: full
  listen_addr: 127.0.0.1
  listen_port: 6060

3. Log-Quellen konfigurieren (acquis.yaml)

# /etc/crowdsec/acquis.yaml
filenames:
  - /var/log/nginx/access.log
  - /var/log/nginx/error.log
  - /var/log/auth.log
  - /var/log/mail.log
labels:
  type: syslog

4. Profile (Entscheidungsregeln)

# /etc/crowdsec/profiles.yaml
name: default_ip_remediation
filters:
 - Alert.Remediation == true && Alert.GetScope() == "Ip"
decisions:
 - type: ban
   duration: 4h
duration_expr: Sprintf("%dh", (GetDecisionsCount(Alert.GetValue()) + 1) * 4)
on_success: break

Die Bantime erhöht sich automatisch: 1. Treffer → 4h, 2. Treffer → 8h, 3. Treffer → 12h …

5. Simulation (Testmodus)

# /etc/crowdsec/simulation.yaml
simulation: false  # true = erkennen ohne zu sperren (Test)

Setze simulation: true in der Testphase – CrowdSec erkennt dann Angriffe, sperrt aber noch nicht. Perfekt zum Einrichten!

6. Wichtige Befehle

# Status
systemctl status crowdsec
cscli metrics

# Alle installierten Collections & Parser
cscli hub list

# Verfügbare Collections durchsuchen
cscli collections list

# Collection installieren (z.B. für Nginx)
cscli collections install crowdsecurity/nginx

# Collection installieren (für Linux)
cscli collections install crowdsecurity/linux

# Collection installieren (für Mailserver)
cscli collections install crowdsecurity/postfix

# Geladene Parser/Scenarios anzeigen
cscli hub list --all

# Aktuell gesperrte IPs
cscli decisions list

# IP entsperren
cscli decisions delete -i 192.168.1.100

# IP manuell sperren
cscli decisions add -i 192.168.1.100 -d 4h

# Bouncer Status
cscli bouncers list

# Machine-Status
cscli machines list

# Mit Community-API verbinden (für globale Blocklist)
cscli console enroll DEIN_API_KEY

# Dashboard-Zugriff
echo "Dashboard: http://DEINE_SERVER_IP:3000"
cscli dashboard setup

7. Nginx-Bouncer (Firewall-Sperren durchsetzen)

Der firewall-bouncer blockt IPs direkt per nftables – ohne dass Nginx neu geladen werden muss:

# Installieren (bereits oben gemacht)
# apt-get install crowdsec-firewall-bouncer-nftables

# Status prüfen
systemctl status crowdsec-firewall-bouncer

# Gebannte IPs in nftables anzeigen
nft list set inet f2b-table addr-set-crowdsec

8. Dashboard & Monitoring (Metabase)

# Metabase installieren
apt-get install crowdsec-metabase

# Dashboard einrichten
cscli dashboard setup

# Zugriff
# Öffne http://DEINE_SERVER_IP:3000 im Browser
# Setup abschließen (User anlegen)
# Datenbank: SQLite (wird automatisch erkannt)

9. Auswertung – Was CrowdSec erkennt

# Metriken anzeigen
cscli metrics
Quelle Gelesene Zeilen Erkannte Angriffe Geblockte IPs
Nginx Access Log 100k+ ja (Paths, Bots, etc.) viele
Nginx Error Log ~100 ja (HTTP-Auth, Limit-Req) manche
SSH (auth.log) 5k+ ja (Brute-Force) viele
Mail (mail.log) 7k+ ja (SASL, Spam-Relay) viele

10. Fail2ban vs CrowdSec – Sollte man wechseln?

Kriterium Fail2ban CrowdSec
Ressourcen ★★★ Sehr leicht ★★ Etwas schwerer (Go + SQLite)
Community-Blocklist ❌ Nein ✅ Ja (globaler Schutz)
Dashboard ✅ Metabase-UI
Lernkurve ★ Einfach ★★ Mittel
Collections Manuelle Filter Automatische Updates
API-gesteuert ✅ (Bouncer-Konzept)

Empfehlung: CrowdSec zusätzlich zu Fail2ban betreiben, oder bei Neuinstallationen direkt CrowdSec nutzen. Fail2ban ist einfacher, CrowdSec ist zukunftssicherer.

11. Nach der Installation – Quickstart

# 1. Status prüfen
systemctl status crowdsec
cscli metrics

# 2. Nginx-Collection installieren
cscli collections install crowdsecurity/nginx

# 3. Linux-Collection installieren (SSH + mehr)
cscli collections install crowdsecurity/linux

# 4. Postfix-Collection installieren (Mail)
cscli collections install crowdsecurity/postfix

# 5. Nginx neustarten + Logs prüfen
systemctl restart crowdsec

# 6. Gebannte IPs anzeigen
cscli decisions list

# 7. Mit Community verbinden (optional)
# cscli console enroll DEIN_API_KEY

Fazit

CrowdSec ist der moderne Nachfolger von Fail2ban. Die Community-Intelligenz macht den entscheidenden Unterschied: Ein Angreifer, der auf deinem Server auffällt, wird weltweit geblockt. Mit Dashboard, API und Collections ist es skalierbarer und zukunftssicherer.

🔗 CrowdSec Offizielle Seite | Weitere Projekte

X

Basti

Entwickler und Smart-Home-Enthusiast aus Deutschland. Ich entwickle Open-Source-Integrationen für Home Assistant (IDM Wärmepumpe, Violet Pool Controller), Modbus-Tools (ModBridge) und betreibe verschiedene Server-Dienste (Matrix, Seafile, SOGo).

GitHub →

Schreibe einen Kommentar