Gerade eben stand ich vor der Aufgabe, die Kopano-Web-App mit einem fail2ban Schutz zu versehen. Fail2ban arbeitet mit regulären Ausdrücken (regular expressions). Ehrlich gesagt, habe ich davon so gut wie keine Ahnung. 🙂
Egal! Aufgegeben wird nur ein Brief…
Schließlich kam ich zu folgender Lösung.
Der Logeintrag
Im Apache-Error-Log wird bei einem fehlerhaften Loginversuch in die Webapp Folgendes protokolliert:
[Thu Mar 09 19:20:56.097859 2017] [:error] [pid 25634] [client xx.119.xxx.141:6640] Kopano WebApp user: dsafasdf: authentication failure at MAPI, referer: https://kopano.mysite.at/webapp/?logon
Der Fail2ban Filter
Da es sich bei der Fehlermeldung um eine vom „Apachen“ kreierte Fehlermeldung handelt, greife ich im Filter auf die apache-common.conf (siehe INCLUDES) zurück und baue mir folgenden Filter (failregex):
# FILE : /etc/fail2ban/filter.d/kopano-webapp-login.conf
# Fail2Ban configuration file
[INCLUDES]
before = apache-common.conf
failregex = ^%(_apache_error_client)s Kopano WebApp user: .+?(?=:): authentication failure at MAPIignoreregex =
Der erste Teil wertet die Clientinformationen aus, danach folgt ein normaler String Kopano Webapp user: gefolgt von einer regular expression .+?(?=:) die besagt, dass alle folgenden Zeichen bis zum nächsten Doppelpunkt als Übereinstimmung angesehen werden.
Schließlich folgt ein weiterer Doppelpunkt, der wieder als String zu sehen ist, gefolgt von weiterem Text, der dem Text im Logfile entspricht.
Update – So gehts auch:
failregex = ^%(_apache_error_client)s Kopano WebApp user:.* authentication failure at MAPI
Somit ist man nicht mehr auf den Doppelpunkt und die in der ersten Variante angegebene Verrenkung angewiesen.
Die Datei selbst wird unter /etc/fail2ban/filter.d/kopano-webapp-login.conf gespeichert.
Den Filter aktivieren
Im Verzeichnis /etc/fail2ban/ ist die Datei jail.local um folgende Zeilen zu erweitern:
[kopano-webapp]
enabled = true
port = https
filter = kopano-webapp-login
logpath = /var/log/apache2/kopano_ssl_error.log
Fail2ban Bann oder fail?
Ob es wirklich richtig bannt, ist im Logfile schnell erkannt.
2017-03-09 19:20:56,586 fail2ban.actions[26156]: WARNING [kopano-webapp] Ban xx.119.xxx.141
Scheint zu klappen!
Verbesserungsvorschläge werden gerne angenommen. 😉