Fail2Ban - klein, aber oho
- von bsting
- 2. Juni 2023
Was ist fail2ban?
Fail2Ban ist eine Open-Source-Software, die entwickelt wurde, um Netzwerke und Server vor Brute-Force-Angriffen und anderen bösartigen Aktivitäten zu schützen. Es arbeitet auf der Ebene der Systemprotokolle, wie z.B. Logdateien, und überwacht diese auf verdächtige Aktivitäten.
Das Hauptziel von Fail2Ban besteht darin, wiederholte fehlgeschlagene Anmeldeversuche zu erkennen und darauf zu reagieren, indem es automatisch Maßnahmen ergreift, um den Zugriff auf das System für den Angreifer zu blockieren. Typischerweise wird dabei die IP-Adresse des Angreifers in der Firewall des Systems gesperrt.
Fail2Ban ist besonders nützlich für Dienste wie SSH (Secure Shell), FTP (File Transfer Protocol), Mailserver und Webserver, die oft das Ziel von Angriffen sind. Es kann konfiguriert werden, um spezifische Protokolle zu überwachen und entsprechende Aktionen durchzuführen, wie z.B. das Blockieren einer IP-Adresse für eine bestimmte Zeitdauer oder das Senden einer Benachrichtigung an den Administrator.
Zwei große Vorteile von fail2ban sind:
- Mehrere Dienste können 'aus einer Hand' geschützt werden
- Die Angriffe erreichen erst gar nicht das Angriffsziel, und können so keinen Schaden anrichten
Installation von fail2ban
Um fail2ban zu installieren, müssen Sie je nach Ihrem Betriebssystem unterschiedliche Schritte befolgen. Hier sind die grundlegenden Schritte für einige gängige Betriebssysteme:
Ubuntu/Debian:
Öffnen Sie das Terminal. Führen Sie den Befehl
sudo apt update
aus um die Paketlisten zu aktualisieren. Führen Sie den Befehl
sudo apt install fail2ban
aus, um fail2ban zu installieren.
Bestätigen Sie die Installation, wenn Sie dazu aufgefordert werden.
CentOS/RHEL:
Öffnen Sie das Terminal. Führen Sie den Befehl
sudo yum install epel-release
aus, um das EPEL-Repository zu installieren (falls nicht bereits vorhanden).
Führen Sie den Befehl
sudo yum install fail2ban
aus, um fail2ban zu installieren.
Bestätigen Sie die Installation, wenn Sie dazu aufgefordert werden.
Arch Linux:
Öffnen Sie das Terminal. Führen Sie den Befehl
sudo pacman -Sy fail2ban
aus, um fail2ban zu installieren. Bestätigen Sie die Installation, wenn Sie dazu aufgefordert werden.
Sobald die Installation abgeschlossen ist, können Sie die fail2ban-Konfiguration an Ihre Bedürfnisse anpassen.
Die Konfigurationsdateien befinden sich normalerweise im Verzeichnis /etc/fail2ban/.
Der fail2ban-Dienst besteht aus mehreren Komponenten. Auf Kommandozeilenebene finden Sie auch die Befehle fail2ban-client und fail2ban-regex vor. Mit fail2ban-client nimmt man während der Laufzeit Kontakt zum eigentliche Server auf. Mit fail2ban-regex kann man ( mehr oder weniger ) bequem überprüfen, ob ein selbst erstellter Regulärer Ausdruck die gewünschten Ergebnisse liefert.
Konfiguration von fail2ban
drwxr-xr-x 6 root root 4096 14. Jun 08:50 . drwxr-xr-x 72 root root 4096 14. Jun 08:17 .. drwxr-xr-x 2 root root 4096 14. Jun 08:18 action.d -rw-r--r-- 1 root root 2816 23. Nov 2020 fail2ban.conf drwxr-xr-x 2 root root 4096 12. Jul 2021 fail2ban.d drwxr-xr-x 3 root root 4096 14. Jun 08:57 filter.d -rw-r--r-- 1 root root 24996 23. Nov 2020 jail.conf drwxr-xr-x 2 root root 4096 14. Jun 08:51 jail.d -rw-r--r-- 1 root root 645 23. Nov 2020 paths-arch.conf -rw-r--r-- 1 root root 2827 23. Nov 2020 paths-common.conf -rw-r--r-- 1 root root 573 23. Nov 2020 paths-debian.conf -rw-r--r-- 1 root root 738 23. Nov 2020 paths-opensuse.conf
Welche Dateien genau in /etc/fail2ban existieren ist abhängig von der eingesetzten Linux-Distribution.
Die Konfiguration des Dienstes findet in der fail2ban.conf statt. Die Konfiguration der zu schützenden Dienste in der jail.conf. Die Filter werden im Verzeichnis /etc/fail2ban/filter.d abgelegt und die eigentlichen Aktionen im Verzeichnis /etc/fail2ban/action.d.
Es wird empfohlen, dass Sie erst mal die jail.conf nach jail.local kopieren:
cd /etc/fail2ban/ cp jail.conf jail.local
Die Hauptkonfigurationsdatei für die einzelnen Dienste ist jail.conf
(oder jail.local
, falls vorhanden), in der Sie verschiedene Parameter anpassen können. Für den Dienst fail2ban an sich ist die Konfigurationsdatei fail2ban.conf zuständig. Öffnen Sie die fail2ban.conf um einige global Optionen anzupassen
- loglevel: Log-Verhalten von fail2ban; Werte von 1 bis 4 geben die Intensität des Loggings an.
- logtarget: Speicherort der Log-Datei(en)
- socket: Ort der Socket-Datei ( Kommunikation von fail2ban-Client und fail2ban-Server )
Um die Dienste an sich zu konfigurieren öffnen Sie die Konfigurationsdatei jail.conf
(oder jail.local
) mit einem Texteditor als Administrator:
bash
sudo nano /etc/fail2ban/jail.local
In der Konfigurationsdatei finden Sie Abschnitte, die als [SECTION_NAME]
gekennzeichnet sind, z. B. [sshd]
für den SSH-Dienst.
Jeder Abschnitt enthält verschiedene Konfigurationsoptionen für die Überwachung und das Sperren von Diensten. Sie können die vorhandenen Abschnitte anpassen oder neue Abschnitte hinzufügen, je nach Ihren Anforderungen.
Überprüfen Sie die folgenden Optionen und passen Sie sie gegebenenfalls an:
ignoreip = <ip> <ip> ... #ACHTUNG!! Konfigurieren Sie hier lokale IP-Adressen oder IP-Ranges damit Sie sich im Fehlerfall nicht selbst aussperren! enabled = true
#Aktiviert oder deaktiviert den Abschnitt.port = <PORT_NUMBER>
#Der überwachte Port für den Dienst.filter = <FILTER_NAME>
#Der Filter, der auf die Logdateien angewendet wird, um fehlgeschlagene Zugriffsversuche zu erkennen.logpath = <LOG_PATH>
#Der Pfad zur Logdatei des Dienstes.maxretry = <MAX_RETRY>
#Die maximale Anzahl von Fehlversuchen, bevor eine Sperre aktiviert wird.bantime = <BAN_TIME>
#Die Dauer der Sperrung in Sekunden.action = <ACTION>
#Die Aktion, die beim Erreichen der Sperrbedingungen ausgeführt werden soll, z. B. das Hinzufügen zur Firewall-Regel.
Speichern Sie die Änderungen und schließen Sie die Datei.
Überprüfen Sie auch die anderen Konfigurationsdateien in /etc/fail2ban/ wenn Sie nicht wissen, woher eine Variable ihren Wert bekommt!
Alternativ zur 'globalen Konfiguration' in jail.local können Sie auch einzelne Dateien in jail.d/
oder filter.d/
erstellen, um spezifischere Anpassungen vorzunehmen.
So können Sie z.B. die Datei xy.conf im Ordner jail.d/ mit folgendem Inhalt anlegen:
[sshd] enabled = true
Die getroffenen Einstellungen in diesen Dateien überschreiben die Einstellungen aus der jail.conf. In diesem Fall wird der Dienst [sshd] aktiviert.
Beachten Sie, dass einige Änderungen möglicherweise Neustarts oder Neuinitialisierungen von fail2ban erfordern.
Starten Sie fail2ban neu, um die Konfigurationsänderungen zu übernehmen:
sudo service fail2ban restart
Die oben genannten Schritte decken die grundlegende Konfiguration von fail2ban ab, was in 99% der Fälle auch absolut ausreichend ist.
Tipps zur Nutzung von fail2ban
Der fail2ban-Dienst lässt sich wunderbar in Webmin integrieren. In Webmin einfach die Module aktualisieren, und Sie finden unter <Netzwerk> den Eintrag <Fail2Ban Intrusionsdetektor>:
- Vergessen Sie nicht ihre IP-Adresse in den Abschnitt <ignoreip> in jail.conf einzutragen!
Irgendwann werden Sie sich mit Sicherheit selbst aussperren ... - Wenn Sie sich plötzlich nicht mehr mit einem bestimmten Dienst verbinden können, dann sehen Sie in den gebannten IP-Adressen nach.
- Nach einem Neustart des Dienstes - oder des Servers - werden die Regeln in der Firewall immer an erster Stelle wieder eingefügt.
D.h. eigene Regeln werden nach unten ( hinten ) verschoben! Das bringt nicht immer das gewünschte Ergebnis. - Setzen Sie die Angaben für <bantime> und <findtime> ruhig etwas höher!