Wenn man mit der Serververwaltung beginnt, sieht man sich zahlreichen externen Angriffen gegenüber. SSH-Brute-Force-Angriffe, maßlose Anmeldeversuche auf Webanwendungen und Port-Scans sind alltägliche Bedrohungen. Diese Gefahren unbeaufsichtigt zu lassen kann letztendlich zu einem Systemeinbruch führen. Fail2Ban ist eine leichte und leistungsstarke, auf Linux basierende Intrusion Prevention Lösung, die diese Probleme löst.

Fail2Ban erkennt und sperrt automatisch verdächtige IPs. So können Administratoren den Server ohne großen Aufwand schützen.

Installationsanleitung für Fail2Ban

Fail2Ban wird in den meisten Linux-Distributionen als Paket angeboten, was die Installation sehr einfach macht.

Ubuntu/Debian-basierte Systeme

sudo apt update
sudo apt install fail2ban

Sobald die Installation abgeschlossen ist, starten Sie den Dienst und stellen Sie ein, dass er beim Booten automatisch startet.

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Fail2Ban Übersicht

Einstellungen für Fail2Ban

Fail2Ban verwendet die Datei /etc/fail2ban/jail.conf als Standardkonfigurationsdatei. Es wird jedoch empfohlen, die Datei nicht direkt zu ändern, sondern die Datei /etc/fail2ban/jail.local zu erstellen, um Anpassungen vorzunehmen.

Erstellen der jail.local-Datei:

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

Wichtige Einstellungselemente: - bantime: Sperrdauer (in Sekunden) - findtime: Zeitraum, in dem angreifende Versuche berücksichtigt werden (in Sekunden) - maxretry: zulässige maximale Fehlversuche

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

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

Beispiele von praktischen Anwendungen

1. Blockierung von SSH-Brute-Force-Angriffen

Durch die oben genannte Konfiguration der [sshd] Jail wird die jeweilige IP für eine Stunde gesperrt, wenn mehr als 5 fehlgeschlagene Anmeldeversuche auftreten.

2. Blockierung von Anmeldeangriffen auf Apache

[apache-auth]
enabled = true
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3

Bei 3 fehlgeschlagenen Authentifizierungsversuchen auf dem Webserver erfolgt eine Sperrung.

Überwachung von Fail2Ban

Es gibt mehrere Möglichkeiten, um zu überprüfen, ob Fail2Ban ordnungsgemäß funktioniert.

1. Überprüfung des Status über fail2ban-client

Sie können den Status eines bestimmten Jails (z. B. sshd) überprüfen.

sudo fail2ban-client status sshd

Beispielausgabe:

Status für das Jail: sshd
|- Filter
|  |- Derzeit fehlgeschlagen: 2
|  |- Insgesamt fehlgeschlagen: 15
|  `- Datei Liste:    /var/log/auth.log
`- Aktionen
   |- Derzeit gesperrt: 1
   |- Insgesamt gesperrt: 3
   `- Gesperrte IP-Liste: 192.168.1.100

2. Überwachung der Protokolldatei

Die Vorgänge von Fail2Ban werden in der Datei /var/log/fail2ban.log protokolliert.

tail -f /var/log/fail2ban.log

Durch diesen Prozess können Sperr- und Entsperreereignisse in Echtzeit überwacht werden.

Funktionsweise von Fail2Ban

  1. Protokollüberwachung: Fail2Ban überwacht fortlaufend die festgelegten Protokolldateien. (z. B. /var/log/auth.log, /var/log/apache2/error.log)

  2. Anwendung von Filtern: Er erkennt spezifische Muster (z. B. fehlgeschlagene Anmeldungen, Authentifizierungsfehler).

  3. Durchführung von Maßnahmen: Wenn die maximale Anzahl von maxretry überschritten wird, sperrt er die betreffende IP über iptables oder führt Befehle für firewalld, nftables oder andere Firewall-Befehle aus.

  4. Automatische Entsperrung: Nach Ablauf der bantime wird die Sperrung automatisch aufgehoben.

Fail2Ban hat eine modulare Struktur, die unabhängige Überwachungs- und Sperreinstellungen für verschiedene Dienste (jails) ermöglicht, wodurch die Sicherheit über die einfache SSH-Schutzmethode hinaus erhöht wird.

Einstellen einer permanenten Sperrung für SSH-Angriffe

SSH-Angreifer müssen unbedingt hartnäckig behandelt werden. Bei Fail2Ban können Sie bantime auf -1 setzen, um eine permanente Sperrung einzurichten.

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
bantime = -1
findtime = 600
maxretry = 5

Mit dieser Einstellung wird jede IP, die mehr als 5 fehlgeschlagene SSH-Anmeldungen hat, dauerhaft gesperrt, wodurch der Zugang zum Server unmöglich wird.

[Erweiterter Tipp] Verständnis der Standard-Sperrfunktionen von Fail2Ban

Fail2Ban funktioniert standardmäßig auch ohne separate Definition der action. Der Grund dafür ist, dass die Standardkonfiguration Befehle zum Sperren über iptables enthält.

  • Wenn keine separate action angegeben wird, wird die Einstellung action = %(action_)s aus dem [DEFAULT]-Abschnitt angewendet.
  • %(action_)s führt intern iptables-Befehle aus, um bösartige IPs zu sperren.
  • Daher erfolgt die IP-Sperrung auch ohne separate Angaben zur action über iptables.

Beispiel eines Standard-Sperrbefehls (siehe action_.conf)

iptables -I INPUT -s <ip> -j REJECT

Das bedeutet, dass Fail2Ban automatisch iptables steuert, um angreifende IPs zu sperren.

Hinweis: - Wenn Sie andere Firewall-Tools wie UFW oder firewalld verwenden möchten, müssen Sie action explizit festlegen. - Außerdem könnten Sperrregeln nach einem Serverneustart verschwinden. Es ist ratsam, Fail2Ban so einzustellen, dass der Dienst beim Booten automatisch startet.


Zusätzlich können Sie verschiedene Filter selbst erstellen oder E-Mail-Benachrichtigungen für erweiterte Einstellungen einrichten.


Sobald ein Server in die Welt des Internets exponiert wird, ist Sicherheit kein Luxus mehr, sondern eine Notwendigkeit.
Ein Moment der Nachlässigkeit kann schwerwiegende Folgen nach sich ziehen.
Fail2Ban wird ein zuverlässiger Schild sein, der diese Bedrohungen im Voraus abwehrt.
Vergessen Sie nicht, dass gerade in diesem Moment jemand auf Ihren Server abzielt.