Mit Fail2ban gegen fehlgeschlagene WordPress-Logins
Aktuell läuft eine größere Angriffswelle gegen WordPress-Installationen, bei denen versucht wird, mittels Wörterbuchattacke den Account “admin” zu knacken.
WordPress führt dabei nach einem erfolgreichen Login auf der “wp-login.php” einen 302-Redirect durch, fehlgeschlagene Logins hingegen werden mit dem HTTP-Status-Code 200 im Access-Log aufgezeichnet.
Dementsprechend lässt sich eine Filter-Regel für Fail2ban aufstellen, die alle erfolglosen Loginversuche findet und bei Bedarf dann blockt:
/etc/fail2ban/filter.d/apache-wplogin.conf
anlegen mit:[Definition] failregex = ^<HOST> .*"POST .*/wp-login\.php HTTP.* 200 .*$ ignoreregex =
/etc/fail2ban/jail.local
ergänzen um:[apache-wplogin] enabled = true filter = apache-wplogin action = iptables-multiport[name=apache-wplogin, port="http,https", protocol=tcp] port = http,https logpath = /var/www/*/log/access_log maxretry = 5 findtime = 15 bantime = 86400
Fail2ban blockiert eine IP-Adresse dann für 24 Stunden (bantime), sobald es binnen 15 Sekunden (findtime) zu mehr als 5 Treffern (maxretry) mit dem genannten, zuvor definierten, Filter kommt.
Man könnte nun natürlich noch als zusätzliche action nicht nur die IPTables-Regel, sondern auch “complain”, definieren. Dabei sendet Fail2ban automatisiert an die im öffentlichen Whois der IP-Adresse des Angreifers hinterlegte Mailadresse eine Nachricht, die auch den Auszug aus dem Log beinhaltet.