fail2ban fuer Nginx konfigurieren
fail2ban kennen viele für SSH, es funktioniert aber genauso gut für Nginx.
Wer einen Login-Bereich hat der im Internet erreichbar ist sollte Brute-Force-Versuche unterbinden.
Voraussetzung: fail2ban ist installiert
sudo apt-get install fail2ban
Filter erstellen
Wir erstellen einen Filter der fehlgeschlagene Logins erkennt.
Das Muster hängt davon ab was die Anwendung ins Log schreibt. Für einen typischen 401/403-Response.
sudo nano /etc/fail2ban/filter.d/nginx-login.conf
[Definition] failregex = ^<HOST> .* "POST /login.* HTTP.*" (401|403) ignoreregex =
Den Pfad /login an die eigene Anwendung anpassen.
Jail einrichten
sudo nano /etc/fail2ban/jail.local
[nginx-login] enabled = true port = http,https filter = nginx-login logpath = /var/log/nginx/access.log maxretry = 5 bantime = 3600 findtime = 600
5 Fehlversuche in 10 Minuten führen zu einer Sperre von einer Stunde.
sudo systemctl restart fail2ban
Status prüfen
sudo fail2ban-client status nginx-login
Zeigt wie viele IPs gerade gesperrt sind und wie viele Treffer es gab.
Eine IP manuell entsperren falls man sich selbst gesperrt hat.
sudo fail2ban-client set nginx-login unbanip 1.2.3.4