Benutzerdefinierter Fail2ban-Filter

This page is a translated version of the page Fail2ban custom filter rule and the translation is 58% complete.

Dieses Tutorial zeigt wie man ein Fail2ban Custom Filter (benutzerdefinierten Filter) für Web Applikationen (z.B. Joomla, Wordpress, etc.) erstellt.

Fail2ban wird benötigt um Brute-Force-Attacken zu blockieren. Einfacheste Erklärung: Eine Brute-Force-Attacke wird durch geführt, wenn man versucht sich in eine Webseite einzuloggen, durch das Ausprobieren von unzähligen Passworts bis das Einloggen erfolgreich gelingt. Mit diesem Fail2ban-Filter wird dieses Problem vermieden.

Mehr über Brute force attacken: https://de.wikipedia.org/wiki/Brute-Force-Methode


Einen benutzerdefinierten Filter für Fail2ban einrichten

Zuerst muss eine Fail2ban Filter-Conf-Datei für den Webdienst angelegt werden. Hier als Beispiel der Webdienst "SERVICENAME"

vim /etc/fail2ban/filter.d/SERVICENAME.conf


In der Datei SERVICENAME.conf folgenden Code einfügen und die URL nach "POST" ANPASSEN:

# SERVICENAME configuration file
#


[Definition]

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
#

failregex = ^<HOST> -.*POST /myurl/login/index.php HTTP/1.1

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

Fail2ban überprüft Loginversuche auf Webseiten mittels dem Failregex. In diesem Beispiel vermeidet das failregex folgenden Vorfall. Auszug eines Logineintrags von Apache2:

127.0.0.1 - - [28/Feb/2018:14:40:54 +0100] "POST /myurl/login/index.php HTTP/1.1" 303 906 "https://somewebsite.tld/myurl/login/index.php" "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"


Jetzt müssen Sie einen Jail für den bentzerdefinierten Filter erstellen. Das Jail für den erstellen benutzerdefinierten Filter wird dann in der Datei jail.local hinzugefügt.

[SERVICENAME]
enabled = true
filter = SERVICENAME
action  = iptables-multiport[name=web, port="http,https", protocol=tcp]
logpath = /var/log/apache2/access.log
maxretry = 5


ACHTUNG: action kann ausgelassen werden (um Standardeinstellung zu übernehmen). Eventuell müssen logpath oder der failregex angepasst werden. Bei einer Standardkonfigurationen von Apache2 (unter Ubuntu oder Debian) sollte dies passen.

Damit sind wir mit dem Einrichten eines benutzerdefnierten Fail2ban-Filters fertig. Fail2ban wird nach matches (Vorfälle) gemäß der Einstellungen des benutzerdefinierten Filters überprüfen. Bitte vergessen Sie nicht fail2ban neuzustarten!


Fail2ban-Filter testen

Der Fail2ban-Filter kann mit dem Programm fail2ban-regex getestet werden.

fail2ban-regex /var/log/apache2/access.log /etc/fail2ban/filter.d/SERVICENAME.conf


Mehrere Überprüfungen / Mehrere Zeilen verwenden im failregex

Wenn Sie auf mehrere matches (Vorfälle / Zeilen in den Logdateien) überprüfen möchten, dann müssen Sie das regex in seperate Zeilen hinzufügen. Ein Failregex kann mehrere Zeile haben. Eine dieser Zeilen wird aber auf eine Zeile der Logdatei überprüft (für matches).

Example code:

failregex = Authentication failure for .* from <HOST>
            Failed [-/\w]+ for .* from <HOST>
            ROOT LOGIN REFUSED .* FROM <HOST>
            [iI](?:llegal|nvalid) user .* from <HOST>

Kategorie: Linux