En resumen, en este tutorial encontrará las líneas de comando a través de las cuales puede instalar y configurar Fail2ban para WordPress. Asegure la autenticación de WordPress y el culo bruto xmlrpc.php.
Los blogs y sitios desarrollados en la plataforma de WordPress a menudo son objetivos de ataque cibernético. La mayoría de los ataques son de tipo de fuerza bruta y están dirigidos a la sesión de autenticación o explotación de XML-RPC (llamada de procedimiento remoto con XML). Afortunadamente, Fail2ban es una solución de seguridad muy útil para estas situaciones. Si desea asegurar un sitio de WordPress con Fail2Ban, siga los pasos de configuración en este tutorial.
En primer lugar, asegúrese de tener acceso al servidor web por conexión SSH y que se instale la aplicación Fail2Ban.
Fail2Ban Configuration para WordPress en Debian
1. En primer lugar, debe asegurarse de que la aplicación Fail2ban esté instalada y que se esté ejecutando en el servidor. Ejecutar la línea de comando a continuación:
systemctl status fail2ban
En la salida debería ver algo del formulario:
● 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 no está instalado en el servidor, deberá instalarlo. Realice la línea de pedido para la instalación Fail2ban en Debian / Ubuntu:
sudo apt install fail2ban
2. El siguiente paso es crear el filtro Fail2Ban para WordPress. Ejecutar en el terminal la línea de comando para crear y editar el filtro wordpress.conf
.
sudo nano /etc/fail2ban/filter.d/wordpress.conf
En el archivo wordpress.conf
Establece filtros de autenticación de WordPress y autenticación de archivos xmlrpc.php
, como sigue:
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*(/wp-login.php|/xmlrpc.php).*" 200
ignoreregex =
Esto significa que por cualquier método, GET
o POST
, se accedería a los archivos wp-login.php o xmlrpc.php, se puede crear una regla para fail2ban. La condición es que el atacante existan y puede acceder a estos archivos. Eso es devolver el código 200 (OK) para acceder.
Guarda el archivo /etc/fail2ban/filter.d/wordpress.conf
.
3. El siguiente paso es configurar “celda” para WordPress. En este paso, la mayoría de los usuarios están confundidos, porque las reglas deben establecerse de manera diferente dependiendo del sistema de gestión de alojamiento (si existe) o la configuración del servidor web.
Si usa hestiacp, vestacp o myvesta, cree y edite el archivo /etc/fail2ban/jail.local
.
nano /etc/fail2ban/jail.local
Agregue este archivo las líneas a continuación:
[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.
Ajuste los parámetros anteriores de acuerdo con sus necesidades. En la configuración dada por mí, si dentro de 1800 minutos hay 5 intentos repetidos de la misma IP, se bloqueará durante 3600 minutos con la ayuda de la web HestiacP. (hestia[name=WEB]
). Aquí deberá ayudar de acuerdo con el sistema que tiene en el servidor.
También es muy importante y “logpath
“. A partir de estos registros, se extraen los datos sobre la base de las cuales se realizarán la acción. Asegúrese de que la ubicación sea correcta.
Si no tiene un sistema de gestión instalado, necesitará la acción de bloquear IPS con Fail2ban para que WordPress se haga directamente por iptables
. La línea para la acción será la siguiente:
action = iptables-multiport[name=wordpress, port="80,443", protocol=tcp]
Como un soporte, en lugar de /etc/fail2ban/jail.local
También puede usar un archivo de configuración separado, como: /etc/fail2ban/jail.d/wordpress.conf
.
Después de haber realizado los ajustes, aplique los cambios.
sudo systemctl restart fail2ban
4. Después de reiniciar, verifique que Fail2Ban para WordPress funciona:
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:
Después de encontrar en esta lista bloqueó IPS, asegúrese de que estén bloqueados y en iptables
. Conocí la situación de que debido a la configuración incorrecta, en Fail2ban para ver que es una IP bloqueada, pero en realidad todavía podría acceder wp-login.php
o xmlrpc.php
.
Para verificar si todo funciona correctamente, elija una IP bloqueada en la lista Fail2ban y búscalo en iptables.
Ejecutar la línea de comando:
iptables -L -v -n --line-numbers
Si la IP que aparece bloqueada por Fail2Ban también se encuentra en esta lista, significa que ha configurado correctamente Fail2ban para WordPress.
Relacionado: Cómo restablecer la contraseña del usuario administrativo en WordPress. Sin acceso al correo electrónico.
Al mismo tiempo, es muy aconsejable verificar el registro con las acciones de Fail2Ban:
sudo tail -f /var/log/fail2ban.log
Dicho esto, si tiene alguna inquietud o necesita ayuda, pueden ayudarlo en los comentarios.