Der Schutz Ihres Servers vor Brute-Force-Angriffen ist ein Muss. Die Frage ist, wie genau? Glücklicherweise ist Fail2Ban gleich um die Ecke, um Ihren Server zu schützen, aber die Standardkonfiguration von Fail2Ban muss für optimale Sicherheit angepasst werden. Machen Sie sich jedoch keine Sorgen, dieses Tutorial hat Sie abgedeckt.
In diesem Tutorial erfahren Sie, wie Sie Fail2Ban einrichten und Brute-Force-Angriffe abwehren, indem Sie Ihren SSH-Server sichern.
Bereit? Lesen Sie weiter, um die Sicherheit Ihres SSH-Servers zu optimieren!
Voraussetzungen
Dieses Tutorial besteht aus schrittweisen Anweisungen. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes zur Verfügung haben:
- Einen Ubuntu- und Debian-Server – Dieses Tutorial verwendet einen Server mit Ubuntu 18.04 LTS, um Fail2Ban einzurichten, und einen Debian 10-Server, um Fail2Ban-Bannkonfigurationen zu testen.
- Root-Zugriff oder sudo-Berechtigungen auf dem Server, um Befehle als Superuser auszuführen.
- Fail2Ban installiert auf einem Ubuntu- oder Debian-Server.
Einrichten einer Basis-Firewall
Fail2Ban schützt Ihren Server, indem es die Protokolle überwacht und IP-Adressen sperrt, die innerhalb eines bestimmten Zeitraums zu viele Anmeldeversuche unternehmen. Aber zuerst richten Sie eine Basis-Firewall ein, in der Sie Regeln hinzufügen können, um bösartige Handlungen auf Ihrem Server zu blockieren.
1. Führen Sie zunächst den Befehl service
unten aus, um Fail2Ban zu stoppen (fail2ban stop
), während Sie Änderungen an Ihren Konfigurationsdateien vornehmen. Stoppen Sie Fail2Ban, wenn Sie Änderungen an Ihren Konfigurationsdateien vornehmen, damit Sie die Änderungen testen und sicherstellen können, dass sie wie erwartet funktionieren.

2. Führen Sie den Befehl apt install
aus, um Sendmail
und IPTables-persistent
zu installieren. Sendmail ist ein Programm, das Fail2Ban verwendet, um Sie zu benachrichtigen, wenn es eine IP-Adresse sperrt. IPTables-persistent ist ein Programm, das Ihre geänderten Konfigurationseinstellungen in der /etc/sysconfig/iptables-Datei speichert.
Die Installation dieser Programme sorgt dafür, dass Ihre Firewall-Einstellungen intakt bleiben, auch wenn etwas Unerwartetes passiert, wie ein Stromausfall.
Führen Sie nun jeden unten stehenden iptables
-Befehl aus, um Ihre Firewall einzurichten. Diese Befehle generieren keine Ausgabe, sondern fügen vier Regeln zu Ihrer Firewall hinzu. Diese Regeln erlauben oder blockieren Verbindungen zu Ihrem Server.

4. Führen Sie den unten stehenden iptables
-Befehl aus, um eine Zusammenfassung dessen anzuzeigen, was Sie in Ihrer Firewall eingerichtet haben.
Unten sind die Regeln hervorgehoben, die Sie zu Ihrer Firewall hinzugefügt haben.

5. Führen Sie anschließend die folgenden Befehle aus, um Ihre Regeln in der Datei /etc/sysconfig/iptables-config zu speichern und den Fail2Ban-Dienst zu starten. Die Datei iptables-config enthält alle Ihre dauerhaften Firewall-Regeln.
Fail2Ban fügt automatisch einige Regeln zu Ihrer Firewall hinzu, um Ihren Server zu schützen.
6. Führen Sie abschließend den unten stehenden iptables
-Befehl erneut aus, um Ihre Firewall-Regeln anzuzeigen.
Wie unten gezeigt, sind in Rot die neuen Regeln hervorgehoben, die Fail2Ban zu Ihrer Firewall hinzugefügt hat.

Passen Sie Ihre lokale Fail2Ban-Konfiguration an.
Nun, da Sie eine grundlegende Firewall eingerichtet haben, ist es an der Zeit, Ihre lokale Fail2Ban-Konfigurationsdatei anzupassen, um mehr Kontrolle über die Sicherung Ihres Servers zu erhalten. Dieses Tutorial verwendet die Konfigurationsdatei /etc/fail2ban/jail.conf, da sie alle notwendigen Optionen enthält, um globale Einstellungen für die Fail2Ban-Anwendung zu konfigurieren.
Vielleicht möchten Sie benutzerdefinierte Regeln für Ihren SSH-Server erstellen. Wenn ja, erstellen Sie eine neue Datei jail.local (basierend auf der Datei jail.conf) und legen Sie die SSH-spezifischen Regeln in der Datei jail.local ab. Auf diese Weise können Sie Einstellungen in der Datei jail.conf für Ihren Server überschreiben.
1. Führen Sie den Befehl awk
aus, um Folgendes zu tun:
- Drucken Sie den Inhalt (
'{ printf "# "; print; }'
) der Datei/etc/fail2ban/jail.conf
. - Erstellen Sie eine Datei mit dem Namen jail.local (basierend auf der Datei jail.conf), die dazu verwendet werden kann, die Standardeinstellungen in der Datei jail.conf zu überschreiben.
- Leiten Sie den Inhalt der Datei
/etc/fail2ban/jail.conf
an den Befehltee
weiter. Dadurch wird der Inhalt der Dateijail.conf
auf Ihr lokales Dateisystem (/etc/fail2ban/jail.local
) geschrieben.

2. Sobald Sie die Datei jail.local erstellt haben, führen Sie den ls
-Befehl unten aus. Der Befehl listet den Inhalt des Fail2Ban-Verzeichnisses Ihres Servers (/etc/fail2ban
) auf, um zu überprüfen, ob Ihre Datei jail.local korrekt generiert wurde.
Wenn Sie die neue Datei jail.local sehen, wie unten gezeigt, dann wurde Ihre lokale Datei korrekt generiert.

3. Öffnen Sie die Datei /etc/fail2ban/jail.local in Ihrem bevorzugten Texteditor und navigieren Sie zum [ssh]-Abschnitt.
Entkommentieren Sie die Optionen [sshd] und enabled, indem Sie das Symbol # vor den Optionen löschen, wie unten gezeigt, um SSH zu aktivieren.
Von diesem Punkt bis zum Ende des Tutorials entfernen Sie das #-Symbol vor Abschnitten oder Optionen, um sie zu aktivieren.

4. Scrollen Sie nach unten und entfernen Sie das Kommentarzeichen [DEFAULT]-Abschnitt, wie unten gezeigt. Dieser Abschnitt ist, wo Sie die Standardeinstellungen für Fail2Ban konfigurieren. Alle Einstellungen in diesem Abschnitt werden auf alle Jails angewendet, die Fail2Ban verwaltet.

5. Gehen Sie als nächstes zum bantime-Abschnitt und setzen Sie eine Bannzeit von 60 Minuten. Die bantime-Option legt die Dauer in Minuten fest, für die eine IP-Adresse nach einem fehlgeschlagenen Anmeldeversuch gesperrt wird.
Die Standardeinstellung für die Sperrzeit beträgt 600 Sekunden (10 Minuten). Sie können diese Einstellung nach Ihren Wünschen anpassen, aber beachten Sie, dass je niedriger die Sperrzeit ist, desto mehr Last Ihr Server erfahren wird.

6. Navigieren Sie zu den Optionen findtime und maxretry. Behalten Sie findtime bei (10m) und senken Sie maxretry auf 3.
Die Option findtime legt die Zeit in Minuten fest, die eine IP-Adresse fehlschlagen kann, bevor sie gesperrt wird. Die Option maxretry legt die Anzahl der fehlgeschlagenen Anmeldeversuche fest, bevor eine IP-Adresse gesperrt wird.
Die Standardwerte für findtime sind 10 Minuten und maxretry ist 5 Minuten. Dadurch wird eine IP-Adresse gesperrt, die sich innerhalb von 10 Minuten 5 Mal nicht anmelden kann.

7. Scrollen Sie nach unten, entfernen Sie die Kommentierung und konfigurieren Sie die Optionen destemail, sender und mta:
- destemail – Geben Sie eine E-Mail-Adresse ein, an die Fail2Ban Benachrichtigungen sendet.
- sender – Setzen Sie das „Von“-Feld in der E-Mail, die Fail2Ban an destemail sendet.
- mta – Behalten Sie die Standardeinstellung (sendmail) bei. Die Option mta legt den E-Mail-Zustellagenten fest, den Fail2Ban für den Versand von Benachrichtigungen verwendet.

8. Navigieren Sie zu den Aktion-Optionen, wie unten gezeigt, und entfernen Sie die Kommentare von der Aktion_mwl-Option. Dadurch kann Fail2Ban Logwatch-E-Mails an Sie senden. Sie können Logwatch-E-Mails überprüfen, um mögliche Sicherheitsprobleme auf Ihrem Server genauer zu untersuchen.
Speichern Sie die Änderungen und beenden Sie den Texteditor.

9. Führen Sie nun die unten stehenden Befehle aus, um den fail2ban
-Dienst neu zu starten.
10. Führen Sie abschließend den folgenden Befehl aus, um den Status Ihres fail2ban
-Dienstes zu überprüfen. sudo service fail2ban status
Wenn der Fail2Ban-Dienst funktioniert, erhalten Sie eine Ausgabe wie unten gezeigt.
Wenn der Fail2Ban-Dienst funktioniert, erhalten Sie eine Ausgabe wie unten gezeigt.

Testen Ihrer Sperrkonfigurationen
Sie haben gerade Fail2Ban konfiguriert, also ist es jetzt an der Zeit zu überprüfen, ob die Sperrkonfigurationen tatsächlich funktionieren. Versuchen Sie, mehrere fehlgeschlagene SSH-Anmeldungen von Ihrem Fail2Ban-Server von einem sekundären Server aus durchzuführen und sehen Sie nach, ob dieser sekundäre Server gesperrt wird.
1. Melden Sie sich auf Ihrem sekundären Server (Debian) an und führen Sie den unten stehenden Befehl aus, um sich über SSH mit Ihrem Fail2Ban-Server zu verbinden.
In dieser Demo wird ein Debian 10-Server mit der IP-Adresse 134.122.20.103 verwendet, um sich über ssh
mit dem fail2ban
-Server mit der IP-Adresse 69.28.83.134
zu verbinden.
2. Geben Sie bei Aufforderung ein zufälliges Passwort ein und drücken Sie Enter.
Beim ersten Versuch wird der Fail2Ban-Server den SSH-Anmeldeversuch stoppen und die Meldung Permission denied ausgeben, wie unten gezeigt. Wiederholen Sie den SSH-Anmeldeversuch etwa zwei bis drei Mal, und der Fail2Ban-Server wird schließlich auf Ihren SSH-Anmeldeversuch nicht mehr reagieren.
Zu diesem Zeitpunkt erhalten Sie keine Permission denied-Meldung mehr, sondern einen leeren Bildschirm. Ein leerer Bildschirm zeigt an, dass Ihr zweiter Server (Debian) vom Fail2Ban-Server gesperrt wurde.

Vielleicht haben Sie jedoch bereits eine Liste von IP-Adressen, die Sie von Ihrem Fail2Ban-Server blockieren möchten. Öffnen Sie in diesem Fall die Datei jail.local und navigieren Sie zum Abschnitt [DEFAULT]. Kommentieren Sie die Option ignoreip aus und setzen Sie die zu blockierenden IP-Adressen, wie unten gezeigt.
Die Adresse kann entweder mehrere separate IPv4- oder IPv6-Einträge sein oder durch Kommas getrennt sein.

3. Führen Sie auf Ihrem Fail2Ban-Server (Ubuntu) erneut den Befehl iptables
aus, um Ihre Firewall-Regeln anzuzeigen.
Beachten Sie unten, dass eine neue Regel vorhanden ist, die SSH-Anmeldeversuche von der IP-Adresse 134.122.20.103 ablehnt.
Sie erhalten auch eine E-Mail von Fail2Ban, nachdem ein erfolgreicher Bann erfolgt ist, mit einer angehängten Protokolldatei, wenn Sie sendmail auf Ihrem Fail2Ban-Server eingerichtet haben. Die E-Mail-Benachrichtigung zeigt an, dass Fail2Ban einen Brute-Force-Angriff erfolgreich gestoppt hat und Ihren Server vor möglichen Schäden gerettet hat.

Abschluss
Während dieses Tutorials haben Sie gelernt, wie Sie Fail2Ban auf einem Ubuntu-Server konfigurieren. Zu diesem Zeitpunkt sollten Sie gut gerüstet sein, um Ihren SSH-Server vor Brute-Force-Angriffen zu schützen.
Warum nutzen Sie Ihr neues Wissen nicht noch weiter? Vielleicht beginnen Sie damit, IP-Adressen auf allen Ports mit Fail2Ban auf einem Docker-Host zu blockieren?