So richtest du Fail2Ban auf deinem Ubuntu-Server ein und schützt ihn vor Brute-Force-Angriffen – von der Installation bis zur individuellen Konfiguration, verständlich erklärt auch für Einsteiger.
In meiner Serie Projekt Linux-Webserver – Teil 6 hatte ich Fail2Ban nur kurz erwähnt, weil es für den dort beschriebenen, rein lokalen Entwicklungsserver nicht zwingend notwendig ist. Sobald dein Server aber aus dem Internet erreichbar ist – zum Beispiel, weil du ihn produktiv nutzt oder von unterwegs per SSH darauf zugreifen willst – wird Fail2Ban schnell zu einem wichtigen Baustein deiner Serverabsicherung. Diesen Baustein schauen wir uns in diesem Beitrag ausführlich an.
Was ist Fail2Ban und warum brauchst du es?
Sobald ein Server aus dem Internet erreichbar ist, probieren automatisierte Bots rund um die Uhr, sich per SSH mit erratenen Benutzernamen und Passwörtern anzumelden. Das nennt man einen Brute-Force-Angriff. Selbst mit einem sicheren Passwort verursacht das unnötige Serverlast und volle Log-Dateien.
Fail2Ban löst dieses Problem, indem es die Log-Dateien deines Servers laufend beobachtet. Erkennt es innerhalb eines bestimmten Zeitraums mehrere fehlgeschlagene Anmeldeversuche von derselben IP-Adresse, sperrt es diese IP-Adresse automatisch für eine festgelegte Zeit über die Firewall. Der Angreifer kann sich dann schlicht nicht mehr mit deinem Server verbinden.
Das Beste daran: Einmal eingerichtet, läuft Fail2Ban komplett automatisch im Hintergrund, ohne dass du selbst eingreifen musst.

Fail2Ban installieren
Fail2Ban ist in den offiziellen Ubuntu-Paketquellen enthalten und lässt sich mit einem einzigen Befehl installieren:
sudo apt install fail2ban -yNach der Installation startet Fail2Ban automatisch mit sinnvollen Grundeinstellungen und überwacht bereits den SSH-Zugang. Ob der Dienst läuft, prüfst du mit:
sudo systemctl status fail2banSteht dort „active (running)“ in grün, läuft alles wie erwartet.
Grundkonzept der Config-Dateien
Bevor wir Einstellungen ändern, ein wichtiger Punkt vorab: Fail2Ban speichert seine Grundkonfiguration in der Datei /etc/fail2ban/jail.conf. Diese Datei wird aber bei jedem Fail2Ban-Update überschrieben – eigene Änderungen dort wären also beim nächsten Update wieder weg.
Wichtiger Hinweis, bevor wir weitermachen: Bearbeite niemals direkt die jail.conf. Stattdessen kopierst du sie einmalig in eine jail.local-Datei, die von Fail2Ban automatisch bevorzugt wird und bei Updates unangetastet bleibt:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.localAb jetzt bearbeiten wir ausschließlich diese jail.local-Datei.
Die wichtigsten Einstellungen im Überblick
In der jail.local findest du ganz oben den Abschnitt . Dort gelten folgende Einstellungen für alle Dienste, die Fail2Ban überwacht, sofern du sie nicht später für einen einzelnen Dienst überschreibst.
| Einstellung | Bedeutung |
| bantime | Wie lange eine IP-Adresse gesperrt bleibt, z. B. bantime = 1h. Werte wie 10m, 1h oder 1d sind möglich. Der Standardwert ist oft nur 10 Minuten – für echten Schutz meist zu kurz. |
| findtime | Das Zeitfenster, in dem die Fehlversuche gezählt werden, z. B. findtime = 10m. Innerhalb dieser Zeit müssen die Fehlversuche passieren, sonst beginnt die Zählung wieder von vorn. |
| maxretry | Wie viele Fehlversuche erlaubt sind, bevor gesperrt wird, z. B. maxretry = 5. Bei SSH sind Werte zwischen 3 und 5 üblich. |
| ignoreip | Eine Whitelist mit IP-Adressen/Netzwerken, die niemals gesperrt werden, z. B. ignoreip = 127.0.0.1/8 ::1 192.168.0.0/24. Wichtig, damit du dich nicht versehentlich selbst aussperrst. |
Wichtiger Hinweis, bevor wir weitermachen: Trag unbedingt dein eigenes lokales Netzwerk bzw. deine feste IP-Adresse bei ignoreip ein, bevor du Fail2Ban aktivierst. Vertippst du dich mehrfach beim eigenen Login, sperrt dich Fail2Ban sonst genauso aus wie einen Angreifer.
Den SSH-Zugang gezielt konfigurieren
Neben den globalen -Werten kannst du für jeden Dienst (in Fail2Ban „Jail“ genannt) eigene, individuelle Einstellungen festlegen, die die globalen Werte überschreiben. Für SSH suchst du in der jail.local den Abschnitt und passt ihn so an:
enabled = true
port = 22
maxretry = 3
bantime = 1hDamit gilt für SSH ein strengerer Wert (3 statt 5 Fehlversuche), während andere, später hinzugefügte Dienste weiterhin die globalen Standardwerte nutzen.
Nach jeder Änderung an der jail.local muss Fail2Ban neu gestartet werden, damit die neuen Einstellungen aktiv werden:
sudo systemctl restart fail2banFail2Ban im Alltag verwalten
Mit ein paar einfachen Befehlen behältst du im Alltag den Überblick, was Fail2Ban gerade tut:
| Befehl | Bedeutung |
| sudo fail2ban-client status | Zeigt eine Übersicht aller aktiven Jails. |
| sudo fail2ban-client status sshd | Zeigt Details zum SSH-Jail, inklusive aller aktuell gesperrten IP-Adressen. |
| sudo fail2ban-client set sshd unbanip IP-ADRESSE | Entsperrt eine bestimmte IP-Adresse manuell wieder, z. B. falls du dich selbst versehentlich ausgesperrt hast. |
Versehentlich gesperrte Nutzer wieder freischalten
Es kommt schnell mal vor, dass man sich selbst beim Passwort vertippt und nach ein paar Fehlversuchen plötzlich ausgesperrt ist. Das lässt sich in drei Schritten beheben:
1. Gesperrte IP-Adressen anzeigen lassen. Mit folgendem Befehl siehst du alle aktuell gesperrten IP-Adressen für den SSH-Jail:
sudo fail2ban-client status sshdIn der Ausgabe findest du unter „Banned IP list“ alle betroffenen Adressen.
2. Die passende IP-Adresse entsperren. Ersetze IP-ADRESSE durch die Adresse aus Schritt 1:
sudo fail2ban-client set sshd unbanip IP-ADRESSEDie Sperre ist damit sofort aufgehoben, ein Neustart von Fail2Ban ist dafür nicht nötig.
3. Falls kein Zugriff mehr möglich ist: Solltest du komplett ausgesperrt sein und auch sonst niemand mehr per SSH auf den Server zugreifen kann, hilft nur der Zugriff über einen anderen Weg – etwa die Konsole deines Hosters im Kundenbereich, oder bei einer virtuellen Maschine die VirtualBox-Konsole direkt am Fenster der VM. Von dort aus kannst du dich lokal anmelden, ohne über SSH zu gehen, und die Schritte 1 und 2 von dort ausführen.
Abschluss Fail2Ban
Mit diesen Grundlagen hast du Fail2Ban installiert, verstehst den Unterschied zwischen jail.conf und jail.local und kannst die wichtigsten Einstellungen (bantime, findtime, maxretry, ignoreip) an deine eigenen Bedürfnisse anpassen. Für einen aus dem Internet erreichbaren Server ist das ein einfacher, aber wirkungsvoller Baustein gegen automatisierte Angriffsversuche.


0 Kommentare