Fail2ban installieren: Server vor Angriffen schützen
Fail2ban installieren und einrichten: SSH-Brute-Force-Angriffe abwehren, jail.local konfigurieren, Nginx schützen, gesperrte IPs verwalten, ufw nutzen.

Inhalt
Fail2ban ist ein Open-Source-Tool, das die Logdateien Ihres Servers überwacht und IP-Adressen mit wiederholt fehlgeschlagenen Anmeldeversuchen automatisch für eine bestimmte Zeit in der Firewall sperrt. Jeder Server, der aus dem Internet erreichbar ist, wird schon wenige Minuten nach der Einrichtung mit automatisierten Angriffen auf SSH konfrontiert, die Passwörter durchprobieren. Fail2ban sperrt diese Angreifer nach wenigen Versuchen aus.
In dieser Anleitung erklären wir, wie Fail2ban funktioniert, wie Sie es unter Ubuntu, Debian und AlmaLinux installieren, SSH schützen, Einstellungen in jail.local vornehmen, Nginx absichern und gesperrte Adressen verwalten.
Wie funktioniert Fail2ban?
Fail2ban besteht aus drei Teilen:
- Filter: Reguläre Ausdrücke, die einen fehlgeschlagenen Anmeldeversuch in der Logdatei erkennen, bei SSH zum Beispiel Zeilen mit „Failed password“.
- Aktion (action): Was passiert, wenn eine Adresse auffällt. Meist wird eine Sperrregel in die Firewall eingefügt.
- Jail: Eine Definition, die einen Filter, eine Aktion und die Regeln (nach wie vielen Versuchen, für wie lange) zusammenführt. Für jeden Dienst wird ein eigenes Jail angelegt.
Unternimmt eine IP-Adresse innerhalb von findtime so viele Fehlversuche wie in maxretry festgelegt, wird sie für die Dauer von bantime gesperrt. Danach wird die Sperre automatisch aufgehoben.
Fail2ban installieren
Ubuntu und Debian:
sudo apt update
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
AlmaLinux und Rocky Linux (das Paket liegt im EPEL-Repository):
sudo dnf install epel-release
sudo dnf install fail2ban
sudo systemctl enable --now fail2ban
Prüfen Sie, ob der Dienst läuft:
sudo fail2ban-client status
In den Paketen für Ubuntu und Debian ist das SSH-Jail standardmäßig aktiv; sehen Sie in der Ausgabe sshd, arbeitet der Grundschutz bereits.
Einstellungen mit jail.local
Schreiben Sie Ihre Einstellungen nicht in die mitgelieferte Datei jail.conf, sondern in eine selbst angelegte Datei /etc/fail2ban/jail.local. jail.conf kann bei Updates überschrieben werden; jail.local bleibt dagegen erhalten und wird über jail.conf hinweg angewendet.
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
bantime.increment = true
ignoreip = 127.0.0.1/8 ::1 198.51.100.7
[sshd]
enabled = true
bantime: Dauer der Sperre.1hsteht für eine Stunde.findtime: Zeitraum, in dem die Versuche gezählt werden.maxretry: Maximale Zahl erlaubter Fehlversuche in diesem Zeitraum.bantime.increment: Verlängert die Sperrdauer um ein Vielfaches, wenn dieselbe Adresse erneut auffällt. Gegen hartnäckige Bots ist das sehr wirksam.ignoreip: Adressen, die nie gesperrt werden. Tragen Sie statt198.51.100.7Ihre eigene feste IP-Adresse ein; so sperren Sie sich nicht versehentlich selbst aus.
Nachdem Sie die Einstellungen gespeichert haben, starten Sie den Dienst neu:
sudo systemctl restart fail2ban
Hinweis für Debian 12 und neuer: In diesen Versionen werden Logs standardmäßig nicht mehr in /var/log/auth.log, sondern im systemd-Journal gespeichert. Startet das SSH-Jail nicht, fügen Sie im Abschnitt [sshd] die Zeile backend = systemd hinzu.
Wenn Sie den SSH-Port geändert haben, teilen Sie das dem Jail mit, sonst wendet Fail2ban die Sperre auf den falschen Port an:
[sshd]
enabled = true
port = 2222
Gesperrte Adressen verwalten
| Befehl | Was er bewirkt |
|---|---|
sudo fail2ban-client status | Listet die aktiven Jails auf |
sudo fail2ban-client status sshd | Zeigt die gesperrten Adressen im SSH-Jail und ihre Anzahl |
sudo fail2ban-client set sshd banip 203.0.113.50 | Sperrt eine Adresse manuell |
sudo fail2ban-client set sshd unbanip 203.0.113.50 | Hebt die Sperre einer Adresse auf |
sudo fail2ban-client unban --all | Hebt alle Sperren auf |
Das eigene Log von Fail2ban liegt in /var/log/fail2ban.log; dort sehen Sie, welche Adresse wann und von welchem Jail gesperrt wurde.
Nginx und andere Dienste schützen
Fail2ban ist nicht nur für SSH gedacht. Das Paket bringt fertige Filter für viele Dienste mit; Sie aktivieren sie, indem Sie sie in jail.local eintragen:
[nginx-http-auth]
enabled = true
[nginx-botsearch]
enabled = true
[recidive]
enabled = true
nginx-http-auth: Erkennt fehlgeschlagene Anmeldungen an passwortgeschützten Seiten von Nginx.nginx-botsearch: Erkennt Bots, die nach nicht vorhandenen Admin-Panels und bekannten Sicherheitslücken suchen.recidive: Überwacht das eigene Log von Fail2ban und sperrt Adressen, die in verschiedenen Jails immer wieder gesperrt werden, für deutlich längere Zeit.
Installation und Konfiguration von Nginx erklären wir in unserer Anleitung Nginx installieren. Auch für Dienste wie WordPress, Postfix, Dovecot und MariaDB gibt es fertige Filter; die Liste finden Sie im Ordner /etc/fail2ban/filter.d/.
Zusammen mit ufw verwenden
Fail2ban fügt standardmäßig direkt iptables- oder nftables-Regeln hinzu und arbeitet problemlos mit ufw zusammen. Sollen die Sperren als ufw-Regeln erscheinen, ergänzen Sie im Abschnitt [DEFAULT] folgende Zeile:
banaction = ufw
Danach sehen Sie gesperrte Adressen auch in der Ausgabe von sudo ufw status. Wie Firewall und Ports funktionieren, erklären wir im Artikel Was ist ein Port?
Die Grenzen von Fail2ban
Fail2ban ist eine starke zusätzliche Schutzschicht, löst aber nicht alles:
- Der eigentliche Schutz ist eine starke Authentifizierung. Deaktivieren Sie bei SSH die Anmeldung per Passwort und erlauben Sie nur die Anmeldung per Schlüssel; wie das geht, zeigen wir Schritt für Schritt im Artikel Was ist SSH?
- Verteilte Angriffe werden verlangsamt, aber nicht gestoppt. Tausende verschiedene Adressen, die jeweils nur wenige Versuche unternehmen, können unter der Schwelle von Fail2ban bleiben.
- Es ist kein DDoS-Schutz. Gegen Angriffe, die Ihre Leitung mit Traffic fluten, brauchen Sie Schutz auf Netzwerkebene; den Unterschied erklären wir im Artikel Was ist DDoS?
Sicherheit auf Nodesty-Servern
Auf den Nodesty-Paketen AMD Ryzen 9 9950X vServer und AMD EPYC 7763 vServer installieren Sie Fail2ban dank vollem Root-Zugriff in wenigen Minuten. Während Fail2ban Anmeldeversuche innerhalb Ihres Servers stoppt, filtert der L3–L7 nShield DDoS-Schutz Angriffe auf Netzwerkebene, bevor sie Ihren Server erreichen. Verlieren Sie wegen einer Sperre den SSH-Zugang, erreichen Sie Ihren Server jederzeit über die Webkonsole in Ihrem Panel.
Häufig gestellte Fragen
Brauche ich Fail2ban, wenn ich SSH-Schlüssel verwende?
Die Anmeldung per Schlüssel macht Angriffe durch Passwortraten bereits wirkungslos; das ist der eigentliche Schutz. Fail2ban ist trotzdem nützlich, denn es reduziert das Rauschen in den Logs, senkt die Ressourcen, die der Server für die Antwort auf jeden Versuch aufwendet, und schützt auch dort, wo keine Schlüssel möglich sind, etwa bei Nginx oder anderen Diensten.
Blockiert Fail2ban DDoS-Angriffe?
Nein. Fail2ban liest Logdateien und sperrt einzelne IP-Adressen; gegen einen DDoS-Angriff, der von Tausenden verschiedenen Adressen kommt und Ihre Leitung auslastet, ist es nicht ausgelegt. Gegen solche Angriffe brauchen Sie einen DDoS-Schutz auf Netzwerkebene, der vor dem Server arbeitet.
Ich habe mich versehentlich selbst gesperrt. Was nun?
Verbinden Sie sich von einer anderen IP-Adresse mit dem Server, etwa über die Mobilfunkverbindung Ihres Smartphones oder die Webkonsole Ihres Anbieters, und führen Sie den Befehl sudo fail2ban-client set sshd unbanip Ihre-IP-Adresse aus. Damit das nicht wieder passiert, tragen Sie Ihre eigene feste IP-Adresse in die Zeile ignoreip ein.
Wie lange dauert eine Sperre?
Die Sperrdauer wird mit der Einstellung bantime festgelegt und beträgt standardmäßig meist 10 Minuten. Eine Stunde wie in dieser Anleitung ist ein guter Start. Wenn Sie bantime.increment aktivieren, verlängert sich die Sperre für Adressen, die immer wieder auffallen, jedes Mal um ein Vielfaches.
Lassen sich Fail2ban und ufw zusammen verwenden?
Ja. Fail2ban sperrt standardmäßig über iptables- oder nftables-Regeln und gerät nicht mit ufw in Konflikt. Auf Wunsch sorgen Sie mit der Einstellung banaction = ufw dafür, dass Sperren als ufw-Regeln angelegt werden; dann sehen Sie gesperrte Adressen auch in der Ausgabe von ufw status.
Soll ich die Datei jail.conf bearbeiten?
Nein. jail.conf kann bei Paketupdates überschrieben werden. Schreiben Sie Ihre eigenen Einstellungen immer in die Datei jail.local oder in eine eigene Datei im Ordner jail.d; Fail2ban wendet die Einstellungen aus diesen Dateien über jail.conf hinweg an.
Über den Autor
Nodesty-Team · Infrastruktur und Support
Das Nodesty-Team betreibt unsere Server, unser Netzwerk und unseren DDoS-Schutz im Alltag und beantwortet Support-Anfragen rund um die Uhr. Diese Ratgeber entstehen aus dieser Arbeit.
Verwandte Artikel

Website gehackt? Was Sie jetzt Schritt für Schritt tun sollten
Website gehackt? Was Sie jetzt tun sollten: Anzeichen, Sofortmaßnahmen, Passwörter, Schadcode finden, sauberes Backup, WordPress und Schutz vor Angriffen.

Linux Server absichern: Checkliste Schritt für Schritt
Linux Server absichern mit Checkliste: automatische Updates, SSH-Schlüssel, Firewall, Fail2ban, unnötige Dienste, Isolation, Backups und Überwachung.

WireGuard einrichten: Eigenen VPN-Server aufsetzen
WireGuard einrichten: eigener VPN-Server unter Ubuntu mit Schlüsselpaaren, wg0.conf, IP-Weiterleitung und NAT, Client-Konfiguration und QR-Code.