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 etwas 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 für Ihren SSH-Server zu optimieren!
Voraussetzungen
Dieses Tutorial enthält Schritt-für-Schritt-Anleitungen. Wenn Sie mitmachen möchten, vergewissern Sie sich, dass Sie Folgendes eingerichtet haben:
- Ein Ubuntu- und Debian-Server – Dieses Tutorial verwendet einen Server, auf dem Ubuntu 18.04 LTS ausgeführt wird, um Fail2Ban einzurichten, und einen Debian 10-Server, um Fail2Ban-Sperrkonfigurationen zu testen.
- Root-Zugriff oder sudo-Berechtigungen auf dem Server, um Befehle als Superuser auszuführen.
- Fail2Ban auf einem Ubuntu- oder Debian-Server installiert.
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, der Sie Regeln hinzufügen können, um böswillige Handlungen auf Ihrem Server zu blockieren.
1. Führen Sie zuerst service
aus Befehl unten, um Fail2Ban zu stoppen (fail2ban stop
) vom Laufen. 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
2. Führen Sie apt install
aus Befehl zum Installieren von Sendmail
und IPTables-persistent
. Sendmail ist ein Programm, das Fail2Ban verwendet, um Sie zu benachrichtigen, wenn es eine IP-Adresse sperrt. Während IPTables-persistent ein Programm ist, das Ihre geänderten Konfigurationseinstellungen in /etc/sysconfig/iptables speichert Datei.
Durch die Installation dieser Programme bleiben Ihre Firewall-Einstellungen intakt, selbst wenn etwas Unerwartetes passiert, wie z. B. ein Stromausfall.
sudo apt install sendmail iptables-persistent -y
Führen Sie nun jeden iptables
aus Befehl unten, um Ihre Firewall einzurichten. Diese Befehle erzeugen keine Ausgabe, sondern fügen Ihrer Firewall vier Regeln hinzu. Diese Regeln erlauben oder blockieren Verbindungen zu Ihrem Server.
## First Rule - Accepts all traffic generated by the server (lo interface)
sudo iptables -A INPUT -i lo -j ACCEPT
## Second Rule - Accepts all traffic that are part
## of an established o related connection
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
## Third Rule - Allows SSH traffic on port 22
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
## Fourth Rule - Arops all other traffic
sudo iptables -A INPUT -j DROP
4. Führen Sie iptables
aus Befehl unten, um eine Zusammenfassung dessen anzuzeigen, was Sie in Ihrer Firewall eingerichtet haben.
sudo iptables -S
Unten sind die Regeln hervorgehoben, die Sie Ihrer Firewall hinzugefügt haben.
5. Führen Sie als Nächstes die folgenden Befehle aus, um Ihre Regeln in /etc/sysconfig/iptables-config zu speichern Datei und starten Sie den Fail2Ban-Dienst. Die iptables-config Datei enthält alle Ihre permanenten Firewall-Regeln.
Fail2Ban fügt Ihrer Firewall automatisch einige Regeln hinzu, um Ihren Server zu schützen.
sudo dpkg-reconfigure iptables-persistent
sudo service fail2ban start
6. Führen Sie abschließend iptables
erneut aus Befehl unten, um Ihre Firewall-Regeln anzuzeigen.
sudo iptables -S
A unten gezeigt, rot hervorgehoben, sind die neuen Regeln, die Fail2Ban zu Ihrer Firewall hinzugefügt hat.
Anpassen Ihrer lokalen Fail2Ban-Konfiguration
Nachdem Sie nun eine einfache Firewall ausgeführt 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 /etc/fail2ban/jail.conf Konfigurationsdatei, 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 jail.local Datei (basierend auf der jail.conf Datei) und legen Sie die SSH-spezifischen Regeln in der jail.local ab Datei. Dadurch können Sie Einstellungen in jail.conf überschreiben Datei für Ihren Server.
1. Führen Sie awk
aus Befehl unten, um Folgendes auszuführen:
- Drucken Sie den Inhalt (
'{ printf "# "; print; }'
) des/etc/fail2ban/jail.conf
Datei. - Erstellen Sie eine Datei namens jail.local (basierend auf der jail.conf Datei), die verwendet werden kann, um die Standardeinstellungen in der jail.conf zu überschreiben Datei.
- Pipe den Inhalt von
/etc/fail2ban/jail.conf
Datei intee
Befehl. Dadurch wirdjail.conf
geschrieben Dateiinhalt in Ihr lokales Dateisystem (/etc/fail2ban/jail.local
).
awk '{ printf "# "; print; }' /etc/fail2ban/jail.conf | sudo tee /etc/fail2ban/jail.local
2. Nachdem Sie die Datei jail.local erstellt haben Datei, führen Sie ls
aus Befehl unten. Der Befehl listet den Inhalt des Fail2Ban-Verzeichnisses Ihres Servers auf (/etc/fail2ban
), um zu überprüfen, ob Ihre jail.local Datei wird korrekt generiert.
ls /etc/fail2ban
Wenn Sie die neue Datei jail.local sehen Datei, wie unten gezeigt, dann wurde Ihre lokale Datei korrekt generiert.
3. Öffnen Sie /etc/fail2ban/jail.local Datei in Ihrem bevorzugten Texteditor und navigieren Sie zu [ssh] Sektion.
Entkommentieren Sie [sshd] und aktiviert Optionen durch Löschen des # Symbol vor den Optionen, wie unten gezeigt, um SSH zu aktivieren.
Entfernen Sie ab diesem Punkt bis zum Ende des Tutorials das # Symbol vor Abschnitten oder Optionen, um sie zu aktivieren.
4. Scrollen Sie nach unten und kommentieren Sie [DEFAULT] aus Abschnitt unten gezeigt. In diesem Abschnitt konfigurieren Sie die Standardeinstellungen für Fail2Ban. Alle Einstellungen in diesem Abschnitt werden auf alle Jails angewendet, die Fail2Ban verwaltet.
5. Scrollen Sie als Nächstes nach unten zu bantime Abschnitt und legen Sie eine Sperrzeit fest für 60 Protokoll. Die bantime Die Option legt die Zeitspanne in Minuten fest, die eine IP-Adresse nach einem fehlgeschlagenen Anmeldeversuch gesperrt wird.
Die Standardeinstellung für die Bantime beträgt 600 Sekunden (10 Minuten). Sie können diese Einstellung nach Ihren Wünschen anpassen, aber es ist wichtig zu beachten, dass Ihr Server umso mehr belastet wird, je niedriger die Bantime-Einstellung ist.
6. Navigieren Sie zur findtime und maxretry Optionen. Halten Sie die findtime ein so wie es ist (10m ) und verringern Sie maxretry bis 3 .
Die findtime Die Option legt die Zeitspanne in Minuten fest, die eine IP-Adresse sich nicht anmelden kann, bevor sie gesperrt wird. Während die maxretry Die Option legt die Anzahl der fehlgeschlagenen Anmeldeversuche fest, bevor eine IP-Adresse gesperrt wird.
Die standardmäßige Suchzeit Einstellung ist 10 Minuten und maxretry beträgt 5 Minuten. Daher wird eine IP-Adresse, die sich innerhalb von 10 Minuten fünfmal nicht anmeldet, gesperrt.
7. Scrollen Sie nach unten, entfernen Sie die Kommentare und konfigurieren Sie die destemail , Absender und mta Optionen:
- destemail – Geben Sie eine E-Mail-Adresse ein, an die Fail2Ban Benachrichtigungen sendet.
- Absender – Setzen Sie das „Von“-Feld in der E-Mail, die Fail2Ban an destemail sendet .
- mta – Behalten Sie die Vorgabe bei (sendmail ) wie es ist. Die mta Die Option legt den E-Mail-Lieferagenten fest, den Fail2Ban zum Senden von Benachrichtigungen verwendet.
8. Navigieren Sie zur Aktion Optionen, wie unten gezeigt, und kommentieren Sie action_mwl aus Möglichkeit. Dadurch kann Fail2Ban Logwatch-E-Mails an Sie senden. Sie können Logwatch-E-Mails überprüfen, um mögliche Sicherheitsprobleme auf Ihrem Server weiter zu untersuchen.
Speichern Sie die Änderungen und beenden Sie den Texteditor.
9. Führen Sie nun die folgenden Befehle aus, um Ihren fail2ban
neu zu starten Service.
sudo service fail2ban stop
sudo service fail2ban start
10. Führen Sie schließlich den folgenden Befehl aus, um Ihren fail2ban
zu überprüfen Dienst status
. sudo service fail2ban status
Wenn der Fail2Ban-Dienst funktioniert, erhalten Sie eine Ausgabe wie die folgende.
sudo service fail2ban status
Wenn der Fail2Ban-Dienst funktioniert, erhalten Sie eine Ausgabe wie die folgende.
Testen Ihrer Sperrkonfigurationen
Sie haben gerade Fail2Ban konfiguriert, jetzt ist es an der Zeit zu testen, ob die Sperrkonfigurationen tatsächlich funktionieren. Versuchen Sie mehrere fehlgeschlagene SSH-Anmeldungen an Ihren Fail2Ban-Server von einem sekundären Server aus und prüfen Sie, ob dieser sekundäre Server gesperrt wird.
1. Melden Sie sich bei Ihrem sekundären Server (Debian) an und führen Sie den folgenden Befehl für SSH auf Ihrem Fail2Ban-Server aus.
Diese Demo verwendet einen Debian 10-Server mit einer IP von 134.122.20.103 bis ssh
zum fail2ban
Server mit der IP 69.28.83.134
.
ssh [email protected]
2. Geben Sie ein zufälliges Passwort ein, wenn Sie dazu aufgefordert werden, und drücken Sie die Eingabetaste.
Beim ersten Versuch stoppt der Fail2Ban-Server den SSH-Anmeldeversuch und gibt die Meldung Permission denied aus Nachricht, wie unten gezeigt. Wiederholen Sie den SSH-Anmeldeversuch etwa zwei- bis dreimal, und der Fail2Ban-Server reagiert schließlich nicht mehr auf Ihren SSH-Anmeldeversuch.
An diesem Punkt erhalten Sie keine Berechtigung verweigert Nachricht mehr, aber ein leerer Bildschirm. Ein leerer Bildschirm zeigt an, dass Ihr zweiter Server (Debian) vom Fail2Ban-Server gesperrt wurde.
Aber vielleicht haben Sie bereits eine Liste mit IP-Adressen, die von Ihrem Fail2Ban-Server blockiert werden sollen. Öffnen Sie in diesem Fall die Datei jail.local Datei und navigieren Sie zu [DEFAULT] Sektion. Entkommentieren Sie das ignoreip Option und stellen Sie die IP-Adressen auf Sperren ein, wie unten gezeigt.
Die Adresse kann entweder aus mehreren separaten IPv4- oder IPv6-Einträgen bestehen oder durch Kommas getrennt werden.
3. Führen Sie auf Ihrem Fail2Ban-Server (Ubuntu) iptables
erneut aus Befehl unten, um Ihre Firewall-Regeln anzuzeigen.
sudo iptables -S
Beachten Sie unten, dass es eine neue Regel gibt, die SSH-Anmeldeversuche von 134.122.20.103 ablehnt IP Adresse.
Sie erhalten außerdem bei erfolgreicher Sperrung eine E-Mail von Fail2Ban 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 und Ihren Server vor möglichen Schäden bewahrt hat.
Schlussfolgerung
In diesem Tutorial haben Sie gelernt, wie Sie Fail2Ban auf einem Ubuntu-Server konfigurieren. An diesem Punkt sollten Sie gut mit dem Wissen ausgestattet sein, um Ihren SSH-Server vor Brute-Force-Angriffen zu schützen.
Warum also nicht dieses neu gewonnene Wissen noch eine Stufe höher bringen? Vielleicht beginnen Sie damit, IPs auf allen Ports mit Fail2Ban auf einem Docker-Host zu blockieren?