Fail2Ban

Veröffentlicht von Thomas Krupa am

Wer selber einen Linuxserver betreibt, der sollte unbedingt fail2ban kennen.

Fail2ban ist eine Log-Parsing-Anwendung, die Systemprotokolle auf Symptome eines automatisierten Angriffs überwacht. Wenn ein Auffälligkeit unter Verwendung der definierten Parameter gefunden wird, fügt Fail2ban eine neue Regel zu iptables/nftables hinzu, um die IP-Adresse des Angreifers zu blockieren, entweder für eine bestimmte Zeit oder permanent. Fail2ban kann Sie auch per E-Mail benachrichtigen, dass ein Angriff stattfindet.

Damit kann man relativ einfach Einbruchsversuche abwenden, z.B. bei SSH-Logins oder wenn jmd. per Skript versucht eine Webanwendung zu finden/hacken.

Die Installation ist ganz einfach:

apt install fail2ban

Zur Konfiguration

Der fail2ban-Dienst bewahrt seine Konfigurationsdateien im Verzeichnis /etc/fail2ban auf. Es gibt eine Datei mit Standardeinstellungen namens jail.conf.

Da diese Datei durch Paket-Upgrades modifiziert werden kann, sollten wir diese Datei nicht an Ort und Stelle editieren, sondern sie kopieren, damit wir unsere Änderungen sicher durchführen können. Damit diese beiden Dateien erfolgreich zusammen arbeiten können, ist es am besten, nur die Einstellungen, die Sie überschreiben möchten, in die Datei jail.local aufzunehmen. Alle Standardoptionen werden aus der Datei jail.conf übernommen.

Auch wenn wir nur die Abweichungen von den Standardeinstellungen in die Datei jail.local aufnehmen sollten, ist es einfacher, eine jail.local-Datei auf der Grundlage der bestehenden jail.conf-Datei zu erstellen. Daher kopieren wir die einfach.

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Ein paar Werte im Abschnitt [Default] sollte man sich ansehen.

ignoreip – welche IP-Adressen werden nicht gefiltert?
bantime – wie lange sollte der Host gesperrt werden
maxretry – wie viele Fehlversuche dürfen im Logfile auftreten
findtime – über welchen Zeitraum müssen Fehlversuche auftreten?

Anschließend kann man den einen oder anderen Abschnitt aktivieren. Zum Beispiel [ssh-iptables] und das fail2ban service neu starten.

systemctl restart fail2ban

Ein Beispiel noch um IP-Adressen zu sperren, die mehrere 400 HTTP-Fehler produzieren. Im jail.local folgenden Abschnitt hinzufügen:

[nginx-4xx]
enabled = true
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 3

und im Ordner filter.d fügen sie die Datei nginx-4xx.conf hinzu, die so aussieht:

[Definition]
failregex = ^<HOST>.*"(GET|POST).*" (404|444|403|400) .*$
ignoreregex = .*(robots.txt|favicon.ico)

Finden sich jetzt im access.log mehrere 404 Fehler der gleichen IP-Adresse, weil jemand eine phpMyAdmin Installation sucht, wird diese IP-Adresse gesperrt.

Natürlich kann die RegEx auch am Logfile getestet werden:

fail2ban-regex /var/log/nginx/access.log ./filter.d/nginx-4xx.conf

IP-Adressen können auch wieder entsperrt werden

fail2ban-client set JAILNAMEHERE unbanip IPADDRESSHERE

Der Status von fail2ban lässt sich auch ermitteln, entweder allgemein, oder gleich für ein bestimmtes „Jail“.

fail2ban-client status 

fail2ban-client JAILNAMEHERE status

Literatur

https://www.fail2ban.org/wiki/index.php/HOWTOs

https://wiki.chrisge.org/security/fail2ban

https://www.howtoforge.de/anleitung/verhindern-von-brute-force-attacks-mit-fail2ban-auf-debian-etch/


0 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.