Fail2ban für WordPress einrichten

Beim Betrieb eines Servers wird der Nutzer schnell feststellen, dass er nicht der einzige ist, der gerne Zugriff auf den Ser­ver hätte. Um zu häu­fige Log­in­ver­su­che abzu­blo­cken, gibt es Fail2ban. Die­ses Pro­gramm­pa­ket durch­sucht die ent­spre­chen­den Logs und blockiert bös­wil­lige Ver­su­che, in das Sys­tem ein­zu­bre­chen. Damit gehört Fail2ban zu den Intru­sion Preven­tion-Sys­te­men. Damit kann es auch zur Auswertung von Login-Versuchen auf die eigenen WordPress-Installationen genutzt werden. Wer in die Logs schaut, wird dort ähnliche Zeilen finden:

18.217.216.181 – – [23/Nov/2021:19:32:40 +0100] „POST /wp-login.php HTTP/1.1“ 200 8408 „https://seeseekey.net/wp-login.php“ „Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0“

Um WordPress mit Fail2ban zu verheiraten muss ein einsprechender Jail und ein Filter angelegt werden. Was mich im Vorfeld in Bezug auf WordPress irritierte war der Statuscode 200, wenn ein Login in WordPress fehlschlägt. Hintergrund ist hier das WordPress bei einem erfolgreichen Login stattdessen den Statuscode 302 (Found) nutzt. Damit kann im ersten Schritt der Jail für Fail2ban erstellt werden:

nano /etc/fail2ban/jail.d/wordpress.conf

Diese Datei wird nun wie folgt befüllt:

[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 3

Anschließend muss der genutzte Filter ebenfalls angelegt werden:

nano /etc/fail2ban/filter.d/wordpress.conf

Der entsprechende Filter sieht wie folgt aus:

# Filter for WordPress login

[INCLUDES]

before = common.conf
 
[Definition]

failregex = .*POST.*(wp-login\.php|xmlrpc\.php).* 200

datepattern = %%d/%%b/%%Y:%%H:%%M:%%S %%z

Nach einem Neustart von Fail2ban mittels:

service fail2ban restart

ist der neue Jail aktiv. Über das Log kann die Arbeit desselben betrachtet werden:

tail -f /var/log/fail2ban.log

Damit sind die WordPress-Installationen gegen den Versuch unbefugter Logins besser abgesichert. Nach drei Fehlversuchen, wird die entsprechende IP-Adresse gesperrt, sodass weitere Verbindungsversuche von dieser IP-Adresse vom Server nicht mehr beantwortet werden.

Gesperrte Fail2ban IP-Adresse entsperren

Fail2ban kann genutzt werden um Server gegen unbefugte Logins zu sichern. Dabei durchsucht Fail2ban die entsprechenden Logs und blockiert böswillige Versuche in das System einzubrechen. Damit gehört Fail2ban zu den Intrusion Prevention Systemen.

Manchmal kommt es allerdings vor das eine IP-Adresse gesperrt wird, welche nicht gesperrt werden sollte. Problematisch ist dies z.B., wenn es die eigene IP-Adresse ist. Der Fail2ban-Client bietet hierfür eine Operation an um IP-Adressen wieder zu entsperren:

fail2ban-client unban 192.168.1.2

Damit wird die entsprechende IP-Adresse von der Sperrliste gelöscht und die Firewall-Regel entfernt. Anschließend ist besagte IP-Adresse wieder in der Lage auf den Server zuzugreifen.

Server gegen unbefugten Login sichern

Betreibt man einen Server, so wird man mit der Zeit feststellen, das man nicht der einzige ist, der gerne Zugriff auf den Server hätte. Um zu häufige Loginversuche abzublocken gibt es Fail2ban. Dieses Programmpaket durchsucht die entsprechenden Logs und blockiert böswillige Versuche in das System einzubrechen. Damit gehört Fail2ban zu den Intrusion Prevention Systemen. Die Installation auf einem Ubuntu-Server geht dabei leicht von der Hand:

apt-get install fail2ban

Anschließend kann mit der Konfiguration begonnen werden:

nano /etc/fail2ban/jail.conf

In den ersten Einstellungen unter „[DEFAULT]“ findet man die Zeit (in Sekunden) welche angibt wie lange ein Angreifer geblockt werden soll. Standardmäßig sind dies 10 Minuten respektive 600 Sekunden. Im Bereich „[JAILS]“ kann Fail2ban nun für bestimmte Dienste aktiviert werden, indem der Wert bei „enabled“ auf „true“ gesetzt wird. Selbstverständlich ist es auch möglich eigene Jails zu definieren. Alle vorgefertigten Filterregeln findet man unter „/etc/fail2ban/filter.d“. Die Überwachung des SSH Dienstes ist dabei standardmäßig aktiviert. Nach der Anpassung der Konfiguration, sollte der Dienst mittels

service fail2ban restart

neugestartet werden. Das Log in welchem alle Fail2ban Aktionen verzeichnet sind, ist unter „/var/log/fail2ban.log“ zu finden.

Weitere Informationen gibt es unter:
http://cup.wpcoder.de/fail2ban-ip-firewall/