So sichern Sie SSH mit Fail2Ban

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.

sudo service fail2ban stop
Stopping the fail2ban service

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.

sudo apt install sendmail iptables-persistent -y

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.

## Erste Regel - Akzeptiert alle vom Server generierten Datenverkehr (lo-Schnittstelle) 
sudo iptables -A INPUT -i lo -j ACCEPT
## Zweite Regel - Akzeptiert alle Verbindungen, die Teil 
## einer etablierten oder verwandten Verbindung sind
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
## Dritte Regel - Erlaubt SSH-Verkehr auf Port 22
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
## Vierte Regel - Blockiert alle anderen Verbindungen
sudo iptables -A INPUT -j DROP
Adding four rules to your firewall

4. Führen Sie den unten stehenden iptables-Befehl aus, um eine Zusammenfassung dessen anzuzeigen, was Sie in Ihrer Firewall eingerichtet haben.

sudo iptables -S

Unten sind die Regeln hervorgehoben, die Sie zu Ihrer Firewall hinzugefügt haben.

Checking your firewall rules

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.

sudo dpkg-reconfigure iptables-persistent
sudo service fail2ban start

6. Führen Sie abschließend den unten stehenden iptables-Befehl erneut aus, um Ihre Firewall-Regeln anzuzeigen.

sudo iptables -S

Wie unten gezeigt, sind in Rot die neuen Regeln hervorgehoben, die Fail2Ban zu Ihrer Firewall hinzugefügt hat.

Previewing your firewall rules

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 Befehl tee weiter. Dadurch wird der Inhalt der Datei jail.conf auf Ihr lokales Dateisystem (/etc/fail2ban/jail.local) geschrieben.
awk '{ printf "# "; print; }' /etc/fail2ban/jail.conf | sudo tee /etc/fail2ban/jail.local
Creating the jail.local file

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.

ls /etc/fail2ban

Wenn Sie die neue Datei jail.local sehen, wie unten gezeigt, dann wurde Ihre lokale Datei korrekt generiert.

Checking the newly created local file (jail.local)

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.

Enabling the [ssh] section

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.

Uncommenting the [DEFAULT] option

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.

Setting a ban duration

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.

Setting a Window Time for an IP Address to Login Before Getting Banned

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.
Configuring destemail, sender, and mta options

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.

Enabling Logwatch Emails

9. Führen Sie nun die unten stehenden Befehle aus, um den fail2ban-Dienst neu zu starten.

sudo service fail2ban stop
sudo service fail2ban start

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.

sudo service fail2ban status

Wenn der Fail2Ban-Dienst funktioniert, erhalten Sie eine Ausgabe wie unten gezeigt.

Checking the Fail2Ban Service Status

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.

Testing if a server gets banned from Fail2Ban server after several failed logins

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.

Setting IP Addresses to Block from Fail2Ban Server

3. Führen Sie auf Ihrem Fail2Ban-Server (Ubuntu) erneut den Befehl iptables aus, um Ihre Firewall-Regeln anzuzeigen.

sudo iptables -S

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.

Checking additional firewall rules

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?

Source:
https://adamtheautomator.com/fail2ban-ssh/