home-harmening:sicherheit:fail2ban:eigenen_filter_bauen

Da fail2ban einfach nur Logdateien überprüft können wird einfache eigene Filter für unsere Anwendung bauen. In diesesm Beispiel baue ich einen Filter für das Login von Dokuwiki.

  • Ein passendes Plugin installieren, welches den Login von Dokuwiki überwacht.
  • Einen Filter erstellen der die Logdatei überwacht
  • Den Filter aktivieren


Als Beispiel erzeugt dieses Plugin unter /var/log/dokuwiki/login.log eine Logdatei mit folgendem Inhalt

1730823357	2024/11/05 16:15	80.187.82.92	user1	admin - extension	
1730823370	2024/11/05 16:16	80.187.82.92	user1	admin	
1730823372	2024/11/05 16:16	80.187.82.92	user1	admin - config	
1730823391	2024/11/05 16:16	80.187.82.92	user1	logged off	
1730823393	2024/11/05 16:16	80.187.82.92	user1	logged in temporarily	
1730823431	2024/11/05 16:17	80.187.82.92	user1	logged off	
1730823434	2024/11/05 16:17	80.187.82.92	user1	failed login attempt


Mit meinem Filter möchte ich erreichen, dass die Zeile mit „failed login attempt“ erkannt wird. Dazu lege ich eine Filter Datei mit dem Namen /etc/fail2ban/filter.d/dokuwiki.auth an.

nano /etc/fail2ban/filter.d/dokuwiki.auth
                                                                                                           
[Definition]
failregex = .*.\d{2}\/\d{2}\/\d{2} \d{2}:\d{2}\t<HOST>\t.*.\tfailed login attempt
ignoreregex =


Hier wird der Regex String festgelegt. Ich empfehle das ganze von hinten zu erstellen. Hier habe ich einfach mit dem String
„failed login attempt“
begonnen und langsam die tabs und die Zahlen (\d) hinzugefügt.

Der Filter kann mit dem Befehl

fail2ban-regex --print-all-matched /var/log/dokuwiki/login.log /etc/fail2ban/filter.d/dokuwiki-auth.log

getestet werden.

Danach muss der Filter noch in der /etc/fail2ban/jail.local aktiviert werden.

nano /etc/fail2ban/jail.local
...

[dokuwiki-auth]
  enabled = true
  filter = dokuwiki-auth
  logpath = /var/log/dokuwiki/login.log
  maxretry = 3
  bantime = 3600

...