Fail2ban scannt Protokolldateien für verschiedene Dienste (SSH, FTP, SMTP, Apache usw.) und bannt die IP, die zu viele Passwortfehler macht. Es aktualisiert auch die Firewall-Regeln, um diese IP-Adressen abzulehnen.
Fail2ban ist ein Intrusion-Prevention-Framework, das in der Programmiersprache Python geschrieben ist.
Hauptzweck von Fail2ban ist es, Brute-Force-Login-Angriffe zu verhindern.
Lesen Sie auch unseren früheren Artikel über Tripwire (Linux Host Based Intrusion Detection System).
Fail2ban installieren
Um fail2ban von der Quelle zu installieren, laden Sie es von sourceforge herunter..
Verwenden Sie apt-get, um Fail2ban wie unten gezeigt auf einem Debian-basierten System zu installieren.
# apt-get install fail2ban
Sie können Fail2ban auch manuell installieren, indem Sie das fail2ban deb-Paket herunterladen.
# dpkg -i fail2ban_0.8.1-1_all.deb
So konfigurieren Sie fail2ban
Alle Fail2ban-Konfigurationsdateien befinden sich im Verzeichnis /etc/fail2ban.
/etc/fail2ban/fail2ban.conf
Hauptzweck dieser Datei ist die Konfiguration von Fail2ban-Log-bezogenen Anweisungen.
- Loglevel:Legen Sie die Loglevel-Ausgabe fest.
- logtarget :Geben Sie den Protokolldateipfad an
Von Fail2ban durchgeführte Aktionen werden in der Datei /var/log/fail2ban.log protokolliert. Sie können die Ausführlichkeit in der conf-Datei ändern auf:1 – ERROR, 2 – WARN, 3 – INFO oder 4 – DEBUG.
/etc/fail2ban/jail.conf
Die Datei jail.conf enthält die Deklaration der Dienstkonfigurationen. Diese Konfigurationsdatei ist in verschiedene Kontexte aufgeteilt. Die DEFAULT-Einstellungen gelten für alle Abschnitte.
Der folgende DEFAULT-Abschnitt von jail.conf besagt, dass nach fünf fehlgeschlagenen Zugriffsversuchen von einer einzelnen IP-Adresse innerhalb von 600 Sekunden oder 10 Minuten (findtime) diese Adresse automatisch für 600 Sekunden (bantime) blockiert wird.
[DEFAULT] ignoreip = 127.0.0.1 maxretry = 5 findtime = 600 bantime = 600
- ignoreip:Dies ist eine durch Leerzeichen getrennte Liste von IP-Adressen, die nicht von fail2ban blockiert werden können.
- maxretry:Maximale Anzahl fehlgeschlagener Anmeldeversuche, bevor ein Host durch fail2ban blockiert wird.
- bantime:Zeit in Sekunden, die ein Host blockiert wird, wenn er von fail2ban abgefangen wurde (600 Sekunden =10 Minuten).
Dienstkonfigurationen
Standardmäßig werden einige Dienste als Vorlagen eingefügt. Es folgt ein Beispiel für den Abschnitt ssh-Dienste.
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log action = iptables
- enabled :Aktiviert die fail2ban-Prüfung für den ssh-Dienst
- port:Dienstport (auf den in der /etc/services-Datei verwiesen wird)
- filter:Name des Filters, der vom Dienst verwendet werden soll, um Übereinstimmungen zu erkennen. Dieser Name entspricht einem Dateinamen in „/etc/fail2ban/filter.d“; ohne die Erweiterung „.conf“. Beispiel:„filter =sshd“ bezieht sich auf „/etc/fail2ban/filter.d/sshd.conf“.
- logpath:Die Protokolldatei, die fail2ban auf fehlgeschlagene Anmeldeversuche überprüft.
- Aktion:Diese Option teilt fail2ban mit, welche Aktion ausgeführt werden soll, sobald ein Filter zutrifft. Dieser Name entspricht einem Dateinamen in „/etc/fail2ban/action.d/“ ohne die Erweiterung „.conf“. Zum Beispiel:„action =iptables“ bezieht sich auf /etc/fail2ban/action.d/iptables.conf“.
Fail2ban überwacht die Datei /var/log/auth.log auf fehlgeschlagene Zugriffsversuche, und wenn es wiederholt fehlgeschlagene ssh-Anmeldeversuche von derselben IP-Adresse oder demselben Host findet, stoppt fail2ban weitere Anmeldeversuche von dieser IP-Adresse/diesem Host, indem es sie mit blockiert fail2ban iptables Firewall-Regel.
Fail2ban-Filter
Das Verzeichnis /etc/fail2ban/filter.d enthält reguläre Ausdrücke, die verwendet werden, um Einbruchsversuche, Passwortfehler usw. für verschiedene Dienste zu erkennen.
Zum Beispiel:
- sshd.conf – Fail2ban ssh-bezogene Filter
- apache-auth.conf – Fail2ban-Apache-Dienstfilter
Wir können auch unseren eigenen regulären Ausdruck hinzufügen, um unerwünschte Aktionen zu finden.
Fail2ban-Aktionen
Das Verzeichnis /etc/fail2ban/action.d enthält verschiedene Skripte, die Aktionen definieren, die ausgeführt werden, sobald ein Filter zutrifft. Pro Dienst ist nur ein Filter zulässig, aber es ist möglich, mehrere Aktionen in separaten Zeilen anzugeben.
Zum Beispiel:
- IPtables.conf – IP-Adresse sperren und entsperren
- Mail.conf – E-Mail an konfigurierten Benutzer senden
Fail2ban-Dienst starten/stoppen
Nachdem Sie Konfigurationsänderungen vorgenommen haben, stoppen und starten Sie den Fail2ban-Daemon wie unten gezeigt.
# /etc/init.d/fail2ban stop # /etc/init.d/fail2ban start