So installierst und konfigurierst du Fail2ban unter Ubuntu 22.04

Fail2ban ist ein kostenloses und quelloffenes IPS (Intrusion Prevention Software), das Administratoren dabei hilft, Linux-Server vor böswilligen Login- und Brute-Force-Angriffen zu schützen. Fail2ban ist in Python geschrieben und verfügt über Filter für verschiedene Dienste wie Apache2, SSH, FTP usw. Fail2ban reduziert böswillige Anmeldeversuche, indem es die IP-Adressen der Angriffsquellen blockiert.

Fail2ban scannt die Logdateien der Dienste (z.B. /var/log/auth.log) und sperrt IP-Adressen, die böswillige Anmeldeversuche aufweisen, wie z.B. zu viele falsche Passwörter, die Suche nach Exploits usw. Fail2ban unterstützt auch mehrere Firewall-Backends wie iptables, ufw und firewalld. Außerdem kannst du eine E-Mail-Benachrichtigung für jeden blockierten Anmeldeversuch einrichten.

In dieser Anleitung zeigen wir dir, wie du Fail2ban installierst und konfigurierst, um deinen Ubuntu 22.04 Server zu sichern. Diese Anleitung behandelt auch die grundlegenden Befehle des Fail2ban-Clients zur Verwaltung des Fail2ban-Dienstes und der Jails.

Voraussetzungen

  • Ein Ubuntu-Server 22.04
  • Ein Nicht-Root-Benutzer mit sudo-Rechten.

UFW-Firewall einrichten

Bevor du mit der Installation von Fail2ban beginnst, musst du die Firewall auf deinem Ubuntu-Server einrichten.

Die Standardinstallation des Ubuntu-Servers wird mit der UFW-Firewall geliefert, die einfacher zu verwalten ist als eine andere Firewall wie iptables.

Überprüfe nun den Status der UFW-Firewall mit dem folgenden Befehl.

sudo ufw status

Wenn du eine Meldung wie „Status: inaktiv“ erhältst, ist deine UFW-Firewall noch nicht gestartet. Wenn du aber eine Meldung wie „Befehl ufw nicht gefunden“ erhältst, ist die UFW-Firewall nicht auf deinem Server installiert.

Um das UFW-Firewall-Paket zu installieren, führe den folgenden apt-Befehl aus.

sudo apt install ufw -y

Nachdem die UFW-Installation abgeschlossen ist, führe den folgenden Befehl aus, um den SSH-Dienst zur UFW-Firewall hinzuzufügen.

sudo ufw allow ssh

Als Nächstes führst du den unten stehenden Befehl aus, um die UFW-Firewall zu starten und zu aktivieren.

sudo ufw enable

Gib y ein, um die UFW-Firewall zu bestätigen und zu starten.

Überprüfe abschließend die UFW-Firewall mit dem folgenden Befehl.

sudo ufw status

Unten siehst du, dass die UFW-Firewall„Status: aktiv“ ist und der SSH-Port 22 zu den Firewall-Regeln hinzugefügt wurde.

ufw firewall einrichten

Installation von Fail2ban auf Ubuntu 22.04

Nachdem du die UFW-Firewall installiert und konfiguriert hast, installierst du nun das Fail2ban-Paket auf deinem Server.

Führe den folgenden Befehl aus, um dein Ubuntu-Repository zu aktualisieren und aufzufrischen.

sudo apt update

Installiere nun das Fail2ban-Paket mit dem unten stehenden Befehl.

sudo apt install fail2ban -y

Die Installation wird beginnen.

fail2ban 22.04 installieren

Nachdem die Installation von Fail2ban abgeschlossen ist, aktiviere den Fail2ban-Dienst und starte ihn mit dem folgenden Befehl.

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Überprüfe abschließend den Status des Fail2ban-Dienstes mit dem folgenden Befehl.

sudo systemctl status fail2ban

Im folgenden Screenshot siehst du, dass der Fail2ban-Dienst auf dem Ubuntu 22.04 Server läuft.

Starte und überprüfe den fail2ban-Dienst

Fail2ban konfigurieren

Nachdem du Fail2ban installiert hast, ist es nun an der Zeit, Fail2ban einzurichten und zu konfigurieren.

Die gesamte Fail2ban-Konfiguration wird im Verzeichnis /etc/fail2ban gespeichert. Im Folgenden findest du eine detaillierte Fail2ban-Konfiguration, die du kennen musst:

  • Die Konfiguration fail2ban.conf ist die Hauptkonfiguration von Fail2ban.
  • Die Konfiguration jail.conf ist ein Beispiel für die Fail2ban Jail-Konfiguration.
  • Das Verzeichnis action.d enthält die Einstellungen für die Fail2ban-Aktionen, wie z.B. die Mail-Einstellungen und die Firewall-Einstellungen.
  • Das Verzeichnis jail.d enthält zusätzliche Konfigurationen für die Fail2ban-Jail.

Um mit der Konfiguration von Fail2ban zu beginnen, musst du die Standard-Jail-Konfiguration jail.conf mit dem folgenden Befehl nach jail.local kopieren.

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

Bearbeite nun die Konfiguration jail.local mit dem Editor nano.

sudo nano /etc/fail2ban/jail.local

Entferne zunächst das Kommentarzeichen in der Option ignoreip und füge deine IP-Adresse hinzu. Alle IP-Adressen, die in der ignoreip-Option enthalten sind, werden von Fail2ban nicht blockiert.

ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 192.168.10.20

Bei den Ban-Einstellungen kannst du die Konfiguration nach Bedarf ändern. In diesem Beispiel beträgt die globale Bantime 1 Tag, die Findtime 10 Minuten und die Maxretry bis zu 5 Mal.

Die Option bantime ist die Zeit, in der der Zugriff auf den Server für die IP-Adresse gesperrt ist. Die Option findtime ist die Zeitspanne zwischen der Anzahl der Fehlversuche, bevor die Sperre verhängt wird. Die Option maxretry gibt die Anzahl der Fehlversuche an, nach denen die IP-Adressen gesperrt werden.

bantime  = 1d
findtime  = 10m
maxretry = 5

Die Standardaktion von Fail2ban besteht darin, nur die IP-Adresse zu sperren. Du kannst aber auch eine E-Mail-Benachrichtigung einrichten, wenn eine IP-Adresse gebannt wird.

Ändere die Aktionsoption wie unten beschrieben und ändere den Standardabsender und die Zieladresse für die E-Mail.

action = %(action_mw)s
destemail = admin@hwdomain.io
sender = root@hwdomain.io

Als Nächstes musst du für die Integration der UFW-Firewall die Option banaction in ufw ändern (siehe unten).

banaction = ufw

Und schließlich die Konfiguration der Jails. In diesem Abschnitt fügst du deinen Dienst hinzu und sicherst ihn mit fail2ban.

In diesem Beispiel aktivieren wir die Jail für den SSH-Dienst, setzen aber auch die globale Standardkonfiguration für die sshd-Jail außer Kraft. Die Bantime beträgt 1 Woche mit einer maximalen Wiederholungsrate von 3 Fehlversuchen und einer Findtime von 10 Minuten.

[sshd]
enabled   = true
maxretry  = 3
findtime  = 1d
bantime   = 1w

port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Speichere und schließe die Datei, wenn du fertig bist.

Führe nun den folgenden Befehl aus, um den Fail2ban-Dienst neu zu starten und die neuen Änderungen in der jail.local-Konfiguration zu übernehmen.

sudo systemctl restart fail2ban

Du hast nun die Fail2ban-Konfiguration mit aktivierter E-Mail-Benachrichtigung und aktivierter sshd-Jail zur Sicherung des SSH-Dienstes abgeschlossen.

Fail2ban-Client zum Überprüfen des Fail2ban-Status verwenden

Fail2ban bietet einen Fail2ban-Client für die Interaktion mit dem Fail2ban-Dienst. Damit kannst du Fail2ban von der Kommandozeile aus verwalten und konfigurieren und auch Fail2ban-Jails verwalten.

Um die Installation und Konfiguration von Fail2ban zu überprüfen, führe den folgenden Befehl fail2ban-client aus.

sudo fail2ban-client ping

Wenn du eine Meldung wie„Server antwortet: pong“ erhältst, bedeutet das, dass Fail2ban ohne Fehler läuft.

Als Nächstes führst du den Befehl fail2ban-client aus, um den Status des sshd-Gefängnisses zu überprüfen.

sudo fail2ban-client status sshd

Unten siehst du den detaillierten Status der sshd jail. Dazu gehören die Protokolldatei für den SSH-Dienst und die Liste der gesperrten IP-Adressen in der sshd-Jail.

sshd-Gefängnisstatus prüfen

Wenn du eine detaillierte Konfiguration der sshd jail erhalten möchtest, kannst du den Befehl fail2ban-client wie folgt verwenden.

Überprüfe die bantime Konfiguration für die sshd jail. Du erhältst hier die Ausgabe der bantime in Sekunden.

sudo fail2ban-client get sshd bantime

Überprüfe die maxrtey-Konfiguration für die sshd-Jail. Du wirst sehen, dass die maxretry hier 3 ist, weil sie von der globalen Konfiguration überschrieben wird, die maxrety 5times ist.

sudo fail2ban-client get sshd maxretry

Für die banaction in der sshd jail kannst du den folgenden Befehl verwenden. Du solltest dann die Ausgabe von ufw als Standard-Banaction für sshd jail erhalten.

sudo fail2ban-client get sshd actions

Für die Findtime siehst du hier auch den Override-Wert für die sshd jail. Auch hier wird die Ausgabe im Sekundenformat erfolgen.

sudo fail2ban-client get sshd findtime

Zu guter Letzt kannst du mit dem folgenden Befehl auch die Standard-Ignoreip für die sshd jail überprüfen. Du wirst sehen, dass die ignoreip denselben Wert hat wie die globale Fail2ban-Konfiguration.

sudo fail2ban-client get sshd ignoreip

sshd-Details prüfen

Ban und Unban IP mit Fail2ban-Client

Ein weiterer wichtiger Punkt bei Fail2ban ist, wie du IP-Adressen mit Fail2ban verbieten und freigeben kannst. Dazu kannst du auch den Befehl fail2ban-client verwenden.

Um IP-Adressen manuell in der sshd-Jail zu bannen, kannst du den folgenden Befehl fail2ban-client verwenden. Ändere die IP-Adresse mit der IP-Adresse, die du sperren willst.

sudo fail2ban-client set sshd banip IP-ADDRESS

Um die IP-Adresse aus dem sshd-Gefängnis zu entfernen, kannst du den unten stehenden Befehl fail2ban-client verwenden. Achte nur darauf, dass du die IP-Adresse mit der IP-Adresse änderst, die du aufheben willst.

sudo fail2ban-client set sshd unbanip IP-ADDRESS

Nachdem du eine IP-Adresse manuell gebannt oder aufgehoben hast, kannst du sie mit dem unten stehenden Befehl fail2ban-client überprüfen.

sudo fail2ban-client status sshd

Wenn du eine IP-Adresse manuell bannst, stelle sicher, dass die IP-Adresse in der Liste der gebannten IP-Adressen vorhanden ist. Wenn du eine IP-Adresse wieder freigibst, musst du sicherstellen, dass sie aus der Liste der gesperrten IP-Adressen verschwindet.

Fazit

Herzlichen Glückwunsch! Du hast Fail2ban nun erfolgreich installiert und konfiguriert, um Ubuntu 22.04 zu sichern. Du hast auch gelernt, wie du die UFW-Firewall aktivierst und wie du Fail2ban in die UFW-Firewall integrierst. Schließlich hast du auch gelernt, wie du Fail2ban mit dem Befehl fail2ban-client verwaltest und wie du IP-Adressen von Fail2ban sperren und freigeben kannst.

Das könnte dich auch interessieren …