Fail2ban überwacht die Protokolle Ihres Servers und sperrt IP-Adressen automatisch, wenn von ihnen zu viele fehlgeschlagene Anmeldeversuche ausgehen. So bremsen Sie Angriffe auf SSH, Mailserver oder Webanwendungen wirksam aus. Diese Anleitung zeigt die Installation unter Debian und Ubuntu, eine sinnvolle Grundkonfiguration und die wichtigsten Befehle für den Alltag.

So funktioniert Fail2ban

Fail2ban arbeitet mit sogenannten Jails. Ein Jail besteht aus:

  • einem Filter, der in einem Log nach Fehlversuchen sucht
  • einer Aktion, die eine IP-Adresse sperrt, meist über die Firewall
  • Grenzwerten: wie viele Fehlversuche (maxretry) in welchem Zeitraum (findtime) zu einer Sperre welcher Dauer (bantime) führen

Schritt 1: Installation

sudo apt update
sudo apt install -y fail2ban

Unter Debian 12 und neuer werden Anmeldungen nicht mehr in eine Datei wie /var/log/auth.log geschrieben, sondern nur ins systemd-Journal. Fail2ban muss deshalb das Journal lesen. Das stellen wir in Schritt 2 ein.

Schritt 2: Eigene Konfiguration anlegen

Ändern Sie niemals die Datei jail.conf, sie wird bei Updates überschrieben. Legen Sie stattdessen eine eigene Datei an:

sudo tee /etc/fail2ban/jail.local > /dev/null <<'EOF'
[DEFAULT]
# Eigene IP-Adressen nie sperren (Leerzeichen-getrennt)
ignoreip = 127.0.0.1/8 ::1 198.51.100.20

bantime  = 1h
findtime = 10m
maxretry = 5
backend  = systemd

# Wiederholungstäter länger sperren
bantime.increment = true
bantime.maxtime   = 1w

[sshd]
enabled = true
EOF

Ersetzen Sie 198.51.100.20 durch die feste IP-Adresse Ihres Büros, falls vorhanden. So sperren Sie sich nicht selbst aus, wenn Sie sich einmal vertippen.

Mit bantime.increment verlängert sich die Sperre bei jeder weiteren Sperrung derselben Adresse, bis maximal eine Woche.

Schritt 3: Fail2ban starten

sudo systemctl enable --now fail2ban
sudo systemctl restart fail2ban
sudo fail2ban-client status

Die Ausgabe sollte das Jail sshd auflisten.

Schritt 4: Status eines Jails anzeigen

sudo fail2ban-client status sshd

Sie sehen, wie viele Fehlversuche erkannt wurden und welche Adressen aktuell gesperrt sind. Auf einem Server mit offenem SSH-Port erscheinen hier typischerweise schon nach wenigen Stunden die ersten Einträge.

Die wichtigsten Befehle

BefehlWirkung
sudo fail2ban-client statusalle aktiven Jails anzeigen
sudo fail2ban-client status sshdDetails und gesperrte Adressen eines Jails
sudo fail2ban-client set sshd unbanip 203.0.113.5eine Adresse entsperren
sudo fail2ban-client set sshd banip 203.0.113.5eine Adresse manuell sperren
sudo fail2ban-client bannedalle gesperrten Adressen aller Jails
sudo fail2ban-client reloadKonfiguration neu laden

Weitere Dienste schützen

Fail2ban bringt fertige Filter für viele Dienste mit. Sie finden sie im Verzeichnis /etc/fail2ban/filter.d/. Ein Jail aktivieren Sie, indem Sie es in jail.local ergänzen.

Beispiel: nginx mit HTTP-Authentifizierung

[nginx-http-auth]
enabled  = true
backend  = auto
logpath  = /var/log/nginx/error.log

Beispiel: Postfix und Dovecot

[postfix]
enabled = true
mode    = aggressive

[dovecot]
enabled = true

Bei Diensten, die in eine Logdatei statt ins Journal schreiben, setzen Sie wie im nginx-Beispiel backend = auto und den passenden logpath.

Einen Filter testen

Mit fail2ban-regex prüfen Sie, ob ein Filter Ihre Logeinträge erkennt, ohne etwas zu sperren:

sudo fail2ban-regex /var/log/nginx/error.log /etc/fail2ban/filter.d/nginx-http-auth.conf

Für das Journal:

sudo fail2ban-regex systemd-journal sshd

Die Ausgabe zeigt, wie viele Zeilen gepasst haben.

Fehlerbehebung

Das Jail sshd startet nicht

Prüfen Sie mit sudo journalctl -u fail2ban -n 50 die Fehlermeldung. Lautet sie, dass /var/log/auth.log nicht gefunden wurde, fehlt die Zeile backend = systemd.

Es wird nichts gesperrt

  • Läuft SSH auf einem anderen Port, ergänzen Sie im Jail port = 2222.
  • Prüfen Sie mit fail2ban-regex, ob der Filter Treffer liefert.
  • Bei Docker-Containern landen Logs oft nicht dort, wo Fail2ban sucht. Hier muss der logpath auf die Logdateien des Containers zeigen.

Ich habe mich selbst gesperrt

Melden Sie sich über die Konsole in Ihrem Kundenbereich an oder warten Sie den Ablauf der Sperre ab. Entsperren Sie Ihre Adresse mit unbanip und tragen Sie sie unter ignoreip ein.

Fail2ban ist kein Ersatz

Fail2ban reduziert Angriffe, ersetzt aber keine sichere Grundkonfiguration. Deaktivieren Sie zusätzlich die Anmeldung per Passwort, wie in unserem Artikel SSH-Zugang absichern beschrieben.

Fail2ban eignet sich für jeden vServer und Dedicated Server mit öffentlich erreichbaren Diensten.

War diese Antwort hilfreich? 0 Benutzer fanden dies hilfreich (0 Stimmen)