Anton Dollmaier

Anton Dollmaier


Mit Fail2ban gegen fehlgeschlagene WordPress-Logins

15 Apr 2013 »

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.

© Anton Dollmaier