Cómo configurar Fail2Ban para WordPress (wp-login, xmlrpc)

En resumen, en este tutorial encontrarás las líneas de comandos a través de las cuales podrás instalar y configurar Fail2Ban para WordPrensa. Asegura la autenticación WordPress y consultas de fuerza bruta de xmlrpc.php.

Blogs y sitios web desarrollados en la plataforma WordPress son a menudo blanco de ciberataques. La mayoría de los ataques son de fuerza bruta y tienen como objetivo la sesión de autenticación o explotan XML-RPC (llamada a procedimiento remoto mediante XML). Afortunadamente, fail2ban es una solución de seguridad muy útil para estas situaciones. Si desea proteger un sitio web WordPress con fail2ban, siga los pasos de configuración de este tutorial.

En primer lugar, asegúrese de tener acceso al servidor web a través de una conexión SSH y de que la aplicación fail2ban esté instalada.

Configuración de Fail2Ban para WordPress en Debian

1. En primer lugar, debe asegurarse de que la aplicación fail2ban esté instalada y ejecutándose en el servidor. Ejecute la siguiente línea de comando:

systemctl status fail2ban

En la salida deberías ver algo como esto:

● 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 su servidor, necesitará instalarlo. Ejecute la línea de comando para instalar fail2ban en Debian/Ubuntu:

sudo apt install fail2ban

2. El siguiente paso es crear el filtro fail2ban para WordPrensa. Ejecute la línea de comando en la terminal para crear y editar el filtro wordpress.conf.

sudo nano /etc/fail2ban/filter.d/wordpress.conf

En el archivo wordpress.conf Establece los filtros para la autenticación WordPress y para el archivo 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, si se accede a los archivos wp-login.php o xmlrpc.php, se puede crear una regla para fail2ban. La condición es que estos archivos existan y el atacante pueda acceder a ellos. Es decir, debería devolver el código 200 (ok) cuando se acceda.

Guardar el archivo /etc/fail2ban/filter.d/wordpress.conf.

3. El siguiente paso es configurar la “cárcel” para WordPrensa. Aquí es donde la mayoría de los usuarios se confunden, porque las reglas deben configurarse de forma diferente según el sistema de administración de alojamiento (si lo hay) o la configuración del servidor web.

Si utiliza HestiaCP, VestaCP o MyVesta, crea y edita el archivo /etc/fail2ban/jail.local.

nano /etc/fail2ban/jail.local

Añade las siguientes líneas a este archivo:

[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 según sus necesidades. En la configuración que di, si en un intervalo de 1800 minutos hay 5 intentos repetidos desde la misma IP, se bloqueará por 3600 minutos usando la acción HestiaCP para la web. (hestia[name=WEB]). Aquí necesitarás ayuda dependiendo del sistema que tengas en el servidor.

También es muy importante "logpath". De estos registros se extraen los datos sobre los que se tomarán las medidas necesarias. Asegúrese de que la ubicación sea correcta.

Si no tienes un sistema de administración instalado, necesitarás bloquear IPs con fail2ban para WordPress para hacerse directamente a través de iptables. La línea de actuación será la siguiente:

action   = iptables-multiport[name=wordpress, port="80,443", protocol=tcp]

A modo de paréntesis, en lugar de /etc/fail2ban/jail.local También puedes usar un archivo separado para la configuración, como: /etc/fail2ban/jail.d/wordpress.conf.

Después de realizar los ajustes, aplique los cambios.

sudo systemctl restart fail2ban

4. Después de reiniciar, verifique si fail2ban está activo. WordPress obras:

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:

Una vez que encuentre IP bloqueadas en esta lista, asegúrese de que también estén bloqueadas en iptables. Me encontré con la situación donde debido a una mala configuración, en fail2ban vi que una IP estaba bloqueada, pero en realidad aún podía acceder wp-login.php o xmlrpc.php.

Para comprobar si todo funciona correctamente, elija una IP bloqueada de la lista fail2ban y búsquela en iptables.

Ejecute la línea de comando:

iptables -L -v -n --line-numbers

Si la IP que aparece bloqueada por fail2ban también está en esta lista, significa que has configurado correctamente fail2ban para ella. WordPrensa.

Relacionado: Cómo restablecer la contraseña del usuario administrador en WordPrensa. Sin acceso al correo electrónico.

Al mismo tiempo, es muy recomendable comprobar el registro con las acciones de fail2ban:

sudo tail -f /var/log/fail2ban.log

Dicho esto, si tienes alguna duda o necesitas ayuda, puedo ayudarte en los comentarios.

Apasionado por la tecnología, escribo con gusto en StealthSettings.com desde el año 2006. Tengo una amplia experiencia en sistemas operativos: macOS, Windows y Linux, así como en lenguajes de programación y plataformas de blogs (WordPress) y para tiendas en línea (WooCommerce, Magento, PrestaShop).

Inicio » Su fuente de tutoriales de TI, consejos útiles y noticias. » Cómo configurar Fail2Ban para WordPress (wp-login, xmlrpc)
Deja un comentario