Fail2ban ist eine kostenlose Open-Source-Intrusion-Prevention-Softwarelösung, die Server vor Brute-Force-Login-Angriffen schützt. Es überwacht verschiedene Protokolldateien von SSH und anderen Webanwendungen, und wenn eine fehlgeschlagene Authentifizierung erkannt wird und die maximale Anzahl erreicht, blockiert Fail2Ban automatisch die IP-Adresse mithilfe der iptables von Firewalld. Fail2Ban ist einfach, handlich, leicht zu konfigurieren und flexibel.
In dieser Anleitung zeigen wir Ihnen, wie Sie Fail2Ban mit Firewalld auf Rocky Linux 8 installieren.
Voraussetzungen
- Ein Server, auf dem Rocky Linux 8 auf der Atlantic.Net Cloud Platform ausgeführt wird
- Ein auf Ihrem Server konfiguriertes Root-Passwort
Schritt 1 – Atlantic.Net Cloud-Server erstellen
Melden Sie sich zunächst bei Ihrem Atlantic.Net Cloud Server an. Erstellen Sie einen neuen Server und wählen Sie Rocky Linux 8 als Betriebssystem mit mindestens 2 GB RAM. Stellen Sie über SSH eine Verbindung zu Ihrem Cloud-Server her und melden Sie sich mit den oben auf der Seite hervorgehobenen Anmeldeinformationen an.
Sobald Sie sich bei Ihrem Server angemeldet haben, führen Sie den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.
dnf update -y
Schritt 2 – Konfigurieren Sie Firewalld
dnf info firewalld
Wenn die installiert ist, erhalten Sie die folgende Ausgabe:
Letzte Metadaten-Ablaufprüfung:vor 0:34:46 Uhr am Mittwoch, 17. November 2021, 09:52:51 Uhr UTC. Installierte PaketeName :firewalldVersion :0.8.2Release :7.el8_4Architecture :noarchSize :1.9 MSource :firewalld-0.8.2 -7.el8_4.src.rpmRepository :@SystemFrom repo :baseosSummary :Ein Firewall-Daemon mit D-Bus-Schnittstelle, der eine dynamische Firewall-URL bereitstellt:http://www.firewalld.orgLicense :GPLv2+Description :firewalld ist ein Firewall-Dienst-Daemon, der Folgendes bereitstellt eine dynamisch anpassbare:Firewall mit einer D-Bus-Schnittstelle.Verfügbare PaketeName:firewalldVersion:0.9.3Release:7.el8Architektur:noarchGröße:501 kQuelle:firewalld-0.9.3-7.el8.src.rpmRepository:baseosZusammenfassung:Ein Firewall-Daemon mit D-Bus-Schnittstelle, die eine dynamische Firewall bereitstelltURL:http://www.firewalld.orgLizenz:GPLv2+Beschreibung:firewalld ist ein Firewall-Dienst-Daemon, der eine dynamische cust bereitstellt omisierbar :Firewall mit D-Bus-Schnittstelle.
Überprüfen Sie als Nächstes, ob Firewalld ausgeführt wird oder nicht.
systemctl status firewalld
Sie sollten sehen, dass der Firewalld-Dienst maskiert ist:
● firewalld.service Geladen:maskiert (Grund:Unit firewalld.service ist maskiert.) Aktiv:inaktiv (tot)
Sie müssen also den Firewalld-Dienst demaskieren. Sie können es mit dem folgenden Befehl demaskieren:
systemctl unmask firewalld
Starten Sie als Nächstes den Firewalld-Dienst und aktivieren Sie ihn so, dass er beim Systemneustart gestartet wird:
systemctl start firewalldsystemctl enable firewalld
Zu diesem Zeitpunkt ist Firewalld auf Ihrem System installiert und wird ausgeführt. Sie können jetzt mit dem nächsten Schritt fortfahren.
Schritt 3 – Fail2Ban installieren
dnf install epel-release -y
Als nächstes installieren Sie das Fail2Ban-Paket mit dem folgenden Befehl:
dnf install fail2ban fail2ban-firewalld -y
Sobald Fail2Ban installiert ist, starten und aktivieren Sie den Fail2Ban-Dienst mit dem folgenden Befehl:
systemctl start fail2bansystemctl enable fail2ban
Sie können die Fail2Ban-Version mit dem folgenden Befehl überprüfen:
fail2ban-client --version
Beispielausgabe:
Fail2Ban v0.11.2
Schritt 4 – Fail2Ban konfigurieren
Benennen Sie zuerst die Firewalld-Konfigurationsdatei für Fail2Ban mit dem folgenden Befehl um:
mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
Kopieren Sie als Nächstes die Standardkonfigurationsdatei von Fail2Ban:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Bearbeiten Sie als Nächstes die Datei jail.local:
nano /etc/fail2ban/jail.local
Suchen Sie die folgenden Zeilen:
banaction =iptables-multiportbanaction_allports =iptables-allports
Und ersetzen Sie sie durch die folgenden Zeilen:
banaction =firewallcmd-rich-rules[actiontype=]banaction_allports =firewallcmd-rich-rules[actiontype=]
Speichern und schließen Sie die Datei und starten Sie dann Fail2Ban neu, um die Änderungen zu übernehmen:
systemctl restart fail2ban
An diesem Punkt ist Fail2Ban so konfiguriert, dass es mit Firewalld funktioniert.
Schritt 5 – SSH-Dienst mit Fail2Ban sichern
Um den SSHD-Dienst zu schützen, bearbeiten Sie die Datei jail.local:
nano /etc/fail2ban/jail.local
Suchen Sie den Abschnitt [sshd] und aktivieren Sie ihn, indem Sie die folgenden Zeilen hinzufügen:
[sshd]enabled =trueport =sshlogpath =%(sshd_log)sbackend =%(sshd_backend)sbantime =10mfindtime =10mmaxretry =5
Speichern und schließen Sie die Datei und starten Sie dann Fail2Ban neu, um die Änderungen zu übernehmen:
systemctl restart fail2ban
Sie können jetzt den Status von Fail2Ban mit dem folgenden Befehl überprüfen:
Systemctl-Status fail2ban
Sie erhalten die folgende Ausgabe:
● fail2ban.service - Fail2Ban-Dienst geladen:geladen (/usr/lib/systemd/system/fail2ban.service; deaktiviert; Herstellervoreinstellung:deaktiviert) Aktiv:aktiv (läuft) seit Mi 2021-11-17 10:34 :49 UTC; vor 2s Dokumente:man:fail2ban(1) Prozess:21154 ExecStop=/usr/bin/fail2ban-client stop (code=exited, status=0/SUCCESS) Prozess:21185 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS) Main PID:21186 (fail2ban-server) Tasks:5 (limit:11411) Memory:14.6M CGroup:/system.slice/fail2ban.service └─21186 /usr/bin/ python3.6 -s /usr/bin/fail2ban-server -xf startNov 17 10:34:49 rockylinux systemd[1]:Fail2Ban Service starten...17.Nov 10:34:49 rockylinux systemd[1]:Fail2Ban Service gestartet 17. November 10:34:49 rockylinux fail2ban-server[21186]:Server bereit
Schritt 6 – Überprüfen Sie die Fail2Ban-Firewall
An diesem Punkt ist Fail2Ban so konfiguriert, dass es den SSH-Dienst schützt. Jetzt ist es an der Zeit zu prüfen, ob Fail2Ban funktioniert.
Überprüfen Sie zunächst die Jail-Konfiguration mit dem folgenden Befehl:
fail2ban-Client-Status
Sie sollten die folgende Ausgabe sehen:
Status|- Jail-Nummer:1`- Jail-Liste:sshd
Gehen Sie jetzt zum Remote-Computer und versuchen Sie, sich mit einem falschen Passwort mit dem SSH-Server zu verbinden. Nach Erreichen der maximalen Anzahl von Wiederholungen (5 Mal) wird Ihre IP-Adresse von Fail2Ban blockiert.
Überprüfen Sie nun die von Fail2Ban blockierte IP-Adresse mit dem folgenden Befehl:
fail2ban-client status sshd
Sie sollten die folgende Ausgabe erhalten:
Status für das Jail:sshd|- Filter| |- Aktuell fehlgeschlagen:1| |- Insgesamt fehlgeschlagen:6| `- Journal-Übereinstimmungen:_SYSTEMD_UNIT=sshd.service + _COMM=sshd`- Aktionen |- Derzeit gesperrt:1 |- Gesamt gesperrt:1 `- Gesperrte IP-Liste:27.61.171.115
Sie können die von Firewalld hinzugefügten Regeln mit dem folgenden Befehl überprüfen:
firewall-cmd --list-rich-rules
Sie erhalten die folgende Ausgabe:
rule family="ipv4" source address="27.61.171.115" port port="ssh" protocol="tcp" lehnen Sie type="icmp-port-unreachable" ab
Weitere Informationen finden Sie auch in den Fail2Ban-Protokollen:
tail -f /var/log/fail2ban.log
Beispielausgabe:
2021-11-17 10:37:21,837 fail2ban.filter [21186]:INFO [sshd] Found 27.61.171.115 - 2021-11-17 10:37:212021-11-17 10:37:21,859 fail2ban. Aktionen [21186]:NOTICE [sshd] Ban 27.61.171.1152021-11-17 10:37:27,220 fail2ban.filter [21186]:INFO [sshd] Found 27.61.171.115 - 2021-11-17 10:37:27Schlussfolgerung
Herzliche Glückwünsche! Sie haben Fail2Ban erfolgreich mit Firewalld installiert. Sie können jetzt Fail2Ban auf Ihrem Server implementieren, um ihn vor Brute-Force-Login-Angriffen zu schützen. Probieren Sie es auf Ihrem VPS-Hosting-Konto von Atlantic.Net aus!