fail2ban ist ein Paket aus Client-, Server- und Konfigurationsdateien, mit dem das System vor verschiedenen böswilligen Angriffen geschützt wird. Es sichert auch Linux-Serverdienste gegen Denial of Service (DoS). Andere grundlegende Funktionen sind hingegen das Überwachen von Protokolldateien, das Suchen nach vordefinierten Mustern und das vorübergehende Blockieren von IP-Adressen. Es wird unter der GNU General Public License Version 2 veröffentlicht und basiert auf Python.
Es kann sowohl im Hintergrund (als Dämon) als auch im Vordergrund laufen. Das Programm ist beispielsweise nützlich, wenn Sie bei einem SSH-Server die Anzahl der Anmeldeversuche begrenzen möchten. Das Programm fail2ban untersucht die Protokolldateien des Systems auf fehlgeschlagene Anmeldeversuche und blockiert dann die Internetadresse (IP) des Angreifers für einen bestimmten Zeitraum.
Hier lernen wir die Schritte zur Installation von Fail2ban auf Debian 11 Bulleyes und seinen Konfigurationsprozess kennen.
Fail2ban-Installation auf Debian 11
Die Pakete zum Installieren und Konfigurieren von Fail2ban sind im offiziellen Debian 11 Repo verfügbar, daher müssen wir nur den apt-Befehl für seine Installation verwenden.
Führen Sie zuerst den Update-Befehl aus, um den Repo-Cache neu zu erstellen-
sudo apt update
Und dann der Hauptbefehl, um dieses Sicherheitstool abzurufen-
sudo apt install fail2ban
Durch Ausführen des obigen Befehls werden die folgenden Programme nach der Installation verfügbar:
- fail2ban-server – der Server
- fail2ban-client – Clientprogramm zur Konfiguration und Auswertung des Servers
- fail2ban-regex- Programm zum Testen regulärer Ausdrücke
Aktivieren und überprüfen Sie den Status seiner Dienste-
sudo systemctl enable fail2ban sudo systemctl status fail2ban
Konfiguration auf Debian 10/11
fail2ban liest Konfigurationsdateitypen mit den Erweiterungen .conf
und .local
. Dateien mit der Erweiterung .conf
werden während der Installation erstellt und während eines Paket-Upgrades überschrieben daher müssen alle Änderungen in der entsprechenden .local
vorgenommen werden Dateien. Fügen Sie daher in dieser Datei nur Werte hinzu oder ändern Sie diese, die sich von den Standard- oder globalen Einstellungen unterscheiden.
Fail2ban hat drei Konfigurationsdateitypen:
/etc/fail2ban/action.d/*.conf/*
/etc/fail2ban/filter.d/*.conf/*
/etc/fail2ban/jail.conf /etc/fail2ban/jail.d/*.conf
Aktionen.d
Die Dateien im Verzeichnis /etc/fail2ban/action.d/ enthalten die Befehle zum (Entsperren) von IP-Adressen. Aktionsdateien enthalten zwei Abschnitte: [Definition]
und [Init]
. Die Einträge in der [Init]
-Abschnitt wird verwendet, um die im Jail definierten Regeln zu überschreiben. Die Beispiele in der folgenden Tabelle stammen aus der iptables-multiport-conf Handlung. Alle Befehle werden mit den Benutzerrechten fail2ban ausgeführt.
Übersicht der Optionen | ||
Eintrag | Beschreibung | Beispiel |
[Definition] | ||
Aktionsstart | Befehle, die ausgeführt werden, wenn fail2ban gestartet wird. | actionstart =iptables -N fail2ban- iptables -A fail2ban- iptables -I |
actionstop | Befehle, die beim Beenden von fail2ban ausgeführt werden. | actionstop =iptables -D iptables -F fail2ban- |
actioncheck | Befehle, die vor jedem Aktionsban ausgeführt werden. Diese dienen dazu, die aktuelle Umgebung auf Funktionalität zu prüfen. | actioncheck =iptables -n -L |
Aktionsverbot | Befehle, die ausgeführt werden, wenn eine IP gesperrt wird. Die Bedingung ist immer maxretry muss überschritten werden und findtime fallen knapp. | actionban =iptables -I fail2ban- |
actionunban | Befehle zum Entsperren. | actionunban =iptables -D fail2ban- |
[Init] | ||
name | Der Standardname der Kette | name =default |
Port | Anschluss | port =ssh |
Protokoll | Wird intern vom Konfigurationsleser verwendet. Mögliche Werte: tcp , udp , icmp , alle . | Protokoll =TCP |
Kette | Die iptables-Kette, zu der die fail2ban-Regeln hinzugefügt werden sollen. Standard ist INPUT . | Kette =INPUT |
Aktions-Tags | Aktions-Tags sind Platzhalter, die in actionban verwendet werden können , actionunban und actioncheck . | |
ip | Die zu sperrende IPv4-Adresse. | |
Fehler | Die Anzahl der gezählten Fehlversuche. | |
Zeit | Der Unix-Zeitstempel (Sekunden) des Verbots. | |
Übereinstimmungen | Die verketteten Einträge aus den Zeilen der Logdatei, die zum Bann führten. Viele Shell-Zeichen werden maskiert. |
Filter.d
Die Dateien im Verzeichnis /etc/fail2ban/filter.d/ enthält die regulären Ausdrücke zum Analysieren der Logfiles und zum Extrahieren der IP-Adresse oder falls usedns verwendet werden, der Hostname. Diese Dateien enthalten nur zwei Abschnitte: [Definition]
und [Enthält]
. Letzteres kann verwendet werden, um andere Konfigurationsdateien einzulesen.
Die Beispiele in der folgenden Tabelle stammen aus der iptables-multiport-conf Handlung. Alle Befehle werden mit den Benutzerrechten fail2ban ausgeführt.
Übersicht der Optionen | ||
Eintrag | Beschreibung | Beispiel |
[Definition] | ||
failregex | Mit Hilfe dieses regulären Ausdrucks werden die Protokolldateien nach Treffern durchsucht. Das Tag ist HOST hier verfügbar,der als Teil der Regex verwendet wird und den Hostnamen oder die IP-Adresse enthält. Die Unterscheidung zwischen IP-Adresse und Hostname wird automatisch von fail2ban ermittelt. | failregex =^%(__prefix_line)sFAIL:\S+ Adresse von= ^%(__prefix_line)sFAIL:\S+ libwrap von= |
Regex ignorieren | Hier können Ausnahmen definiert werden, auch wenn sie für den obigen Failregex gültig waren. ignoreregex unterstützt String-Interpolation so dass Sie Ihre eigenen Variablen mit %(variablenname)s verwenden können . | ignoreregex = |
[ENTHALTEN] | ||
vor | Wird verwendet, damit eine Datei vor der eingestellten gelesen wird. Ein Beispiel ist common.conf | before =common.conf |
nach | Die Datei wird nach der eingestellten gelesen | after =example_after.local |
Beispiel | Nach der Integration der common.conf ist _daemon verfügbar.Siehe /etc/fail2ban/filter.d/common.conf für weitere Details. | _daemon =xinetd |
Jail.conf
Während die jail.conf
Datei kombiniert Aktionen und machte Filter in ein Gefängnis. Der Benutzer muss diese Datei mit der Erweiterung .loca
speichern l seine eigenen Regeln hinzuzufügen oder anzupassen.
Die jail.conf und die folgende Tabelle gibt einen Überblick über die standardmäßig möglichen Werte.
Übersicht der Optionen | ||
Eintrag | Beschreibung | Beispiel |
[STANDARD] | ||
ignoreip | Leerzeichen-getrennte Liste von zu ignorierenden IPs oder Netzwerken. | ignoreip =127.0.0.1/8 192.168.1.33 |
bantime | Sperrzeit in Sekunden. Ein negativer Wert ist ein permanenter Ban. | bantime =86400 |
findtime | Die Anzahl der Sekunden, nach denen der Zähler für maxretry ist zurücksetzen. | findtime =660 |
maxretry | Die maximale Anzahl erfolgloser Versuche, bevor fail2ban die IP bannt. | maxretry =2 |
Backend | Hier kann das Backend, z. B. systemd, eingestellt werden. Die Standardeinstellung ist auto (empfohlen). | backend =systemd |
usedns | Einstellung für das Reverse-Lookup-Verhalten von fail2ban. Mögliche Werte sind yes , nein und warnen .Letzteres bedeutet, dass Einträge mit Hostnamen eine Warnung in der Logdatei ausgeben, was zu einer großen Anzahl von Einträgen führen kann. | usedns =warnen |
[myJail] | Hier kann der Name des Gefängnisses vergeben werden. | [ssh][code> |
aktiviert | (De-) aktiviert das Gefängnis | aktiviert =wahr |
Port | Portdefinition, kann numerisch sein. Mehrere Werte werden durch Kommas getrennt. | port =ssh |
filter =sshd | Name der Filterdatei | /etc/fail2ban/filter.d/sshd.conf |
Protokollpfad | Die zu überwachende Logdatei, die auf den Filter geprüft wird. | logpath =/var/log/auth.log |
maxretry, bantime,... | Es können auch andere Werte für die Standardoptionen definiert werden. | maxretry =3 |
Erstellen Sie Ihre eigene Jail-Konfigurationsdatei
Kopieren wir also jetzt die jail.conf Datei, um eine jail.local zu erstellen Datei, um benutzerdefinierte Einstellungen hinzuzufügen, die dort auch nach dem Upgrade von fail2ban verbleiben.
sudo cp /etc/fail2ban/jail.{conf,local}
Um verschiedene Einstellungen zu konfigurieren, bearbeiten Sie die erstellten lokalen Jail-Dateien
sudo nano /etc/fail2ban/jail.local
Einige Beispiele-
Setzen Sie einige IP-Adressen, IP-Bereiche oder Hosts auf die Whitelist
Angenommen, Sie möchten beim Öffnen der Datei einige IP-Adressen, IP-Bereiche oder Hosts auf die Whitelist setzen, damit sie nicht vom File2ban-Dienst blockiert werden. Dazu definieren wir dasselbe in der neu erstellten Jail.local Datei.
Siehe :So überprüfen Sie die IP-Adresse auf dem Linux-Befehlsterminal
Suchen Sie in der Datei nach #igonreip Zeile und entfernen Sie das # davon. Fügen Sie danach die IP-Adresse oder den IP-Bereich hinzu, den Sie auf die Whitelist setzen möchten.
Bantime, findtime und maxretry
In ähnlicher Weise können wir auch die Zeit der gesperrten IP-Adresse erhöhen oder verringern, indem wir die in der Datei angegebenen Werte der bantime-Option ändern.
[Default] bantime = 10m
Um den Zeitraum zu verkürzen oder zu verlängern, ändern Sie einfach die Standardeinstellung von 10 Minuten nach Belieben. Um die IP-Adresse dauerhaft zu blockieren, verwenden Sie einen negativen Wert.
maxretry
Wie viele Maxima-Versuche muss eine IP-Adresse gemacht haben, um gesperrt zu werden? Standardmäßig ist es fünf und wird mit maxretry
deklariert Option in jail.local
Datei. Wenn Sie es reduzieren möchten, sagen wir, erst nach zwei böswilligen Versuchen sollte die IP blockiert werden, dann ändern Sie die Zahl von 5 auf 2. Auf die gleiche Weise können Sie auch die Anzahl der maximalen Versuche erhöhen.
maxretry = 5
Zeit finden
Es ist die Zeit zwischen den maximalen Wiederholungsversuchen, die für böswillige oder Anmeldungen im System erfolgen sollten, bevor Fail2Ban die jeweilige IP-Adresse blockiert. Zum Beispiel , jemand versucht sich anzumelden, wenn er 5 Versuche in den festgelegten 10 Minuten unternommen hat, dann wird seine IP gesperrt. Sie können jedoch die findtime ändern Wert, um diesen Zeitraum zu verlängern oder zu verkürzen.
findtime = 10m
Fail2ban kann E-Mail-Benachrichtigungen senden
Ja, wenn eine IP gesperrt wird, können Sie die E-Mail-Benachrichtigung dafür erhalten. Sie müssen jedoch aktivieren und definieren, welche E-Mail-Adresse Sie verwenden möchten, um die Benachrichtigung zu erhalten.
Sendmail installieren- Ein Open-Source-Mail-Transfer-Agent (MTA)
sudo apt install sendmail
Jetzt gibt es zwei wichtige Einstellungen, die wir in der jail.local vornehmen müssen Datei, um E-Mail-Benachrichtigungen zu erhalten.
- destemail – E-Mail-Adresse, die verwendet wird, um eine Benachrichtigung zu erhalten.
- Absender – E-Mail-Adresse, von der fail2ban die E-Mails versendet.
Suchen Sie also in der Datei die beiden obigen Einstellungen und fügen Sie Ihre E-Mail-Adresse hinzu-
Suchen Sie als Nächstes die untere Zeile
action = %(action_)s
Und ändern Sie es mit einem der folgenden:
action =%(action_)s
– Dieser sendet eine E-Mail-Benachrichtigung, wenn eine IP-Adresse gesperrt wird.
oder
action =%(action_mwl)s
– Falls Sie die E-Mail-Benachrichtigung für gesperrte Host-IPs einschließlich Protokollinformationen wünschen, verwenden Sie diese Aktionsoption.
Außerdem können Sie sich unsere Liste der besten E-Mail-Client-Apps für Ubuntu oder Debian Linux ansehen.
Dienste in der Fail2ban Jail-Datei aktivieren
Wie ich bereits erwähnt habe, umfasst das erstellte jail.local beide Aktionen und Filter die verwendet werden können, um standardmäßig zugelassene Dienste zu deaktivieren/aktivieren oder eigene zu erstellen.
Zum Beispiel – Standardmäßig ist SSH in Jail.local von Fail2ban aktiviert.
Tatsächlich werden Sie in der Fail2ban Jail-Datei sehen, dass es viele Dienste gibt, die damit einhergehen. Sie müssen sie jedoch zur Verwendung aktivieren. ODER Sie können Ihre eigenen erstellen.
Unter /etc/fail2ban/filters.d Ordner können Sie alle Konfigurations-Filter sehen Dateien für jeden dort verfügbaren Fai2ban Jail-Dienst.
Bevor wir zeigen, wie man sie einschaltet, sehen wir uns an, was die aktivierten Jails-Dienste sind-
sudo fail2ban-client status
Die Ausgabe sieht so aus-
Status |- Number of jail: 1 `- Jail list: sshd
Wenn wir nun einen Jail-Dienst aktivieren möchten, müssen wir enabled =true
hinzufügen in der jail.conf
Datei nach dem Jail-Service-Titel. Das folgende Beispiel zeigt, wie die Apache-Authentifizierung aktiviert wird Gefängnis:
Beispiel:Schalten wir den Fail2ban-Apache-Authentifizierungsdienst ein
Bearbeiten Sie jail.local
und finden Sie vordefinierte Apache-Auth Gefängnisdienst
Speichern die Datei mit Strg+X , Y, und durch Drücken von Enter Schlüssel.
Fail2ban-Server neu starten
sudo systemctl restart fail2ban
Jetzt , verwenden Sie erneut den Fail2ban-Client um zu überprüfen, wie viele Jail-Dienste aktiviert sind-
sudo fail2ban-client status
Diesmal ist die Ausgabe-
Status |- Number of jail: 2 `- Jail list: apache-auth, sshd
Weitere Informationen über den Dienst verwenden Sie seinen Namen mit dem obigen Befehl-
sudo fail2ban-client status apache-auth
Ausgabe:
Status for the jail: apache-auth |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/apache2/error.log `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
Fehler:
Wenn Sie die folgenden Fehler erhalten, bedeutet dies, dass der bestimmte Dienst, den Sie aktivieren möchten, noch nicht auf Ihrem System oder Server installiert ist. Zum Beispiel Wenn ich Apache Jail aktiviert habe, aber Apache selbst nicht auf meinem Server verfügbar ist, wird diese Art von Fehler angezeigt.
fail2ban.service: Main process exited, code=exited, status=255/EXCEPTION [6613]: ERROR Failed to access socket path: /var/run/fail2ban/fail2ban.sock. Is fail2ban running?
Fail2ban-Client-Nutzung
Sogar wir können das Client-Befehlstool von Fail2ban verwenden, um mit seinen verschiedenen Diensten umzugehen – um alle damit verbundenen Befehle anzuzeigen, können Sie das Hilfe-Flag verwenden –
fail2ban-client -h
Zum Beispiel Um einige IPs für einen Dienst zu sperren oder zu entsperren, verwenden Sie die folgende Syntax
Verbieten
fail2ban-client set <JAIL-service> banip <IP>
Zum Entsperren
fail2ban-client set <JAIL-service> unbanip <IP>
Beispiel-
sudo fail2ban-client set sshd banip 192.168.0.6
Endnote-
Das war also ein kurzer Überblick über die Installation und Konfiguration von Fail2ban auf Debian 11 Bullseye oder 10 Buster. Obwohl die Dokumentation des Fail2ban-Tools nicht umfangreich ist, sollten einige trotzdem nachsehen wollen, besuchen Sie die offizielle Website. Hier sind die Links:Projektseite, Dokumentation, GitHub-Seite für Quellcode