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 demmaxretryEreignisse auftreten müssen, damit eine Sperre greift. Standardmäßig 600 Sekunden (10 Minuten).enabled— auftruesetzen, um einen Jail zu aktivieren, auffalse, um ihn zu deaktivieren.port— der Port, auf dem Ihr Dienst lauscht. Für SSH ist das22oder der Aliasssh.filter— der Name der Filter-Datei mit den Regex-Mustern, die Fail2ban zur Erkennung verdächtiger Ereignisse verwendet. Dersshd-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.logaufgezeichnet.
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 Standardwert127.0.0.1/8ist 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
findtimeerhöhen sollten: Botnetze, die „langsame Brute-Force"-Angriffe durchführen, sind gezielt darauf ausgelegt, das Standard-Zeitfenster von 10 Minuten zu umgehen. Beimaxretry = 6kann 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 vonfindtimeauf 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!