Fail2ban - Benutzerdefinierter Filter für andere Webdienste
Fail2ban Filter für andere Webdienste, die keine eigenes Logging durchführen. z.B.: moodle (educloud), wordpress, joomla.
Normale Einrichtung
1. Eine Fail2ban Filter-Conf-Datei für den Webdienst anlegen. Hier als Beispiel der Webdienst "DIENSTNAME"
vim /etc/fail2ban/filter.d/DIENSTNAME.conf
In der Datei DIENSTNAME.conf folgenden Code einfügen und die URL nach "POST" ANPASSEN:
# DIENSTNAME 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 /educloud/login/index.php HTTP/1.1 # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
Dieses Regex behindelt hier folgende Einträge. Loginversuch: Logeintrag Beispiel von Moodle:
81.217.143.20 - - [28/Feb/2018:14:40:54 +0100] "POST /educloud/login/index.php HTTP/1.1" 303 906 "https://ardmail.net/educloud/login/index.php" "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"
2. Den Filter in die jail.local Datei eintragen:
[DIENSTNAME] enabled = true filter = DIENSTNAME 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 Apache2 Standardkonfigurationen sollte dies passen.
Fail2ban Filter testen
fail2ban-regex /var/log/apache2/access.log /etc/fail2ban/filter.d/DIENSTNAME.conf
Mehrere Überprüfungen / Mehrere Zeilen verwenden im failregex
BEMERKUNG: Wenn auf mehrere Matches (Zeilen in logfiles) überprüft werden soll, dann gehören diese in seperaten Zeilen.
A failregex can have multiple lines, any one of which may match a line of the log file.
Beispiel-Code:
failregex = Authentication failure for .* from <HOST> Failed [-/\w]+ for .* from <HOST> ROOT LOGIN REFUSED .* FROM <HOST> [iI](?:llegal|nvalid) user .* from <HOST>