Jeder Dienst, der dem Internet ausgesetzt ist, ist dem Risiko von Malware-Angriffen ausgesetzt. Wenn Sie beispielsweise einen Dienst in einem öffentlich zugänglichen Netzwerk ausführen, können Angreifer Brute-Force-Versuche verwenden, um sich bei Ihrem Konto anzumelden.
Fail2ban ist ein Tool, das hilft, Ihren Linux-Computer vor Brute-Force- und anderen automatisierten Angriffen zu schützen, indem es die Dienstprotokolle auf böswillige Aktivitäten überwacht. Es verwendet reguläre Ausdrücke, um Protokolldateien zu scannen. Alle Einträge, die mit den Mustern übereinstimmen, werden gezählt, und wenn ihre Anzahl einen bestimmten vordefinierten Schwellenwert erreicht, sperrt Fail2ban die anstößige IP über die System-Firewall für eine bestimmte Zeit. Wenn die Sperrfrist abgelaufen ist, wird die IP-Adresse von der Sperrliste entfernt.
Dieser Artikel beschreibt die Installation und Konfiguration von Fail2ban unter Ubuntu 20.04.
Fail2ban auf Ubuntu installieren #
Das Fail2ban-Paket ist in den Standard-Repositorys von Ubuntu 20.04 enthalten. Um es zu installieren, geben Sie den folgenden Befehl als root oder Benutzer mit sudo-Berechtigungen ein:
sudo apt update
sudo apt install fail2ban
Sobald die Installation abgeschlossen ist, wird der Fail2ban-Dienst automatisch gestartet. Sie können dies überprüfen, indem Sie den Status des Dienstes überprüfen:
sudo systemctl status fail2ban
Die Ausgabe sieht folgendermaßen aus:
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-08-19 06:16:29 UTC; 27s ago
Docs: man:fail2ban(1)
Main PID: 1251 (f2b/server)
Tasks: 5 (limit: 1079)
Memory: 13.8M
CGroup: /system.slice/fail2ban.service
└─1251 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Das ist es. An diesem Punkt läuft Fail2Ban auf Ihrem Ubuntu-Server.
Fail2ban-Konfigurationsnummer
Die standardmäßige Fail2ban-Installation enthält zwei Konfigurationsdateien, /etc/fail2ban/jail.conf
und /etc/fail2ban/jail.d/defaults-debian.conf
. Es wird nicht empfohlen, diese Dateien zu ändern, da sie möglicherweise überschrieben werden, wenn das Paket aktualisiert wird.
Fail2ban liest die Konfigurationsdateien in der folgenden Reihenfolge. Jede .local
Datei überschreibt die Einstellungen aus der .conf
Datei:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
Für die meisten Benutzer ist der einfachste Weg, Fail2ban zu konfigurieren, das Kopieren der jail.conf
zu jail.local
und ändern Sie die .local
Datei. Fortgeschrittene Benutzer können eine .local
erstellen Konfigurationsdatei von Grund auf neu. Die .local
Datei muss nicht alle Einstellungen aus der entsprechenden .conf
enthalten Datei, nur die, die Sie überschreiben möchten.
Erstellen Sie eine .local
Konfigurationsdatei aus der standardmäßigen jail.conf
Datei:
sudo cp /etc/fail2ban/jail.{conf,local}
Um mit der Konfiguration des Fail2ban-Servers zu beginnen, öffnen Sie die jail.local
Datei mit Ihrem Texteditor:
sudo nano /etc/fail2ban/jail.local
Die Datei enthält Kommentare, die beschreiben, was jede Konfigurationsoption bewirkt. In diesem Beispiel ändern wir die Grundeinstellungen.
IP-Adressen auf die Whitelist #
IP-Adressen, IP-Bereiche oder Hosts, die Sie von der Sperrung ausschließen möchten, können zu ignoreip
hinzugefügt werden Richtlinie. Hier sollten Sie Ihre lokale PC-IP-Adresse und alle anderen Computer hinzufügen, die Sie auf die Whitelist setzen möchten.
Entkommentieren Sie die Zeile, die mit ignoreip
beginnt und fügen Sie Ihre IP-Adressen durch Leerzeichen getrennt hinzu:
ignoreip = 127.0.0.1/8 ::1 123.123.123.123 192.168.1.0/24
Sperreinstellungen #
Die Werte von bantime
, findtime
und maxretry
Optionen definieren die Sperrzeit und Sperrbedingungen.
bantime
ist die Dauer, für die die IP gesperrt ist. Wenn kein Suffix angegeben ist, werden standardmäßig Sekunden verwendet. Standardmäßig ist die bantime
Der Wert ist auf 10 Minuten eingestellt. Im Allgemeinen werden die meisten Benutzer eine längere Sperrzeit festlegen wollen. Ändern Sie den Wert nach Ihren Wünschen:
bantime = 1d
Um die IP dauerhaft zu sperren, verwenden Sie eine negative Zahl.
findtime
ist die Dauer zwischen der Anzahl der Fehler, bevor ein Bann gesetzt wird. Wenn beispielsweise Fail2ban so eingestellt ist, dass eine IP nach fünf Fehlern gesperrt wird (maxretry
, siehe unten), müssen diese Fehler innerhalb der findtime
auftreten Dauer.
findtime = 10m
maxretry
ist die Anzahl der Fehler, bevor eine IP gesperrt wird. Der Standardwert ist auf fünf gesetzt, was für die meisten Benutzer in Ordnung sein sollte.
maxretry = 5
E-Mail-Benachrichtigungen #
Fail2ban kann E-Mail-Benachrichtigungen senden, wenn eine IP gesperrt wurde. Um E-Mails zu empfangen, müssen Sie ein SMTP auf Ihrem Server installiert haben und die Standardaktion ändern, die nur die IP auf %(action_mw)s
bannt , wie unten gezeigt:
action = %(action_mw)s
%(action_mw)s
sperrt die betreffende IP und sendet eine E-Mail mit einem Whois-Bericht. Wenn Sie die relevanten Protokolle in die E-Mail aufnehmen möchten, setzen Sie die Aktion auf %(action_mwl)s
.
Sie können auch die sendenden und empfangenden E-Mail-Adressen anpassen:
/etc/fail2ban/jail.localdestemail = [email protected]
sender = [email protected]
Fail2ban-Gefängnisse #
Fail2ban verwendet ein Gefängniskonzept. Ein Jail beschreibt einen Dienst und beinhaltet Filter und Aktionen. Log-Einträge, die dem Suchmuster entsprechen, werden gezählt, und wenn eine vordefinierte Bedingung erfüllt ist, werden die entsprechenden Aktionen ausgeführt.
Fail2ban wird mit einer Reihe von Gefängnissen für verschiedene Dienste ausgeliefert. Sie können auch Ihre eigenen Jail-Konfigurationen erstellen.
Standardmäßig ist nur sshjail aktiviert. Um ein Jail zu aktivieren, müssen Sie enabled = true
hinzufügen nach dem Gefängnistitel. Das folgende Beispiel zeigt, wie das proftpd-Jail aktiviert wird:
[proftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
logpath = %(proftpd_log)s
backend = %(proftpd_backend)s
Die Einstellungen, die wir im vorherigen Abschnitt besprochen haben, können pro Jail festgelegt werden. Hier ist ein Beispiel:
/etc/fail2ban/jail.local[sshd]
enabled = true
maxretry = 3
findtime = 1d
bantime = 4w
ignoreip = 127.0.0.1/8 23.34.45.56
Die Filter befinden sich in /etc/fail2ban/filter.d
Verzeichnis, gespeichert in einer Datei mit dem gleichen Namen wie das Gefängnis. Wenn Sie über eine benutzerdefinierte Einrichtung und Erfahrung mit regulären Ausdrücken verfügen, können Sie die Filter feinabstimmen.
Jedes Mal, wenn Sie eine Konfigurationsdatei bearbeiten, müssen Sie den Fail2ban-Dienst neu starten, damit die Änderungen wirksam werden:
sudo systemctl restart fail2ban
Fail2ban-Client-Nr.
Fail2ban wird mit einem Befehlszeilentool namens fail2ban-client
ausgeliefert die Sie verwenden können, um mit dem Fail2ban-Dienst zu interagieren.
Um alle verfügbaren Optionen anzuzeigen, rufen Sie den Befehl mit -h
auf Möglichkeit:
fail2ban-client -h
Dieses Tool kann verwendet werden, um IP-Adressen zu sperren/entsperren, Einstellungen zu ändern, den Dienst neu zu starten und vieles mehr. Hier sind ein paar Beispiele:
-
Überprüfen Sie den Jail-Status:
sudo fail2ban-client status sshd
-
Eine IP-Adresse entsperren:
sudo fail2ban-client set sshd unbanip 23.34.45.56
-
Eine IP sperren:
sudo fail2ban-client set sshd banip 23.34.45.56