Fail2ban installieren und konfigurieren

So schützen Sie Ihren SSH-Server mit Fail2ban vor Brute-Force-Angriffen.

Fail2ban ist ein Daemon, der Ihre Log-Dateien überwacht und IP-Adressen mit verdächtigem Verhalten automatisch sperrt — zu viele fehlgeschlagene Anmeldeversuche, Port-Scans und ähnliche Muster. Es ist eine der einfachsten und wirkungsvollsten Methoden, um Brute-Force-Angriffe auf Ihren SSH-Server abzuwehren.

Installation

Ubuntu / Debian:

apt-get install fail2ban

CentOS:

yum install fail2ban

Struktur der Konfiguration

Fail2ban hat zwei zentrale Konfigurationsdateien:

  • /etc/fail2ban/fail2ban.conf — steuert, wie der Fail2ban-Prozess selbst gestartet wird und läuft
  • /etc/fail2ban/jail.conf — definiert Schutzregeln für bestimmte Dienste, einschließlich SSH

Die Datei jail.conf ist in Abschnitte unterteilt, die als Jails bezeichnet werden — jeder zielt auf einen bestimmten Dienst und Angriffstyp ab:

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 600
maxretry = 3
banaction = iptables-multiport

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Einstellungen im Abschnitt [DEFAULT] gelten für alle Jails, sofern sie in einem spezifischen Abschnitt nicht ausdrücklich überschrieben werden.

Der [ssh]-Jail schützt vor wiederholten fehlgeschlagenen Anmeldeversuchen — dem klassischen Brute-Force-Angriff.

Erklärung der wichtigsten Parameter

  • ignoreip — IP-Adressen, die niemals gesperrt werden. Akzeptiert eine leerzeichen-getrennte Liste von IPs, Subnetzmasken oder DNS-Namen.
  • bantime — wie lange (in Sekunden) eine IP gesperrt bleibt, bevor sie automatisch freigegeben wird.
  • maxretry — die Anzahl übereinstimmender Ereignisse, die eine Sperre auslöst. Für [ssh] ist das die Anzahl fehlgeschlagener Anmeldeversuche.
  • findtime — das Zeitfenster (in Sekunden), in dem maxretry Ereignisse auftreten müssen, damit eine Sperre greift. Standardmäßig 600 Sekunden (10 Minuten).
  • enabled — auf true setzen, um einen Jail zu aktivieren, auf false, um ihn zu deaktivieren.
  • port — der Port, auf dem Ihr Dienst lauscht. Für SSH ist das 22 oder der Alias ssh.
  • filter — der Name der Filter-Datei mit den Regex-Mustern, die Fail2ban zur Erkennung verdächtiger Ereignisse verwendet. Der sshd-Filter liegt unter /etc/fail2ban/filter.d/sshd.conf.
  • logpath — die Log-Datei, die Fail2ban überwacht. Alle Anmeldeaktivitäten (erfolgreiche und fehlgeschlagene) werden standardmäßig in /var/log/auth.log aufgezeichnet.

Empfehlungen zur Konfiguration

Bearbeiten Sie jail.conf niemals direkt. Fail2ban ist dafür ausgelegt, über .local-Dateien angepasst zu werden — sie werden automatisch geladen und haben Vorrang vor den Standardwerten. So überleben Ihre Änderungen auch Paket-Updates.

Erstellen Sie Ihre eigene Override-Datei:

nano /etc/fail2ban/jail.local

Hier ist eine solide Ausgangskonfiguration:

[DEFAULT]
# Die statische IP Ihres Servers — verhindert, dass Sie sich versehentlich selbst sperren.
# Falls Sie ignoreip hier nicht setzen, kommentieren Sie den Parameter in jail.conf aus.
ignoreip = 57.66.158.131

[ssh]
# Wenn innerhalb von 1 Stunde...
findtime  = 3600
# ...6 fehlgeschlagene Anmeldeversuche auftreten...
maxretry  = 6
# ...wird diese IP für 24 Stunden gesperrt.
bantime   = 86400

Warum Sie ignoreip ändern sollten: Der Standardwert 127.0.0.1/8 ist eine Sicherheitslücke auf Shared-Servern. Wenn ein Angreifer Zugriff auf einen beliebigen Shell-Account auf dem System erlangt, kann er ein Brute-Force-Tool lokal ausführen — und Fail2ban ignoriert es, weil der Datenverkehr scheinbar von localhost kommt.

Warum Sie findtime erhöhen sollten: Botnetze, die „langsame Brute-Force"-Angriffe durchführen, sind gezielt darauf ausgelegt, das Standard-Zeitfenster von 10 Minuten zu umgehen. Bei maxretry = 6 kann ein Angreifer 5 Passwörter ausprobieren, 10 Minuten warten, weitere 5 versuchen und dieses Muster beliebig oft wiederholen, ohne jemals gesperrt zu werden. Das Erhöhen von findtime auf eine Stunde oder mehr schließt diese Lücke.

Fail2ban neu starten

Sobald Ihre Konfiguration steht, starten Sie den Dienst neu:

service fail2ban restart

Hilfe

Bei Fragen oder wenn Sie Unterstützung brauchen, erreichen Sie uns jederzeit über das Ticketsystem — wir helfen Ihnen gern weiter!

Hilfe benötigt?Unsere Ingenieure helfen Ihnen kostenlos bei jeder Frage in wenigen MinutenKontaktieren Sie uns