CrowdSec in modernen Infrastrukturumgebungen richtig einsetzen
Moderne Self-Hosting- und Unternehmensumgebungen setzen heute nur noch selten auf einen einzelnen Webserver. Stattdessen kommt häufig ein Reverse Proxy zum Einsatz, der eingehende Anfragen entgegennimmt, HTTPS-Verbindungen beendet und den Datenverkehr an interne Anwendungen weiterleitet.
Beliebte Lösungen wie Traefik, HAProxy oder Nginx bilden dabei das zentrale Eingangstor für Dienste wie Nextcloud, Immich, Vaultwarden, Grafana oder Docker-Container. Genau deshalb ist es besonders wichtig, CrowdSec so zu konfigurieren, dass Angriffe bereits an dieser zentralen Stelle erkannt und abgewehrt werden.
In diesem Teil der Serie erfahren Sie, wie CrowdSec mit Reverse Proxys zusammenarbeitet, warum die korrekte Weitergabe der Client-IP entscheidend ist und worauf Sie bei Docker- und Kubernetes-Umgebungen achten sollten.
Was ist ein Reverse Proxy?
Ein Reverse Proxy sitzt zwischen dem Internet und den eigentlichen Anwendungen.
Der typische Datenfluss sieht folgendermaßen aus:
Internet
│
▼
Reverse Proxy
(Traefik / HAProxy / Nginx)
│
▼
Interne Anwendungen
- Nextcloud
- Immich
- Grafana
- Gitea
- Vaultwarden
- Beszel
- Docker-Container
Alle eingehenden Verbindungen laufen zunächst über den Reverse Proxy.
Dadurch eignet sich dieser hervorragend als zentrale Stelle zur Angriffserkennung.
Warum CrowdSec am Reverse Proxy einsetzen?
Wird CrowdSec direkt am Reverse Proxy betrieben, profitiert nicht nur eine einzelne Anwendung.
Stattdessen schützt CrowdSec gleichzeitig alle dahinterliegenden Dienste.
Vorteile:
- zentrale Angriffserkennung
- nur eine Logquelle
- weniger Konfigurationsaufwand
- einheitliche Schutzmechanismen
- gemeinsame Decisions
- geringere Systemlast
Gerade bei Self-Hosting-Plattformen mit vielen Anwendungen ist dies ein großer Vorteil.
Unterstützte Reverse Proxys
CrowdSec unterstützt zahlreiche Proxy-Lösungen.
Dazu gehören unter anderem:
- Traefik
- HAProxy
- Nginx
- Apache
- Caddy
Für alle existieren passende Collections oder Parser.
Traefik mit CrowdSec
Traefik wird häufig in Docker-Umgebungen eingesetzt.
Typische Einsatzgebiete:
- Docker Compose
- Swarm
- Kubernetes
- Self-Hosting
- Homelabs
CrowdSec kann die Traefik-Access-Logs analysieren und unter anderem erkennen:
- Webscanner
- Brute-Force-Angriffe
- Bots
- Directory Traversal
- SQL-Injection
- API-Missbrauch
Voraussetzung ist, dass Access-Logs in Traefik aktiviert sind.
Beispiel:
accessLog: filePath: "/var/log/traefik/access.log"
Erst dann stehen CrowdSec die notwendigen Informationen zur Verfügung.
HAProxy mit CrowdSec
Auch HAProxy wird häufig als Load Balancer und Reverse Proxy eingesetzt.
CrowdSec analysiert hierbei die HAProxy-Logs.
Typische Erkennungen:
- Scanner
- Login-Bots
- API-Angriffe
- ungewöhnliche Zugriffsmuster
- hohe Request-Raten
Wichtig ist auch hier eine vollständige Protokollierung aller HTTP-Anfragen.
Die Bedeutung von X-Forwarded-For
Der wichtigste Punkt bei Reverse Proxys ist die echte Client-IP-Adresse.
Ohne zusätzliche Konfiguration sieht die dahinterliegende Anwendung häufig nur die IP-Adresse des Reverse Proxys.
Beispiel:
Internet 203.0.113.20 ↓ Traefik ↓ Nextcloud ↓ Nextcloud sieht: 192.168.1.10
Dadurch würde CrowdSec sämtliche Angriffe dem Reverse Proxy zuordnen.
Eine zuverlässige Erkennung wäre kaum möglich.
X-Forwarded-For
Aus diesem Grund setzen Reverse Proxys den HTTP-Header:
X-Forwarded-For
Dieser enthält die ursprüngliche Client-IP.
Beispiel:
X-Forwarded-For: 203.0.113.20
CrowdSec kann dadurch den tatsächlichen Angreifer identifizieren.
Trusted Proxy
Der Header X-Forwarded-For darf allerdings nicht blind vertraut werden.
Ein Angreifer könnte ihn selbst manipulieren.
Deshalb muss der Reverse Proxy ausdrücklich als Trusted Proxy konfiguriert werden.
Beispiel bei Nginx:
set_real_ip_from 192.168.1.0/24; real_ip_header X-Forwarded-For; real_ip_recursive on;
Vertrauen Sie ausschließlich bekannten Proxy-IP-Adressen oder internen Netzwerken.
CrowdSec hinter mehreren Proxys
In größeren Umgebungen existieren häufig mehrere Proxy-Ebenen.
Beispiel:
Internet
│
▼
Cloudflare
│
▼
HAProxy
│
▼
Traefik
│
▼
Nextcloud
Auch solche Umgebungen unterstützt CrowdSec.
Wichtig ist jedoch, dass die komplette Kette korrekt konfiguriert wird.
Andernfalls gehen Client-IP-Adressen verloren.
Docker
CrowdSec eignet sich hervorragend für Docker-Umgebungen.
Typische Einsatzszenarien:
- Docker Compose
- Portainer
- Nextcloud
- Immich
- Gitea
- Grafana
- Vaultwarden
Dabei sollte CrowdSec Zugriff auf die Logdateien des Reverse Proxys erhalten.
Je nach Aufbau geschieht dies über:
- Volumes
- Bind Mounts
- gemeinsame Logverzeichnisse
Dadurch können sämtliche Container zentral überwacht werden.
Docker Compose
Ein häufig genutzter Aufbau sieht beispielsweise so aus:
Docker Host ├── CrowdSec ├── Traefik ├── Nextcloud ├── Immich ├── Vaultwarden └── Grafana
Traefik schreibt sämtliche Zugriffe in eine gemeinsame Logdatei.
CrowdSec analysiert diese zentral.
Dadurch profitieren alle Anwendungen gleichzeitig.
Kubernetes
Auch Kubernetes wird von CrowdSec unterstützt.
Typische Einsatzorte:
- Ingress Controller
- Traefik
- Nginx Ingress
- HAProxy Ingress
Hier sollte CrowdSec möglichst nah am Ingress arbeiten.
Dadurch werden Angriffe bereits erkannt, bevor sie einzelne Pods erreichen.
Je nach Clustergröße empfiehlt sich eine zentrale CrowdSec-Instanz oder ein Agent pro Node.
Typische Angriffsmuster
CrowdSec erkennt am Reverse Proxy unter anderem:
- Brute Force
- Scanner
- SQL-Injection
- Directory Traversal
- API-Scanner
- Bad User Agents
- WordPress-Scanner
- Botnetze
- Credential Stuffing
Da sämtliche Anwendungen denselben Einstiegspunkt nutzen, werden Angriffe häufig bereits sehr früh erkannt.
Besonderheiten
Beim Einsatz hinter Reverse Proxys sollten einige Punkte beachtet werden.
Access-Logs aktivieren
Ohne Logdateien kann CrowdSec keine Angriffe erkennen.
Client-IP prüfen
Kontrollieren Sie regelmäßig, ob tatsächlich die echte IP-Adresse protokolliert wird.
Nur Trusted Proxies definieren
Vertrauen Sie niemals beliebigen X-Forwarded-For-Headern.
Logrotation
Auch nach einer Logrotation muss CrowdSec weiterhin Zugriff auf die aktuellen Dateien besitzen.
Hub aktuell halten
Neue Parser und Szenarien erscheinen regelmäßig.
sudo cscli hub update sudo cscli hub upgrade
Best Practices
Für produktive Umgebungen empfehlen sich folgende Maßnahmen:
- Reverse Proxy zentral absichern.
- Access-Logs aktivieren.
- Trusted Proxies korrekt konfigurieren.
- Firewall-Bouncer einsetzen.
- Hub-Komponenten regelmäßig aktualisieren.
- Alerts regelmäßig prüfen.
- Decisions überwachen.
- Docker-Volumes sauber strukturieren.
- Kubernetes-Ingress zentral überwachen.
Typische Fehler
Falsche Client-IP
Kontrollieren Sie die X-Forwarded-For-Konfiguration.
Keine Logeinträge
Prüfen Sie, ob Access-Logs aktiviert sind.
Keine Alerts
sudo cscli metrics
Reverse Proxy nicht als Trusted Proxy eingetragen
In diesem Fall werden IP-Adressen häufig falsch erkannt.
Reverse Proxys wie Traefik, HAProxy oder Nginx bilden in modernen Hosting-Umgebungen den zentralen Einstiegspunkt für nahezu alle Anwendungen. Wird CrowdSec an dieser Stelle integriert, profitieren sämtliche dahinterliegenden Dienste von einer gemeinsamen Angriffserkennung und automatischen Schutzmaßnahmen.
Entscheidend für eine zuverlässige Analyse ist die korrekte Weitergabe der echten Client-IP über X-Forwarded-For sowie die Konfiguration vertrauenswürdiger Proxys. In Kombination mit aktivierten Access-Logs, einem Firewall-Bouncer und regelmäßig aktualisierten Hub-Komponenten entsteht so ein leistungsfähiges Sicherheitskonzept für Docker-, Kubernetes- und klassische Serverumgebungen.
Im nächsten Teil der Serie installieren wir das CrowdSec Dashboard. Sie lernen die Weboberfläche kennen und erfahren, wie Sie Alerts, Decisions, Maschinen und Statistiken komfortabel über den Browser verwalten können.