Wie man Fail2ban mit Firewalld auf Rocky Linux 8.4 installiert
Fail2ban ist ein System-Daemon zum Schutz von Servern vor bösartigen Login- und Brute-Force-Angriffen. Fail2ban ist ein Open-Source IPS (Intrusion Prevention Software) Framework, das in Python geschrieben wurde und extrem konfigurierbar ist. Es arbeitet als Daemon-Dienst, der das SystemD-Journal und die Log-Dateien überwacht und dann nach fehlgeschlagenen Authentifizierungsversuchen sucht. Wenn die Anzahl der fehlgeschlagenen Authentifizierungsversuche die maximale Anzahl von X erreicht, wird fail2ban automatisch die IP-Adresse mit Hilfe der Firewall-Software blockieren.
Wenn du ein VPS (Virtual Private Server) oder dedizierter Server Besitzer bist, solltest du in Betracht ziehen, fail2ban auf all deinen Servern zu installieren. Es wird dir helfen, einige grundlegende Dienste wie SSH und FTP vor bösartigen Brute-Force-Angriffen zu schützen. Außerdem ist fail2ban sehr praktisch, einfach zu konfigurieren und flexibel.
In dieser Anleitung lernst du, wie du fail2ban auf Rocky Linux installierst, fail2ban mit firewalld konfigurierst und den SSH-Dienst gegen Brute-Force-Angriffe absicherst.
Voraussetzungen
- Ein Benutzer mit sudo root Rechten.
Firewalld einrichten
Firewalld ist die Standard Firewall Software auf Rocky Linux. Sie wird automatisch während der Installation von Rocky Linux installiert, ist aber standardmäßig nicht aktiviert.
1. Führe den folgenden Befehl aus, um sicherzustellen, dass das Firewalld-Paket auf deinem System verfügbar ist.
sudo dnf info firewalld
Du wirst eine ähnliche Ausgabe wie unten erhalten.
Wie auf dem Screenshot zu sehen ist, wird das firewalld-Paket als„Installierte Pakete“ aufgeführt.
2. Als nächstes starte den firewalld Dienst mit dem folgenden Befehl.
sudo systemctl start firewalld
3. Aktiviere nun den firewalld-Dienst, damit er bei jedem Systemstart automatisch ausgeführt wird.
sudo systemctl enable firewalld
Und du erhältst die folgende Ausgabe.
Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service ? /usr/lib/systemd/system/firewalld.service. Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service ? /usr/lib/systemd/system/firewalld.service.
4. Danach überprüfe den Status des firewalld-Dienstes mit dem folgenden Befehl.
sudo systemctl status firewalld
Und du wirst die folgende Ausgabe erhalten.
Wie du siehst, ist der firewalld Dienst aktiv und läuft.
5. Optional kannst du den Status des firewalld-Dienstes mit dem Befehl firewall-cmd überprüfen. Der firewall-cmd ist die Hauptschnittstelle, um mit firewalld zu interagieren. Der Befehl firewall-cmd ist ein Dienstprogramm zur Verwaltung von Firewalld-Regeln, es erlaubt dir, Regeln hinzuzufügen, zu löschen, den Status zu überprüfen, etc.
Führe den folgenden firewall-cmd Befehl aus, um den Status des firewalld Dienstes zu überprüfen.
sudo firewall-cmd --state
Wenn deine Firewalld aktiv ist, bekommst du die Ausgabe„running„. Andernfalls erhältst du die Ausgabe„not running„.
Führe nun den folgenden firewall-cmd Befehl aus, um alle Firewalld-Regeln zu überprüfen, die derzeit angewendet werden.
sudo firewall-cmd --list-all
Du wirst eine ähnliche Ausgabe wie unten erhalten.
Hinzufügen des EPEL Repositorys zu Rocky Linux
Bevor du fail2ban installierst, musst du das EPEL(Extra Packages for Enterprise Linux) Repository zu deinem System hinzufügen.
1. Führe nun den folgenden Befehl aus, um das EPEL Repository zu installieren.
sudo dnf install epel-release
Gib „y“ ein, um zu installieren und fortzufahren.
2. Wenn die Installation abgeschlossen ist, prüfe alle verfügbaren Repositories auf deinem System mit dem folgenden Befehl.
sudo dnf repolist
Nun siehst du die Ausgabe wie unten.
Wie du siehst, ist das EPEL Repository auf dem System verfügbar und aktiv. Lass uns nun mit der Installation von Fail2ban fortfahren.
Installation von Fail2ban auf Rocky Linux
1. Um fail2ban zu installieren, führe den unten stehenden Befehl aus.
sudo dnf install fail2ban fail2ban-firewalld
Gib „y“ ein, um die Installation zu bestätigen und drücke„Enter„, um fortzufahren.
Wie auf der Kommandozeile, installierst du auch hier das zusätzliche Paket „fail2ban-firewalld“. Es wird fail2ban in die Lage versetzen, Firewalld-Regeln zu manipulieren.
2. Wenn die Installation abgeschlossen ist, starte den fail2ban-Dienst mit dem unten stehenden Befehl.
sudo systemctl start fail2ban
3. Danach führe den folgenden Befehl aus, damit der fail2ban-Dienst bei jedem Systemstart automatisch startet.
sudo systemctl enable fail2ban
4. Überprüfe nun den Status des fail2ban-Dienstes, indem du den folgenden Befehl ausführst.
sudo systemctl status fail2ban
Du wirst sehen, dass der fail2ban Dienst aktiv ist und mit der Standardkonfiguration wie unten angegeben läuft.
Fail2ban konfigurieren
Jetzt konfigurierst du fail2ban und aktivierst fail2ban für die Zusammenarbeit mit der Firewalld.
1. Kopiere die Standard Fail2ban Konfiguration von „jail.conf“ nach„jail.local“ mit dem folgenden Befehl.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
2. Als nächstes bearbeite die fail2ban-Konfiguration mit dem nano-Editor-Befehl unten.
sudo nano /etc/fail2ban/jail.local
Überprüfe unter dem Abschnitt „[DEFAULT]“ die folgenden Konfigurationen.
[DEFAULT] .... bantime = 1h findtime = 1h maxretry = 5
Optionen, die du kennen musst.
- [DEFAULT] = Alle Konfigurationen unter dieser Sektion werden als globale Standardkonfiguration angewendet.
- bantime = Anzahl der Male, die x IP-Adresse gebannt werden soll. Es unterstützt das Format als Tag, Minute oder Stunden. In diesem Beispiel wird der Host oder die IP-Adresse für „1 Stunde“ nach der maximalen Anzahl an fehlgeschlagenen Authentifizierungsversuchen gesperrt.
- findtime = Die IP-Adresse wird gebannt, wenn sie während der letzten „findtime“ die maximale Anzahl an fehlgeschlagenen Authentifizierungen aufweist.
- maxretry = Die IP-Adresse wird gebannt, wenn sie die X-fache Anzahl an Login-Fehlversuchen hat. In diesem Beispiel wird die IP-Adresse nach 5 fehlgeschlagenen Authentifizierungsversuchen gebannt.
Passe bantime, findtime und maxrety nach deinen Bedürfnissen an, drücke dann „Ctrl+x“ und tippe „y“, dann drücke „Enter“ um die Konfiguration zu speichern.
3. Die Standardkonfiguration von fail2ban verwendet iptables zum Blockieren. Um fail2ban zu aktivieren, Firewalld zum Blockieren zu verwenden, kopiere die Konfiguration„00-firewalld.conf“ nach„00-firewalld.local“ mit dem folgenden Befehl.
sudo mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
Diese Konfiguration„00-firewalld.conf“ ist Teil des Pakets„fail2ban-firewalld„.
4. Starte nun den fail2ban-Dienst neu, um die neuen Konfigurationen mit dem unten stehenden Befehl anzuwenden.
sudo systemctl restart fail2ban
Schützen des SSH Dienstes mit Fail2ban
Standardmäßig blockiert das fail2ban keine IP-Adresse, bis du die Jail-Konfiguration für jeden Dienst, den du schützen willst, aktivierst. Außerdem überschreibt die Jail-Konfiguration die Standardkonfiguration auf „jail.local“. Die Jail-Konfiguration wird im Verzeichnis „/etc/fail2ban/jail.d“ verfügbar sein.
1. Erstelle eine neue Jail-Konfiguration für den Dienst SSH mit dem folgenden Befehl.
sudo nano /etc/fail2ban/jail.d/sshd.local
Füge nun die folgende Konfiguration ein.
[sshd] enabled = true
# Override the default global configuration
# for specific jail sshd
bantime = 1d
maxretry = 3
Wie du siehst, überschreibt die Konfiguration die Optionen„bantime“ und„maxretry“ für die Jail„sshd„.
Drücke „Strg+x“ und gib„Y“ ein und drücke„Enter„, um die neue Jailkonfiguration zu speichern.
2. Um die neue Konfiguration anzuwenden, starte den fail2ban-Dienst mit dem folgenden Befehl neu.
sudo systemctl restart fail2ban
3. Danach überprüfe den fail2ban-Status mit dem Befehl fail2ban-client. Der fail2ban-client ist eine Kommandozeile zur Verwaltung des fail2ban Kontrollservers.
Führe nun den folgenden Befehl fail2ban-client aus, um die Jail-Konfiguration zu überprüfen.
sudo fail2ban-client status
Und du wirst eine ähnliche Ausgabe wie unten erhalten.
Das Fail2ban läuft mit 1 aktiven Jail namens„sshd„.
Um die Konfiguration einer bestimmten Jail zu überprüfen, kannst du die Option„get“ verwenden, gefolgt von dem Jailnamen und den Optionen, die du überprüfen möchtest.
Überprüfe die „maxretry“ Konfiguration für die Jail „sshd“ mit dem untenstehenden Befehl.
sudo fail2ban-client get sshd maxretry
Du wirst sehen, dass die Ausgabe„3“ ist, was dem Wert in der Konfiguration „sshd.local“ entspricht.
Als nächstes überprüfe die Standard-Ban-Aktion für die Jail „sshd“ mit dem unten stehenden Befehl.
sudo fail2ban-client get sshd actions
Du wirst sehen, dass die Ausgabe„firewallcmd-rich-rules“ lautet, was mit der globalen Fail2ban-Konfiguration in der „00-firewalld.local“ übereinstimmt.
Überprüfe die Fail2ban und Firewalld Installation
Um die Fail2ban-Installation zu verifizieren, überprüfe den vollen Status der Jail (für diese Anleitung ist es die sshd-Jail) und überprüfe die von Fail2ban generierten Firewalld-Regeln.
Für den Test ist unten der Screenshot nach dem Versuch, sich mit einem falschen Passwort zu einem SSH-Server zu verbinden. Nach dem Erreichen der maxretry„3“ mal, wird die Verbindung vom Server abgebrochen.
1. Führe den folgenden Befehl aus, um den Status einer bestimmten Jail (in diesem Beispiel sshd jail) zu überprüfen.
sudo fail2ban-client status sshd
Und du wirst eine ähnliche Ausgabe wie die folgende erhalten.
Wie du siehst, hat die sshd jail 1 gebannte IP-Adresse. Wenn du auf einem Live-VPS oder dedizierten Server bist, wirst du viel mehr IP-Adressen sehen.
2. Das fail2ban generiert firewalld rich-rules, um IP-Adressen zu blockieren. Die firewalld rich-rules sind eine erweiterte Filterfunktion von firewalld.
Führe den folgenden Befehl aus, um die von fail2ban generierten firewalld rich-rules anzuzeigen.
firewall-cmd --list-rich-rules
Und du wirst eine ähnliche Ausgabe wie unten erhalten.
IP-Adresse aus Fail2ban verbannen
Um IP-Adressen aus fail2ban zu verbannen, kannst du den Befehl fail2ban-client verwenden.
1. Führe den folgenden fail2ban-client Befehl aus, um die IP-Adresse„192.168.1.10“ zu entsperren.
sudo fail2ban-client unban 192.168.1.10
Und die IP-Adresse wird von der Banned-Liste auf fail2ban entfernt.
Als nächstes führst du den folgenden Befehl aus, um sicherzustellen, dass die IP-Adresse aus der fail2ban-Datenbank (in diesem Beispiel das Jail sshd) entfernt wird.
sudo fail2ban-client status sshd
Und du wirst sehen, dass die IP-Adresse aus dem Abschnitt„Banned IP List“ entfernt wird.
Fazit
Herzlichen Glückwunsch! Du hast das fail2ban IPS Framework erfolgreich auf Rocky Linux 8.4 installiert. Und für den nächsten Schritt kannst du dir eine weitere Jail-Konfiguration ansehen, um andere Dienste wie FTP-Server, phpMyAdmin, WordPress, etc. zu sichern.