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

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