Alle Server, die dem Internet ausgesetzt sind, sind von Malware-Angriffen bedroht. Wenn Sie beispielsweise eine Software mit einem öffentlichen Netzwerk verbunden haben, können Angreifer Brute-Force-Versuche verwenden, um Zugriff auf die Anwendung zu erlangen.
Fail2ban ist ein Open-Source-Tool, das Ihren Linux-Computer vor Brute-Force- und anderen automatisierten Angriffen schützt, 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 für eine bestimmte Zeit. Die standardmäßige System-Firewall wird als Sperraktion verwendet. Wenn die Sperrfrist abgelaufen ist, wird die IP-Adresse von der Sperrliste entfernt.
Dieser Artikel erklärt, wie man Fail2ban unter CentOS 8 installiert und konfiguriert.
Fail2ban auf CentOS installieren #
Das Fail2ban-Paket ist in den standardmäßigen CentOS 8-Repositories enthalten. Um es zu installieren, geben Sie den folgenden Befehl als root oder Benutzer mit sudo-Berechtigungen ein:
sudo dnf install fail2ban
Sobald die Installation abgeschlossen ist, aktivieren und starten Sie den Fail2ban-Dienst:
sudo systemctl enable --now fail2ban
Um zu überprüfen, ob der Fail2ban-Server läuft, geben Sie Folgendes ein:
sudo systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-09-10 12:53:45 UTC; 8s ago
...
Das ist es. An diesem Punkt läuft Fail2Ban auf Ihrem CentOS-Server.
Fail2ban-Konfigurationsnummer
Die Standardinstallation von Fail2ban enthält zwei Konfigurationsdateien, /etc/fail2ban/jail.conf
und /etc/fail2ban/jail.d/00-firewalld.conf
. Diese Dateien sollten nicht geändert werden, da sie möglicherweise überschrieben werden, wenn das Paket aktualisiert wird.
Fail2ban liest die Konfigurationsdateien in der folgenden Reihenfolge:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
Jede .local
Datei überschreibt die Einstellungen aus der .conf
Datei.
Der einfachste Weg, Fail2ban zu konfigurieren, ist 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-Mail-Nachrichten 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
wird die betreffende IP sperren und eine E-Mail mit einem Whois-Bericht senden. 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 sind unter CentOS 8 keine Jails aktiviert. Um ein Jail zu aktivieren, müssen Sie enabled = true
hinzufügen nach dem Gefängnistitel. Das folgende Beispiel zeigt, wie Sie sshd
aktivieren Gefängnis:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_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
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 die Konfigurationsdatei geändert wird, muss der Fail2ban-Dienst neu gestartet werden, 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 des fail2ban-client
anzuzeigen Befehl, rufen Sie ihn 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 einige Beispiele:
-
Überprüfen Sie den Status eines Gefängnisses:
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