L’URL d’accès de WordPress étant connue (http://www.mondomaine.com/wp-login.php), il est donc très facile pour un BOT ou un Hacker d’essayer de se connecter à votre backoffice WordPress. Nativement, le CMS WordPress n’effectue aucun contrôle sur les tentatives de connexion au Backoffice.
Si vous avez un accès Root SSH sur le serveur qui héberge votre WordPress, alors il peut être très intéressant d’installer la librairie Fail2ban afin de palier à cette lacune.
Qu’est ce que fail2ban ?
Fail2ban est une librairie Linux de prévention contre les intrusions, écrit en Python. L’application lit les logs de divers services à la recherche d’erreurs d’authentification répétées et ajoute une règle Iptables (règles dans le pare-feu) pour bannir l’adresse IP de la source.
Installer fail2ban sur son serveur Debian
Comme toujours sous Debian, rien de plus simple avec la commande apt-get
$ apt-get install fail2ban
Fail2ban est localisé dans le dossier /etc/fail2ban/
Le fichier de configuration : /etc/fail2ban/jail.conf
Déclarer un filtre wordpress dans fail2ban
Ajoutez dans le fichier /etc/fail2ban/jail.conf les lignes suivantes :
[wordpress]
enabled = true
port = http,https
filter = wordpress
action = iptables-multiport[name=wordpress, port=”http,https”, protocol=tcp]
logpath = /var/log/apache2/log_apache_de_votre_wordpress.log
/var/log/apache2/access*log
maxretry = 3
findtime = 600
bantime = 90000
Les lignes permettent d’activer une règle Fail2ban avec le nom du filter, ici “wordpress“. Il est important de spécifier le chemin de votre fichier log apache. On détermine le nombre de tentative “maxretry” (ici 3) la plage de temps de recherche “findtime” ici 600 secondes et le temps de bannissement “bantime” (ici 90000 secondes).
Créer le filtre WordPress dans fail2ban
Les filtres Fail2ban sont localisés dans le répertoire /etc/fail2ban/filter.d.
Créez le fichier wordpress.conf :
$ touch wordpress.conf
Ajoutez les lignes ci-dessous dans le fichier /etc/fail2ban/filter.d/wordpress.conf
[Definition]
failregex = ^<HOST> .* “POST .*wp-login.php
^<HOST> .* “POST .*xmlrpc.php
ignoreregex =
Redémarrez Fail2ban afin d’activer la nouvelle règle :
$ service fail2ban restart
Vérifiez que la règle est bien prise en compte dans Iptables
$ iptables -L
Cela devrait afficher vos règles activées, notamment la dernière crée :
Chain f2b-wordpress (1 references)
Whitelistez votre adresse ip
Afin de ne pas blacklister votre adresse IP, il est conseillé de l’ajouter dans la liste des IPs à ignorer dans Fail2Ban (ignoreip) :
ignoreip = 127.0.0.1/8 xxx.xx.xx.xxx
Vous pouvez ajouter une ou plusieurs IPs, séparées soit par un espace, soit par une virgule.
Puis il faut redémarrer/reloader Fail2ban pour que la nouvelle configuration soit à jour :
$ service fail2ban reload