En bref, dans ce tutoriel, vous trouverez les lignes de commande à travers lesquelles vous pouvez installer et configurer Fail2Ban pour WordPresse. Sécurise l'authentification WordPress et les requêtes de force brute de xmlrpc.php.
Blogs et sites Web développés sur la plateforme WordPress sont souvent la cible de cyberattaques. La plupart des attaques sont de type force brute et ciblent la session d'authentification ou exploitent XML-RPC (Remote Procedure Call using XML). Heureusement, fail2ban est une solution de sécurité très utile pour ces situations. Si vous souhaitez sécuriser un site Web WordPress avec fail2ban, suivez les étapes de configuration de ce tutoriel.
Tout d’abord, assurez-vous que vous avez accès au serveur Web via une connexion SSH et que l’application fail2ban est installée.
Configuration de Fail2Ban pour WordPress sur Debian
1. Tout d’abord, vous devez vous assurer que l’application fail2ban est installée et en cours d’exécution sur le serveur. Exécutez la ligne de commande ci-dessous :
systemctl status fail2ban
Dans la sortie, vous devriez voir quelque chose comme ceci :
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-03-11 00:39:32 EET; 6 days ago
Docs: man:fail2ban(1)
Main PID: 917 (fail2ban-server)
Tasks: 17 (limit: 76843)
Memory: 33.2M
CPU: 17min 1.752s
CGroup: /system.slice/fail2ban.service
└─917 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Si fail2ban n'est pas installé sur votre serveur, vous devrez l'installer. Exécutez la ligne de commande pour installer fail2ban sur Debian/Ubuntu :
sudo apt install fail2ban
2. L'étape suivante consiste à créer le filtre fail2ban pour WordPresse. Exécutez la ligne de commande dans le terminal pour créer et modifier le filtre wordpress.conf
.
sudo nano /etc/fail2ban/filter.d/wordpress.conf
Dans le fichier wordpress.conf
définit les filtres pour l'authentification WordPress et pour le fichier xmlrpc.php
, comme suit:
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*(/wp-login.php|/xmlrpc.php).*" 200
ignoreregex =
Cela signifie que, quelle que soit la méthode utilisée, GET
ou POST
, si les fichiers wp-login.php ou xmlrpc.php sont consultés, une règle pour fail2ban peut être créée. La condition est que ces fichiers existent et soient accessibles à l’attaquant. Autrement dit, il doit renvoyer le code 200 (ok) lors de l'accès.
Enregistrer le fichier /etc/fail2ban/filter.d/wordpress.conf
.
3. L’étape suivante consiste à configurer la « prison » pour WordPresse. C'est là que la plupart des utilisateurs sont confus, car les règles doivent être définies différemment en fonction du système de gestion d'hébergement (le cas échéant) ou de la configuration du serveur Web.
Si vous utilisez HestiaCP, VestaCP ou MyVesta, créez et modifiez le fichier /etc/fail2ban/jail.local
.
nano /etc/fail2ban/jail.local
Ajoutez les lignes ci-dessous à ce fichier :
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/domains/*.log #or apache2.
maxretry = 5
findtime = 1800
bantime = 3600
action = hestia[name=WEB] #hestacp action.
Ajustez les paramètres ci-dessus en fonction de vos besoins. Dans la configuration que j'ai donnée, si dans un intervalle de 1800 minutes il y a 5 tentatives répétées depuis la même IP, elle sera bloquée pendant 3600 minutes en utilisant l'action HestiaCP pour le Web. (hestia[name=WEB]
). Ici, vous aurez besoin d'aide en fonction du système que vous avez sur le serveur.
Il est également très important de «logpath
". À partir de ces journaux, les données sur lesquelles des mesures seront prises sont extraites. Assurez-vous que l'emplacement est correct.
Si vous n'avez pas de système de gestion installé, vous devrez bloquer les IP avec fail2ban pour WordPress à faire directement via iptables
. La ligne d’action sera la suivante :
action = iptables-multiport[name=wordpress, port="80,443", protocol=tcp]
Entre parenthèses, au lieu de /etc/fail2ban/jail.local
vous pouvez également utiliser un fichier séparé pour la configuration, comme : /etc/fail2ban/jail.d/wordpress.conf
.
Après avoir effectué vos ajustements, appliquez les modifications.
sudo systemctl restart fail2ban
4. Après le redémarrage, vérifiez si fail2ban pour WordPress travaux:
fail2ban-client status wordpress
Status for the jail: wordpress
|- Filter
| |- Currently failed: 355
| |- Total failed: 33873
| `- File list: (log files per domain)
- Actions
|- Currently banned: 127
|- Total banned: 680
`- Banned IP list:
Une fois que vous avez trouvé des adresses IP bloquées dans cette liste, assurez-vous qu'elles sont également bloquées dans iptables
. J'ai rencontré la situation où, en raison d'une mauvaise configuration, dans fail2ban, j'ai vu qu'une IP était bloquée, mais en réalité, elle pouvait toujours accéder wp-login.php
ou xmlrpc.php
.
Pour vérifier si tout fonctionne correctement, choisissez une IP bloquée dans la liste fail2ban et recherchez-la dans iptables.
Exécutez la ligne de commande :
iptables -L -v -n --line-numbers
Si l'IP qui apparaît bloquée par fail2ban est également dans cette liste, cela signifie que vous avez correctement configuré fail2ban pour elle. WordPresse.
Articles connexes: Comment réinitialiser le mot de passe de l'utilisateur administrateur dans WordPresse. Pas d'accès au courrier électronique.
Dans le même temps, il est fortement recommandé de vérifier le journal avec les actions fail2ban :
sudo tail -f /var/log/fail2ban.log
Cela dit, si vous avez des questions ou besoin d'aide, je peux vous aider dans les commentaires.