EMZETT.
Login

fail2ban: Wiederholte Anmeldeversuche automatisch sperren

Kurz: Ein Programm, das Logdateien beobachtet und Adressen mit vielen fehlgeschlagenen Anmeldungen automatisch für eine Zeit in der Firewall sperrt.

Genauer: Jeder Server im Internet wird ständig von Robotern angegriffen, die Passwörter durchprobieren („Brute Force“). fail2ban liest Logs (SSH, Webserver, Mail …), erkennt Muster wie „fünfmal falsches Passwort von derselben Adresse in 10 Minuten“ und trägt die Adresse für eine Weile in die Firewall ein.

Im Detail

Bausteine

  • Filter: reguläre Ausdrücke, die in einem Log verdächtige Zeilen erkennen.
  • Jail: Zusammenstellung aus Logdatei, Filter und Regeln (maxretry, findtime, bantime).
  • Action: Aktion bei Treffer, meist eine Firewall-Regel (nftables, iptables, ufw) und optional eine Benachrichtigung.

Beispielkonfiguration

In /etc/fail2ban/jail.local (nie die Standarddatei bearbeiten, sie wird bei Updates überschrieben):

[DEFAULT]
bantime  = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 192.168.1.0/24

[sshd]
enabled = true

Danach sudo systemctl restart fail2ban. Mit sudo fail2ban-client status sshd sieht man die aktuell gesperrten Adressen, fail2ban-client set sshd unbanip 1.2.3.4 hebt eine Sperre auf.

Nutzen und Grenzen

fail2ban reduziert Rauschen und bremst einfache Angriffe. Es ersetzt aber keine guten Grundlagen: Schlüssel statt Passwort bei SSH, starke Passwörter, aktuelle Software, ein geänderter oder gesperrter Port nur als Zusatz. Verteilte Angriffe mit vielen wechselnden Adressen entgehen der Sperre. Sperren sollten zeitlich begrenzt sein, damit man sich nicht selbst aussperrt.

Fallen

Die eigene Adresse in ignoreip aufnehmen, sonst sperrt man sich bei Tippfehlern selbst. Hinter einem Reverse Proxy muss der Filter die echte Client-Adresse aus dem Header lesen, sonst wird der Proxy gesperrt. Moderne Alternativen und Ergänzungen sind CrowdSec (gemeinsame Sperrlisten) und Rate Limiting direkt am Webserver.

Siehe auch: Firewall unter Linux, SSH unter Linux, Rate Limiting, Linux härten