En bref, dans ce tutoriel, vous trouverez les lignes de commande à travers lesquelles vous pouvez installer et configurer Fail2Ban pour WordPress. Authentification WordPress sécurisée et XMLRPC.PHP Ass brut.
Les blogs et les sites développés sur la plate-forme WordPress sont souvent des cibles cyberattaques. La plupart des attaques sont de type de force brute et ciblent la session d'authentification ou l'exploitation de XML-RPC (appel de procédure distante à l'aide de XML). Heureusement, Fail2ban est une solution de sécurité très utile pour ces situations. Si vous souhaitez sécuriser un site WordPress avec Fail2Ban, suivez les étapes de configuration de ce tutoriel.
Tout d'abord, assurez-vous d'avoir accès au serveur Web par connexion SSH et que l'application Fail2ban est installée.
Configuration Fail2ban pour WordPress sur Debian
1. Tout d'abord, vous devez vous assurer que l'application Fail2ban est installée et qu'elle s'exécute sur le serveur. Exécutez la ligne de commande ci-dessous:
systemctl status fail2ban
En sortie, vous devriez voir quelque chose de la forme:
● 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 le serveur, vous devrez l'installer. Effectuez la ligne de commande pour l'installation Fail2ban sur Debian / Ubuntu:
sudo apt install fail2ban
2. L'étape suivante consiste à créer le filtre Fail2ban pour WordPress. Exécutez dans le terminal la ligne de commande 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 d'authentification WordPress et l'authentification des fichiers xmlrpc.php
, comme suit:
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*(/wp-login.php|/xmlrpc.php).*" 200
ignoreregex =
Cela signifie que par n'importe quelle méthode, GET
ou POST
, serait accessible aux fichiers wp-login.php ou xmlrpc.php, une règle pour fail2ban peut être créée. La condition est que ces fichiers existent et sont accessibles par l'attaquant. C'est-à-dire pour retourner le code 200 (OK) pour accéder.
Enregistre le fichier /etc/fail2ban/filter.d/wordpress.conf
.
3. L'étape suivante consiste à configurer “prison” pour WordPress. À cette étape, la plupart des utilisateurs sont confus, car les règles doivent être établies différemment en fonction du système de gestion d'hébergement (s'il existe) 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
Ajouter ce fichier les lignes ci-dessous:
[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 donnée par moi, si dans les 1800 minutes, il y a 5 tentatives répétées de la même IP, elle sera bloquée pendant 3600 minutes à l'aide du web hossiacP. (hestia[name=WEB]
). Ici, vous devrez vous aider selon le système que vous avez sur le serveur.
C'est aussi très important et “logpath
“. À partir de ces journaux, sont extraits les données sur la base de laquelle l'action sera effectuée. Assurez-vous que l'emplacement est correct.
Si vous n'avez pas de système de gestion installé, vous aurez besoin de l'action de bloquer les IP avec Fail2ban pour WordPress à faire directement par iptables
. La ligne d'action sera la suivante:
action = iptables-multiport[name=wordpress, port="80,443", protocol=tcp]
Comme support, au lieu de /etc/fail2ban/jail.local
Vous pouvez également utiliser un fichier de configuration distinct, tel que: /etc/fail2ban/jail.d/wordpress.conf
.
Après avoir effectué les ajustements, appliquez les modifications.
sudo systemctl restart fail2ban
4. Après le redémarrage, vérifiez que Fail2ban pour WordPress fonctionne:
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:
Après avoir trouvé dans cette liste des IP bloqués, assurez-vous qu'ils sont bloqués et dans iptables
. J'ai rencontré la situation qui en raison de la mauvaise configuration, dans Fail2ban pour voir qu'il s'agit d'une IP bloquée, mais en réalité, il pourrait encore accéder wp-login.php
ou xmlrpc.php
.
Pour vérifier si tout fonctionne correctement, choisissez un IP bloqué dans la liste Fail2ban et recherchez-le en iptables.
Exécuter la ligne de commande:
iptables -L -v -n --line-numbers
Si l'IP qui apparaît bloqué par Fail2ban se trouve également dans cette liste, cela signifie que vous avez configuré Correct Fail2Ban pour WordPress.
Dans le même temps, il est très conseillé de vérifier le journal avec les actions Fail2ban:
sudo tail -f /var/log/fail2ban.log
Cela étant dit, si vous avez des préoccupations ou avez besoin d'aide, ils peuvent vous aider dans les commentaires.