WordPress & fail2ban : stopper la brute-force « POST /wp-login.php »
Edit : azerttyu, dans son commentaire signale une solution plus propre (bien que celle-ci fonctionne)
WordPress étant très populaire il est (malheureusement) de fait très attaqué.. La principale (hors SPAM sur les commentaires) est faite par brute-force sur la page wp-login.php. Je l’avais déjà remarqué, mais j’ai récement eu des problèmes d’indisponibilités suite à plusieurs attaques venant de multiple adresse IP (l’attaque passant donc de brute-force à DDOS) J’ai donc dû réagir et pour ce faire j’ai configuré fail2ban pour bloquer les IP’s faisant plus de 6 tentatives de connexions sur tous les sites wordpress du serveur.
Configuration de fail2ban
Note : mon installation de fail2ban est existante et fonctionne déjà pour le FTP & le SSH
Créer le fichier /etc/fail2ban/jail.d/apache-wp-login.conf :
> [apache-wp-login] > > enabled = true > port = http,https > filter = apache-wp-login > logpath = /var/log/apache2/un.autre.blog.wordrepp/access.log > /var/log/apache2/mercereau.info/access.log > maxretry = 6
Puis créer la définition de la regex « apache-wp-login » dans le fichier /etc/fail2ban/filter.d/apache-wp-login.conf
[Definition] failregex = ^<HOST> -.*POST /wp-login.php HTTP.* ignoreregex =
Pour finir : un restart du service fail2ban & vous n’avez plus qu’à tester en faisant plus de 6 tentatives de mot de passe sur la page votreblog/wp-admin/
$ service fail2ban restart $ tail -f /var/log/fail2ban.log 2013-09-05 16:33:39,559 fail2ban.actions: WARNING [apache-wp-login] Ban XX.XX.XX.XX
Pour information, le lendemain 47 IP ont été bloquées grâce à ce système…
$ grep "\\[apache-wp-login\\] Ban" /var/log/fail2ban.log | wc -l 47