Mit der kostenlosen Open-Source-Software Fail2ban können wir Linux-Server effektiv vor Brute-Force-Attacken und Malware-Angriffen schützen. Nach der Installation und Einrichtung läuft der IPS-Dienst (Intrusion Prevention Software) still und unauffällig im Hintergrund, überwacht dabei Logeinträge und erkennt frühzeitig Angriffe, dessen verursachende IP-Adressen umgehend blockiert werden.
So werden DDOS-Angriffe verhindert, FTP- und SSH-Anmeldungen vor Fremdzugriff geschützt, da zu viele fehlgeschlagene Anmeldeversuche mit einer zeitlichen Sperre beantwortet werden (Bann). Folglich wird jede von der angreifenden IP-Adresse stammende Anfrage abgelehnt und Angriffe auf den Linux-Server verhindert.
Neben der Härtung eines Linux basierten Servers, dessen Dienst über das Internet erreichbar ist, sind Maßnahmen zur Serversicherheit unerlässlich. Jeder Server, der dem Internet ausgesetzt ist, öffnet auch eine Tür für Angreifer. Das muss nicht immer der bösartige Hacker, wie im Film dargestellt sein, es sind häufig vollständig automatisierte Bots, die mit Scripts arbeiten, um bekannte Schwachstellen von Webservices und auf dem Server bereitgestellte Internet-Dienste ausnutzen.
Die Fail2ban-Software wurde mit Python realisiert und unterstützt mehrere Firewall-Backends (ufw, firewalld und iptables). In dieser Anleitung installieren wir Fail2ban auf einen aktuellen Ubuntu 22.04 Server.
Die Installation und Konfiguration der IPS-Software ist auch auf Debian-basierten Servern und anderen Distributionen möglich. Fail2ban kann dazu dienen, WordPress-Server, Apache- und Nginx-Webserver, sowie Datenbank-Server zu schützen. Im Prinzip eignet sich Fail2ban für alle Server, die über das Internet erreichbar sind.
Inhaltsverzeichnis: Fail2ban installieren und konfigurieren: Server effektiv gegen Angriffe schützen
Fail2ban auf Linux Ubuntu installieren: Firewall Konfigurationen (Schritt 1.)
Bevor wir die Installation von Fail2ban anstoßen, muss zuerst die UFW-Firewall von unserem Ubuntu-Server eingerichtet werden. Dafür werden die notwendigen Pakete installiert und einige Konfigurationen vorgenommen. Folge dieser Schritt-für-Schritt-Anleitung, um die notwendigen Einstellungen zu übernehmen.
Die UFW-Firewall ist die standardmäßige Ubuntu-Firewall, die üblicherweise bereits nach der Installation einer aktuellen Linux Ubuntu Distribution auf dem System installiert ist. Überprüfe den Status mit dem folgenden Befehl:
sudo ufw status
Ist die Firewall bereits installiert, jedoch noch nicht gestartet, wird die folgende Ausgabemeldung ausgegeben „Status: inactive“. Wird die Meldung „Command ufw not found“ angezeigt, ist die UFW-Firewall noch nicht auf dem Server installiert.
UFW-Firewall installieren:
sudo apt install ufw -y
Ist die Firewall auf dem Server installiert, müssen wir noch die Regeln für den SSH-Dienst der UFW-Firewall hinzufügen:
sudo ufw allow ssh
Führe den folgenden Befehl aus, um die UFW-Firewall auf dem Server zu aktivieren:
sudo ufw enable
Während die Firewall startet, muss die Operation einmalig mit „Y“ bestätigt werden.
Überprüfe den Status der UFW-Firewall:
sudo ufw status
Wird eine Ausgabemeldung mit dem „Status: active“ angezeigt und ist der Port 22/TCP für den Zugriff zugelassen (ALLOW), dann ist die Einrichtung der UFW-Firewall abgeschlossen.
Installation von Fail2ban auf Linux Ubuntu 22.04 (Schritt 2.)
Nachdem die UFW-Firewall unter Linux Ubuntu 22.04 erfolgreich installiert und konfiguriert wurde, können wir uns jetzt der Installation von Fail2ban widmen. Zuerst aktualisieren wir das Ubuntu-Repository mit diesem Befehl:
sudo apt update
Jetzt kann Fail2ban auf den Linux-Server installiert werden. Da die Software bereits Teil von dem Standard-Ubuntu-Repository ist, können wir die Installation mit diesem Befehl durchführen:
sudo apt install fail2ban -y
Sobald die Installation abgeschlossen ist, aktiviere den Fail2ban Service und starte den Dienst mit diesen beiden Befehlen:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Überprüfe nun, ob der Service läuft und die Ausgabemeldung „active (running)“ über die Konsole ausgegeben wird:
sudo systemctl status fail2ban
Fail2ban Konfigurationen vornehmen (Schritt 3.)
Nachdem die Installation von Fail2ban abgeschlossen ist, werden wir noch einige Konfigurationen vornehmen, die für den Betrieb empfohlen sind. Es ist wichtig zu wissen, dass die gesamte Konfiguration von Fail2ban im Verzeichnis /etc/fail2ban gespeichert wird.
Wir werden in dieser Installationsanleitung zwar einige Basis-Konfigurationen und Einstellungen für den Betrieb vornehmen, die Struktur und den detaillierten Aufbau der Konfigurationsdateien zu kennen ist für die Verwendung von Fail2ban jedoch unerlässlich:
- fail2ban.conf – Die Hauptkonfigurationsdatei von Fail2ban
- jail.conf – Erlaubt Konfiguration für den fail2ban-Server (Jail-Konfigurationen)
- action.d – Erlaubt zusätzliche Einstellungen wie Mail-Benachrichtigungen und Firewall-Konfigurationen
- jail.d – Enthält weitere Konfigurationen z.B. für IP-Adress-Regeln, Bannregeln usw.
Konfigurationen sollten hierbei nicht an den *conf-Dateien selbst erfolgen, sondern lediglich als Default-Konfiguration-Templates dienen, von denen Kopien erstellt werden, die folglich für eigene Anpassungen verwendet werden.
Beginnen wir damit, eine Kopie von jail.d zu erstellen, um diese mit dem Nano-Editor für Fail2ban zu konfigurieren:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Die soeben kopierte Datei öffnen wir mit diesem Befehl mit dem Nano-Editor, um wichtige Einstellungen vorzunehmen:
sudo nano /etc/fail2ban/jail.local
Bannregeln festlegen:
Zuerst sollte konfiguriert werden, welche IP-Adressen von den Bannregeln freigesprochen sein sollen, damit wir uns nicht selbst vom Server ausschließen. Suche dafür die Zeile „#ignoreip“ und entferne die Raute am Anfang der Zeile (auskommentieren), um diese Funktion zu aktivieren.
ignoreip = 127.0.0.1/8 ::1 192.168.178.0/24
Ergänze die Zeile, wie auf dem Beispiel ersichtlich. Füge einzelne IP-Adressen oder ganze IP-Adress-Klassen hinzu, in meinem Beispiel wurde das komplette lokale Netzwerk den zu ignorierenden IPs hinzugefügt.
Weiter ist es angebracht, die Banneinstellungen so zu konfigurieren, dass eine verdächtige IP-Adresse bis zu 24-Stunden blockiert wird. Einstellungen sind natürlich den eigenen Ansprüchen anzupassen:
bantime = 1d
findtime = 10m
maxretry = 5
E-Mail-Benachrichtigungen konfigurieren:
Damit wir im Falle eines Angriffes auch benachrichtigt werden, können wir noch E-Mail-Einstellungen in der Konfigurationsdatei von Fail2ban hinterlegen. Angriffe auf unseren Server würden zwar trotzdem abgewehrt werden, wir würden es aber nicht merken.
Innerhalb der Datei sollte also noch die Ziel-E-Mail und die Sende-Mail hinterlegt werden. Im Abschnitt # ACTIONS sind diese Einstellungen vorzufinden:
action = %(action_mw)s
destemail = fail2ban@beispielmail.de
sender = root@beispielmail.de
Firewall Integration:
Im selben Abschnitt, nur einige Einträge weiter unten, befindet sich die Zeile für die Integration der Firewall. Konfiguriere den Wert in der Zeile „banaction“ wie angegeben:
banaction = ufw
SSH Konfigurationen vornehmen:
Damit der Server auch vor unberechtigten SSH-Zugriffen geschützt wird, können unter dem Abschnitt [SSHD] Einstellungen vorgenommen werden.
Füge die folgenden Zeilen manuell in den dafür vorgesehen Bereich ein (siehe Beispiel):
[SSHD]
enabled = true
maxretry = 3
findtime = 1d
bantime = 1d
Nach drei fehlerhaften Anmeldeversuchen über SSH wird die IP-Adresse in diesem Beispiel für 24-Stunden blockiert. Damit sind die geläufigsten Fail2ban-Konfigurationen abgeschlossen. Es liegen Abschnitte für Apache, Nginx, Webmin und viele weitere Serverdienste vor. Hier können individuelle Regeln gesetzt werden. Speichere die Änderungen ab (STRG +S) und verlasse den Nano-Editor wieder (STRG +X).
Starte den Fail2ban Dienst jetzt einmal neu, um die Änderungen wirksam zu machen:
sudo systemctl restart fail2ban
Überprüfen der Fail2ban Installation und Befehle für Statusabfragen (Schritt 4.)
Um die Installation und die Funktionalität von Fail2ban zu überprüfen, kannst du den folgenden Befehl verwenden:
sudo fail2ban-client ping
Wird die Ausgabe „Server replied: pong“ zurückgegeben, ist davon auszugehen, dass Fail2ban seinen Dienst ohne Probleme oder Fehler aufgenommen hat.
Fehlgeschlagene Anmeldungsversuche und bereits gebannte IP-Adressen anzeigen:
Fail2ban kann jetzt auch verwendet werden, um fehlgeschlagene SSH-Anmeldungen aufzulisten und die bereits gebannten IP-Adressen anzuzeigen:
sudo fail2ban-client status sshd
Fail2ban auf die von Bannregeln ausgenommenen IP-Adressen überprüfen:
sudo fail2ban-client get sshd ignoreip
Manuell eine IP-Adresse zur Bannliste hinzuzufügen:
sudo fail2ban-client set sshd banip <IP-Adresse>
Manuell eine IP-Adresse von der Bannliste entfernen:
sudo fail2ban-client set sshd unbanip <IP-Adresse>
Konfiguration und Installation von Fail2ban unter Linux Ubuntu 22.04 abgeschlossen
Die Fail2ban Installation und erst Konfiguration ist an diesem Punkt erfolgreich abgeschlossen. Füge beliebige Regeln hinzu und erhöhe die Sicherheit deiner Server mit weiteren Einstellungen. Installieren wir Fail2ban für Linux Debian, CentOS oder anderen Distributionen, weicht der Installationsweg kaum von dieser Variante ab. Unterschiede werden bei der Firewall-Installation und Integration für Fail2ban vorgenommen.