fail2ban beobachtet eine Logdatei auf ein Muster, zählt Treffer je Adresse und fügt eine Firewall-Regel hinzu, wenn die Zahl überschritten wird. Mehr tut es nicht — und das zu wissen sagt Ihnen genau, wobei es hilft und wobei nicht.
Was es aufhält
- Wiederholte SSH-Passwortversuche — die Schlüssel allerdings ohnehin schon unterbinden.
- Wiederholte fehlgeschlagene Anmeldungen an einem Formular, sofern die Fehlversuche protokolliert werden.
- Einfache Scanner, die eine Liste bekannter Pfade abgehen.
Was es nicht aufhält
Es reagiert nur: Es greift nach mehreren Fehlversuchen ein, ein einzelner erfolgreicher Treffer wird also nie gesehen. Gegen einen Versuch, der über tausend Adressen verteilt ist und je zweimal probiert, hilft es ebenfalls nicht — und genau so sieht ein ernsthafter Versuch aus.
Ein Jail für einen Web-Login
# /etc/fail2ban/filter.d/mysite-login.conf
[Definition]
failregex = ^<HOST> .* "POST /login" 401
ignoreregex =
# /etc/fail2ban/jail.local
[mysite-login]
enabled = true
filter = mysite-login
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 600
bantime = 3600
Testen Sie das Muster vor dem Einschalten
fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/mysite-login.conf
Es gibt aus, wie viele Zeilen getroffen wurden. Null Treffer heißt, das Jail wird nie auslösen — und Sie werden sich für geschützt halten.
Sperren Sie sich nicht selbst
ignoreip = 127.0.0.1/8 ::1 YOUR.OFFICE.IP.HERE
Hinter einem CDN trägt jede Anfrage die Proxy-Adresse, die erste Sperre blockiert also den Proxy und mit ihm jeden Ihrer Besucher. Richten Sie zuerst die echte Client-Adresse ein — siehe den Artikel über das Leben hinter einem CDN.
fail2ban-client status mysite-login
fail2ban-client set mysite-login unbanip 1.2.3.4
Beginnen Sie mit einer Sperre von einer Stunde, nicht mit einer dauerhaften. Eine dauerhafte Sperrliste wächst, wird nie durchgesehen und enthält irgendwann einen Kunden.