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.

Next Post Previous Post