CrowdSec für Nginx richtig einsetzen
Nginx gehört heute zu den beliebtesten Webservern und Reverse Proxys. Ob als klassischer Webserver, vor Docker-Anwendungen, Nextcloud, Immich oder anderen Self-Hosting-Diensten – Nginx verarbeitet häufig den gesamten eingehenden Datenverkehr eines Servers. Damit wird er zwangsläufig auch zum ersten Ziel automatisierter Angriffe.
Scanner suchen nach bekannten Schwachstellen, Bots testen Login-Seiten und Angreifer versuchen über Webanwendungen Zugriff auf das System zu erhalten. CrowdSec kann diese Aktivitäten anhand der Nginx-Logdateien erkennen und – in Kombination mit einem Bouncer – automatisch Gegenmaßnahmen einleiten.
In diesem Teil der Serie richten wir CrowdSec für Nginx ein, betrachten typische Angriffsmuster und zeigen, wie sich auch Reverse-Proxy-Umgebungen zuverlässig absichern lassen.
Voraussetzungen
Für diesen Beitrag setzen wir Folgendes voraus:
- Debian 13
- Nginx installiert und funktionsfähig
- CrowdSec installiert
- Root-Rechte oder sudo-Berechtigung
- Zugriff auf die Nginx-Konfiguration
Ob Nginx läuft, prüfen Sie mit:
sudo systemctl status nginx
Die Ausgabe sollte den Status active (running) anzeigen.
Nginx-Logdateien
CrowdSec arbeitet auf Basis der Logdateien des Webservers.
Standardmäßig verwendet Nginx unter Debian folgende Dateien:
Access-Log
/var/log/nginx/access.log
Error-Log
/var/log/nginx/error.log
Prüfen Sie zunächst, ob Zugriffe protokolliert werden.
sudo tail -f /var/log/nginx/access.log
Öffnen Sie anschließend Ihre Website im Browser.
Neue Logeinträge sollten sofort erscheinen.
Nginx-Collection installieren
Für Nginx stellt CrowdSec eine vorkonfigurierte Collection bereit.
Installation:
sudo cscli collections install crowdsecurity/nginx
Anschließend wird CrowdSec neu gestartet.
sudo systemctl restart crowdsec
Installation überprüfen
Installierte Collections anzeigen:
sudo cscli collections list
Die Ausgabe sollte unter anderem enthalten:
crowdsecurity/nginx
Auch die installierten Parser können überprüft werden.
sudo cscli parsers list
Nginx als Reverse Proxy
Besonders häufig wird Nginx heute als Reverse Proxy eingesetzt.
Typische Anwendungen sind:
- Nextcloud
- Immich
- Beszel
- Grafana
- Gitea
- Vaultwarden
- Jellyfin
- Docker-Container
- Kubernetes-Ingress
In diesen Szenarien empfängt Nginx sämtliche HTTP- oder HTTPS-Anfragen und leitet sie an interne Dienste weiter.
Dadurch eignet sich CrowdSec hervorragend als zentrale Schutzinstanz vor allen dahinterliegenden Anwendungen.
Reverse Proxy richtig konfigurieren
Bei Reverse Proxys ist es wichtig, dass CrowdSec die echte Client-IP-Adresse auswertet.
Verwendet Nginx ausschließlich die IP des vorgeschalteten Load Balancers oder Proxys, können Angriffe nicht korrekt erkannt werden.
Typischerweise wird hierfür real_ip genutzt.
Beispiel:
set_real_ip_from 192.168.1.0/24; real_ip_header X-Forwarded-For; real_ip_recursive on;
Passen Sie das Netzwerk an Ihre Umgebung an und vertrauen Sie ausschließlich bekannten Proxys.
Welche Angriffe erkennt CrowdSec?
Die Nginx-Collection erkennt bereits zahlreiche Angriffsmuster.
Dazu gehören unter anderem:
- Brute-Force-Angriffe
- Webscanner
- SQL-Injection
- Directory Traversal
- Path Traversal
- Bad User Agents
- Bots
- API-Scanner
- WordPress-Angriffe
- bekannte Exploit-Versuche
Neue Szenarien werden regelmäßig über den CrowdSec Hub bereitgestellt.
Brute-Force-Angriffe
Ein Bot versucht wiederholt eine Anmeldung.
Beispiele:
/login/admin/wp-login.php/user/login
CrowdSec erkennt:
- gleiche IP-Adresse
- viele Anfragen
- kurzer Zeitraum
- wiederholte Fehler
↓
Decision
↓
Bouncer
↓
Firewall oder Reverse Proxy blockiert den Zugriff.
Scanner erkennen
Automatisierte Scanner suchen gezielt nach bekannten Dateien und Verzeichnissen.
Typische Beispiele:
/phpmyadmin /.env /vendor /server-status /wp-admin /cgi-bin/
Mehrere solcher Zugriffe innerhalb kurzer Zeit sprechen eindeutig für einen Scanner.
Bots erkennen
Nicht jeder Bot ist schädlich.
CrowdSec unterscheidet unter anderem zwischen:
Erwünschte Bots
- Googlebot
- Bingbot
- DuckDuckBot
Verdächtige Bots
- Exploit-Scanner
- Login-Bots
- API-Scanner
- Scraper
- Credential-Stuffing-Bots
Dadurch werden Suchmaschinen in der Regel nicht blockiert.
WordPress-Angriffe
Auch wenn WordPress hinter einem Reverse Proxy betrieben wird, erkennt CrowdSec typische Angriffsmuster.
Beispiele:
/wp-login.php /xmlrpc.php /wp-admin /wp-content/plugins/ /wp-content/themes/
Die entsprechenden Szenarien sind bereits Bestandteil der Collection.
Testangriffe durchführen
Nach der Installation sollte die Konfiguration überprüft werden.
Öffnen Sie beispielsweise folgende URLs im Browser:
http://server/.env http://server/phpmyadmin http://server/wp-admin
Alternativ:
curl http://server/.env
oder
curl http://server/wp-login.php
Führen Sie Tests ausschließlich gegen eigene Systeme durch.
Alerts auswerten
Erkannte Vorfälle anzeigen:
sudo cscli alerts list
Beispiel:
ID SCENARIO SOURCE 1458 http-sensitive-files 203.0.113.15
Details:
sudo cscli alerts inspect 1458
Hier sehen Sie:
- IP-Adresse
- Szenario
- Zeitpunkt
- Anzahl der Ereignisse
- betroffene Anwendung
Decisions überprüfen
Erzeugte Sperren:
sudo cscli decisions list
Ist zusätzlich ein Firewall- oder Nginx-Bouncer installiert, wird der Angreifer automatisch blockiert.
Logdateien überwachen
Während der Tests empfiehlt sich die Live-Auswertung.
Nginx:
sudo tail -f /var/log/nginx/access.log
CrowdSec:
sudo journalctl -u crowdsec -f
Dadurch lässt sich unmittelbar nachvollziehen, wann ein Angriff erkannt wird.
Metriken prüfen
Ob CrowdSec die Nginx-Logs verarbeitet:
sudo cscli metrics
Hier erscheinen unter anderem:
- gelesene Logeinträge
- Parser
- Szenarien
- Alerts
- Decisions
Optimierungen
Für produktive Umgebungen empfiehlt sich Folgendes:
Hub regelmäßig aktualisieren
sudo cscli hub update sudo cscli hub upgrade
Firewall-Bouncer verwenden
Eine Sperre direkt auf Firewall-Ebene verhindert unnötige Last auf dem Webserver.
Trusted Proxies korrekt konfigurieren
Gerade bei Reverse-Proxys ist die korrekte Client-IP entscheidend.
Logrotation prüfen
Achten Sie darauf, dass CrowdSec nach einer Logrotation weiterhin die aktuellen Dateien überwacht.
Alerts regelmäßig kontrollieren
Nicht jede ungewöhnliche Anfrage ist automatisch ein Angriff.
Regelmäßige Kontrollen helfen dabei, Fehlalarme frühzeitig zu erkennen.
Typische Fehler
Keine Alerts
Kontrollieren:
sudo cscli metrics
Werden überhaupt Nginx-Logs verarbeitet?
Falsche Client-IP
Prüfen Sie die real_ip-Konfiguration von Nginx.
Keine Logeinträge
sudo tail -f /var/log/nginx/access.log
Collection fehlt
sudo cscli collections list
Mit der Nginx-Collection lässt sich CrowdSec schnell und unkompliziert für moderne Webserver und Reverse-Proxys einrichten. Die integrierten Parser und Szenarien erkennen typische Bedrohungen wie Brute-Force-Angriffe, Webscanner, Bots oder WordPress-spezifische Angriffe anhand der Nginx-Logdateien und können diese – in Verbindung mit einem Bouncer – automatisch blockieren.
Besonders in Umgebungen mit Reverse Proxys ist eine korrekte Konfiguration der Client-IP entscheidend, damit CrowdSec Angriffe zuverlässig dem tatsächlichen Ursprung zuordnen kann. Mit regelmäßigen Updates der Hub-Komponenten und einer kontinuierlichen Überwachung von Alerts und Metriken bleibt Ihr Nginx-Server langfristig gegen aktuelle Bedrohungen geschützt.
Im nächsten Teil der Serie kümmern wir uns um den Schutz von SSH. Sie erfahren, wie CrowdSec Brute-Force-Angriffe auf den SSH-Dienst erkennt, Passwort-Spraying identifiziert und Ihren Server mit automatischen Sperren wirkungsvoll absichert.