
Si tienes WordPress instalado en un VPS, proteger tu sitio contra ataques de fuerza bruta es fundamental. Uno de los métodos más efectivos es usar Fail2ban, una herramienta que detecta intentos de acceso maliciosos y bloquea automáticamente las direcciones IP que generan actividad sospechosa.
En esta guía aprenderás a instalar, configurar y activar Fail2ban para proteger tu WordPress, tu panel de administración y tu servidor SSH.
1. ¿Qué es Fail2ban y por qué usarlo en WordPress?
Fail2ban es un sistema de seguridad que analiza archivos de registro (logs) en busca de patrones peligrosos, como intentos repetidos de inicio de sesión. Cuando detecta actividad sospechosa, bloquea la IP atacante mediante el firewall del servidor.
Beneficios principales:
- Bloquea ataques de fuerza bruta al login de WordPress.
- Protege tu servidor SSH.
- Reduce el consumo de recursos causado por bots.
- Funciona automáticamente una vez configurado.
2. Instalar Fail2ban en tu servidor
En la mayoría de servidores Ubuntu/Debian, Fail2ban está disponible en los repositorios oficiales.
sudo apt update
sudo apt install fail2ban -y
Una vez instalado, Fail2ban se inicia automáticamente.
3. Proteger el login de WordPress con Fail2ban
Para que Fail2ban pueda detectar intentos fallidos de acceso a WordPress, necesitamos registrar los intentos de login. Esto se hace añadiendo un pequeño fragmento de código en el archivo functions.php de tu tema hijo o en un plugin personalizado.
3.1. Registrar intentos fallidos en WordPress
Añade este código para registrar los intentos fallidos en /var/log/auth.log:
function wp_fail2ban_login_failed( $username ) {
syslog(LOG_NOTICE, "WordPress login failed for user: $username");
}
add_action( 'wp_login_failed', 'wp_fail2ban_login_failed' );
Este registro permitirá que Fail2ban detecte intentos fallidos.
4. Crear el filtro de Fail2ban para WordPress
Crea un archivo de filtro:
sudo nano /etc/fail2ban/filter.d/wordpress.conf
Pega lo siguiente:
[Definition]
failregex = .*WordPress login failed for user.*
ignoreregex =
Guarda con Ctrl + O, Enter y sal con Ctrl + X.
5. Crear la jail de Fail2ban para WordPress
Ahora crea la configuración que activará el filtro:
sudo nano /etc/fail2ban/jail.local
Añade:
[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600
Esto significa:
- maxretry 5: 5 intentos fallidos.
- bantime 3600: IP bloqueada 1 hora.
- findtime 600: 10 minutos para acumular fallos.
6. Proteger SSH con Fail2ban
Fail2ban ya incluye una jail para SSH. Solo asegúrate de activarla:
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 4
Esto bloquea bots que intentan entrar por SSH.
7. Reiniciar Fail2ban y verificar que funciona
Reinicia Fail2ban:
sudo systemctl restart fail2ban
Verifica el estado:
sudo fail2ban-client status
Verifica la jail de WordPress:
sudo fail2ban-client status wordpress
Deberías ver algo como:
Currently banned: 0
Total banned: 0
8. Cómo ver las IP bloqueadas
sudo fail2ban-client status wordpress
Para desbloquear una IP:
sudo fail2ban-client set wordpress unbanip 123.123.123.123
9. Recomendaciones adicionales
- Usa Cloudflare para añadir protección adicional.
- Activa 2FA en WordPress.
- Evita usar
admincomo usuario. - Actualiza WordPress y plugins regularmente.
10. Conclusión
Fail2ban es una herramienta poderosa para proteger tu WordPress contra ataques de fuerza bruta. Combinado con buenas prácticas de seguridad, reduce drásticamente los intentos de acceso malicioso y mejora la estabilidad de tu servidor.
Si usas WordPress en un VPS, Fail2ban es una capa de seguridad imprescindible.