Gerade Server, die über SSH, Webserver, Mailserver oder andere öffentlich erreichbare Dienste verfügen, werden permanent von Bots und Angreifern gescannt. Bereits wenige Minuten nach der Bereitstellung eines Servers sind oft die ersten Login-Versuche im Log sichtbar.
In diesem Artikel zeige ich ausführlich, wie du Fail2Ban unter Debian 13 installierst, konfigurierst und optimal mit UFW kombinierst.
Was ist Fail2Ban?
Fail2Ban analysiert Logdateien und sucht nach definierten Mustern.
Beispiele:
- Falsche SSH-Passwörter
- Brute-Force-Angriffe auf Webseiten
- Fehlgeschlagene FTP-Anmeldungen
- Mailserver-Angriffe
- Nextcloud-Loginversuche
Wird ein Schwellwert überschritten, sperrt Fail2Ban die IP-Adresse automatisch für einen festgelegten Zeitraum.
Typischer Ablauf:
- Angreifer versucht 5-mal SSH-Passwörter zu erraten.
- Fail2Ban erkennt die Fehlversuche.
- Die IP wird in der Firewall blockiert.
- Nach Ablauf der Sperrzeit wird die Blockierung wieder entfernt.
Warum Fail2Ban verwenden?
Vorteile:
✅ Schutz vor Brute-Force-Angriffen
✅ Automatische IP-Sperrung
✅ Unterstützt zahlreiche Dienste
✅ Geringer Ressourcenverbrauch
✅ Einfache Integration in UFW
✅ Open Source
System aktualisieren
Vor der Installation sollte Debian aktualisiert werden:
sudo apt update sudo apt upgrade -y
Fail2Ban installieren
Unter Debian 13 befindet sich Fail2Ban direkt in den offiziellen Paketquellen.
Installation:
sudo apt install fail2ban -y
Anschließend prüfen:
fail2ban-client -V
Beispiel:
1.1.x
Dienststatus prüfen
Nach der Installation startet der Dienst automatisch.
Status anzeigen:
sudo systemctl status fail2ban
Beispiel:
● fail2ban.service - Fail2Ban Service Loaded: loaded Active: active (running)
Automatischen Start aktivieren
Normalerweise bereits aktiv:
sudo systemctl enable fail2ban
Konfigurationsdateien verstehen
Wichtige Verzeichnisse:
/etc/fail2ban/
Inhalt:
action.d/ filter.d/ jail.conf jail.d/
Niemals jail.conf bearbeiten
Die Datei:
/etc/fail2ban/jail.conf
wird bei Updates überschrieben.
Stattdessen:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
oder besser:
sudo nano /etc/fail2ban/jail.local
Grundkonfiguration erstellen
Datei anlegen:
sudo nano /etc/fail2ban/jail.local
Inhalt:
[DEFAULT] ignoreip = 127.0.0.1/8 ::1 bantime = 1h findtime = 10m maxretry = 5 banaction = ufw
Bedeutung:
EinstellungBedeutungbantimeSperrdauerfindtimeZeitraummaxretryFehlversucheignoreipNie sperrenbanactionSperrmethodeEigene IP von Sperren ausnehmen
Sehr wichtig:
ignoreip = 127.0.0.1/8 ::1 1.2.3.4
Oder ganzes Netzwerk:
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
SSH-Schutz aktivieren
Unterhalb der DEFAULT-Konfiguration:
[sshd] enabled = true port = ssh logpath = %(sshd_log)s backend = systemd
Speichern.
Konfiguration testen
sudo fail2ban-client -t
Ausgabe:
OK
Fail2Ban neu starten
sudo systemctl restart fail2ban
Status prüfen:
sudo systemctl status fail2ban
Aktive Jails anzeigen
Alle aktiven Regeln:
sudo fail2ban-client status
Beispiel:
Status |- Number of jail: 1 `- Jail list: sshd
Details einer Jail anzeigen
sudo fail2ban-client status sshd
Beispiel:
Status for the jail: sshd Currently failed: 2 Currently banned: 1
Gebannte IPs anzeigen
sudo fail2ban-client status sshd
Ausgabe:
Banned IP list: 203.0.113.10 198.51.100.15
IP-Adresse manuell sperren
sudo fail2ban-client set sshd banip 1.2.3.4
IP-Adresse entsperren
sudo fail2ban-client set sshd unbanip 1.2.3.4
Integration mit UFW
Falls UFW bereits installiert ist:
Firewallstatus prüfen:
sudo ufw status
Fail2Ban kann direkt UFW-Regeln erzeugen.
Empfohlene Einstellung:
banaction = ufw
SSH-Port geändert?
Falls SSH beispielsweise auf Port 2222 läuft:
[sshd] enabled = true port = 2222 backend = systemd
Danach:
sudo systemctl restart fail2ban
Permanente Sperren einrichten
Für besonders aggressive Bots:
bantime = 7d
Oder:
bantime = -1
Unbegrenzte Sperre.
Wiederholungstäter länger sperren
Moderne Fail2Ban-Versionen unterstützen inkrementelle Sperrzeiten.
bantime.increment = true bantime.factor = 2
Beispiel:
AngriffSperre1. Mal1 Stunde2. Mal2 Stunden3. Mal4 Stunden4. Mal8 StundenLogdateien prüfen
Fail2Ban schreibt nach:
sudo tail -f /var/log/fail2ban.log
Beispiel:
Ban 203.0.113.10 Unban 203.0.113.10
Nützliche Befehle
Dienst starten:
sudo systemctl start fail2ban
Dienst stoppen:
sudo systemctl stop fail2ban
Dienst neu laden:
sudo systemctl reload fail2ban
Konfiguration testen:
sudo fail2ban-client -t
Status:
sudo fail2ban-client status
Empfohlene Konfiguration für Debian-Server
[DEFAULT] ignoreip = 127.0.0.1/8 ::1 banaction = ufw findtime = 10m maxretry = 5 bantime = 1h bantime.increment = true bantime.factor = 2 [sshd] enabled = true port = ssh backend = systemd
Zusätzliche Schutzmaßnahmen
Fail2Ban ersetzt keine sichere Serverkonfiguration.
Zusätzlich empfehlenswert:
- SSH-Schlüssel statt Passwörter verwenden
- Root-Login deaktivieren
- SSH-Port ändern (z. B. 2222)
- UFW aktivieren
- Regelmäßige Updates installieren
- Starke Passwörter verwenden
- Optional einen Honeypot wie Cowrie einsetzen
Fail2Ban gehört auf praktisch jeden öffentlich erreichbaren Debian-Server. Die Installation dauert nur wenige Minuten, erhöht aber die Sicherheit erheblich. Besonders in Kombination mit UFW, einem geänderten SSH-Port und SSH-Schlüsseln werden die meisten automatisierten Brute-Force-Angriffe bereits im Ansatz gestoppt.
Für typische Debian-13-Server reicht oft schon eine einfache SSH-Jail aus, um täglich tausende automatisierte Loginversuche zuverlässig abzuwehren. Ergänzt um inkrementelle Sperrzeiten und eine saubere Firewall-Konfiguration erhältst du einen sehr effektiven Basisschutz gegen die häufigsten Angriffe aus dem Internet.