open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Tipps

Fail2ban: Brute-Force-Angriffe auf Server automatisch blockieren

Autor
Fail2ban: Brute-Force-Angriffe auf Server automatisch blockieren

Fail2ban ist ein Open-Source-Sicherheitstool für Linux-Server, das automatisiert bösartige IP-Adressen sperrt, wenn sie verdächtige Aktivitäten wie Brute-Force-Angriffe verursachen. Es ist besonders hilfreich beim Schutz von Diensten wie SSH, FTP, Mailservern oder Webanwendungen und stellt eine wichtige Ergänzung zur Firewall dar.

Warum ist Fail2ban wichtig?

Ein typischer Linux-Server ist dauerhaft über das Internet erreichbar – und damit auch potenziell Ziel automatisierter Angriffe. Besonders häufig betroffen ist der SSH-Dienst, bei dem Angreifer versuchen, mit zufälligen oder systematisch generierten Passwörtern Zugang zu erlangen.

Fail2ban erkennt solche Angriffsversuche anhand von Logdateien und blockiert die IP-Adresse des Angreifers automatisch über die Firewall – meist für einen begrenzten Zeitraum.

Funktionsweise

Fail2ban funktioniert nach einem einfachen Prinzip:

  1. Es überwacht Logdateien (z. B. /var/log/auth.log bei SSH)
  2. Erkennt wiederholte fehlgeschlagene Loginversuche
  3. Reagiert auf diese Erkennung mit einer sogenannten "Ban-Aktion" – meist einem temporären Block über iptables oder nftables

Die Erkennung erfolgt über sogenannte Filter, die auf regulären Ausdrücken basieren. Jede "Jail" überwacht dabei einen spezifischen Dienst oder Pfad.

Installation

Fail2ban ist in den Paketquellen der meisten Distributionen enthalten.

Debian / Ubuntu

sudo apt update
sudo apt install fail2ban

CentOS / RHEL

sudo yum install epel-release
sudo yum install fail2ban

Grundkonfiguration

Die Konfigurationsdateien befinden sich typischerweise unter /etc/fail2ban/. Die Hauptdatei ist:

/etc/fail2ban/jail.conf

Um eigene Anpassungen vorzunehmen, solltest du stattdessen eine Kopie anlegen:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

In dieser Datei kannst du u. a. festlegen:

  • welche Dienste überwacht werden ([sshd], [nginx-http-auth] usw.)
  • nach wie vielen Fehlversuchen eine IP geblockt wird
  • wie lange die Sperre aktiv bleibt

Beispiel:

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

Wichtige Parameter

  • enabled – aktiviert die Jail für den jeweiligen Dienst
  • port – Port, auf dem der Dienst läuft (z. B. ssh)
  • filter – der Name des Filters (wird aus /etc/fail2ban/filter.d/ geladen)
  • logpath – Pfad zur Logdatei
  • maxretry – maximale Anzahl fehlgeschlagener Versuche
  • bantime – Dauer der Sperre in Sekunden

Fail2ban starten und verwalten

Nach der Konfiguration sollte der Dienst neu gestartet werden:

sudo systemctl restart fail2ban

Den aktuellen Status aller aktiven Jails zeigt:

sudo fail2ban-client status

Für eine bestimmte Jail:

sudo fail2ban-client status sshd

Um eine IP manuell zu blockieren:

sudo fail2ban-client set sshd banip 192.0.2.123

Oder zu entblocken:

sudo fail2ban-client set sshd unbanip 192.0.2.123

Erweiterte Nutzung

Fail2ban kann mit verschiedenen Firewall-Backends arbeiten, z. B.:

  • iptables
  • nftables
  • firewalld

Ebenso sind E-Mail-Benachrichtigungen, benutzerdefinierte Aktionen und eigene Filterregeln möglich. Die Filter werden als separate .conf-Dateien in /etc/fail2ban/filter.d/ abgelegt.

Typische Anwendungsfälle

  • Schutz von SSH-Logins
  • Absicherung von Webservern gegen Auth-Brute-Force
  • Schutz von Mailservern (Postfix, Dovecot)
  • Erkennung von 404-Attacken auf bestimmte URLs
  • Integration in Hosting-Umgebungen

Fazit

Fail2ban ist ein bewährtes, leichtgewichtiges und äußerst effektives Werkzeug zur Abwehr automatisierter Angriffe auf Linux-Systeme. Mit wenigen Konfigurationszeilen bietet es einen wichtigen Schutzmechanismus, der auch in komplexeren Infrastrukturen leicht integrierbar ist. Besonders im Zusammenspiel mit Firewalls und sicheren Authentifizierungsmethoden trägt es entscheidend zur Serverhärtung bei.

Weitere Informationen: https://www.fail2ban.org https://github.com/fail2ban/fail2ban