
Los ataques por fuerza bruta siguen siendo una de las formas más habituales de intentar obtener acceso no autorizado a un WordPress: robots prueban combinaciones de usuario/contraseña hasta lograr entrar. Limitar los intentos de login en WordpPress reduce drásticamente el riesgo y la carga en el servidor al bloquear IPs/usuarios que fallan repetidamente.
Si quieres una guía más completa con todas las medidas posibles (endurecimiento del core, servidor y capa de red), consulta nuestra Guía de seguridad WordPress.
1. ¿Por qué limitar intentos de login?
Los intentos de acceso fallidos no son un mero contratiempo: pueden derivar en problemas que afectan al rendimiento y a la seguridad de todo el sitio. Limitar los intentos de login en WordPress actúa como una barrera efectiva contra ataques automatizados y tiene beneficios claros en tres frentes:
- Seguridad: los bots y redes de máquinas (botnets) prueban a gran escala combinaciones de usuario/contraseña. Al cortar estos intentos tras varios fallos se reduce drásticamente la probabilidad de que una credencial débil o reutilizada sirva para acceder.
- Rendimiento: un ataque de fuerza bruta genera cientos o miles de peticiones por minuto; si llegan a tu servidor sin filtro, consumen CPU, memoria y conexiones PHP, degradando la experiencia de usuarios legítimos y, en casos extremos, dejando la web inaccesible.
- Detección y respuesta: los bloqueos y registros de intentos fallidos proporcionan señales tempranas de actividad maliciosa (picos por IP, intentos contra usuarios concretos), lo que permite activar medidas adicionales (WAF, bloqueo a nivel de red, revisión de logs).
Además, limitar intentos contribuye a la resiliencia operativa: disminuye la probabilidad de falsos positivos en monitorización por sobrecarga y facilita el análisis forense si hay un incidente. Para distintos tipos de sitios conviene ajustar la política: una tienda online con muchos usuarios legítimos de compra podría permitir más intentos temporales que un blog corporativo con pocos autores, mientras que un multisite o entorno con APIs debe vigilar que los bloqueos no interrumpan integraciones legítimas.
Por último, limitar intentos no es una solución única sino parte de una defensa en capas: combina muy bien con 2FA, políticas de contraseñas, protección de XML-RPC y medidas a nivel de servidor o CDN. En las siguientes secciones veremos cómo aplicar estas capas y qué configuración suele ofrecer el mejor equilibrio entre seguridad y usabilidad.
2. Qué tipos de ataques evitamos
Limitar los intentos de acceso en WordPress no evita todas las amenazas por sí sola, pero corta los ataques más frecuentes y reduce significativamente el riesgo operativo. A continuación, los principales tipos de ataque que mitigamos al aplicar esta medida:
- Brute force distribuido — muchas IPs (o una botnet) intentan combinaciones de usuario/contraseña a gran escala para encontrar una entrada válida. Limitar intentos frena ese proceso y reduce la carga en el servidor.
- Credential stuffing — se usan listas de credenciales filtradas en otros servicios para probar accesos; bloquear intentos repetidos dificulta que estas listas funcionen sobre tu sitio.
- Ataques dirigidos a cuentas concretas — intentos repetidos contra usuarios administrativos o con privilegios altos (por ejemplo admin, editor) para forzar una entrada; los bloqueos y la monitorización de patrones ayudan a detectar y neutralizar este tipo de campañas.
3. Métodos para limitar intentos
No existe una única solución válida para todos los sitios: la elección depende del nivel de riesgo, del volumen de tráfico y del acceso que tengas al servidor.
A) Plugin en WordPress (fácil / recomendado para la mayoría)
La forma más rápida y accesible: instalar un plugin específico que registre intentos y bloquee IPs/usuarios. El plugin más usado y recomendado por muchos recursos es Limit Login Attempts Reloaded; también ofrecen soluciones completas como Wordfence que incluyen protección anti-brute-force.
Ventajas: rápido, interfaz, whitelist/blacklist, notificaciones.
Inconvenientes: si tu sitio sufre un ataque masivo puede cargar el servidor; en algunos casos conviene combinar con reglas a nivel servidor o CDN.
B) Reglas a nivel servidor (Nginx / Apache / fail2ban)
- Nginx: rate limiting (limit_req) para bloquear peticiones excesivas.
- Apache: mod_evasive / mod_security o reglas limitantes en .htaccess.
- fail2ban (servidor): supervisa logs y bloquea IPs a nivel de firewall — muy útil si tienes acceso SSH/administración del servidor.
Ventaja: se bloquea antes de llegar a PHP/WordPress, reduciendo carga. Ideal para hosts con acceso al servidor o VPS.
C) CDN / WAF (Cloudflare, Sucuri, etc.)
Servicios como Cloudflare o Sucuri aplican reglas a nivel de borde (WAF) para detener ataques distribuidos y filtrar peticiones maliciosas antes de tocar tu servidor. Recomendado si recibes tráfico global o ataques a gran escala.
Cuando usarlo: si el volumen del ataque supera lo que tu servidor puede soportar o si buscas una protección gestionada que cubra además otras amenazas (DDoS, reglas OWASP, bot management).
4. ¿Cómo configurar Limit Login Attempts Reloaded?
A continuación mostramos los pasos básicos para instalar y configurar Limit Login Attempts Reloaded. Los valores son recomendaciones; ajústalos según el perfil de tu sitio (tienda, blog, multisite, etc.).
- Instalar y activar el plugin
- Accede a Plugins → Añadir nuevo.
- Busca Limit Login Attempts Reloaded.
- Haz clic en Instalar ahora y luego en Activar.
- Acceder a la configuración
Ve a Ajustes → Limit Login Attempts (o al enlace del plugin en el menú). Verás varias opciones para configurar umbrales, tiempos de bloqueo y notificaciones.
- Valores recomendados (ejemplo)
- Intentos permitidos antes de bloqueo:
6
- Duración del bloqueo temporal:
20 minutos
- Bloqueo progresivo / permanente tras X bloqueos: bloqueo más largo tras varios bloqueos consecutivos; por ejemplo
24 horas
tras 3 bloqueos en 24h. - Habilitar notificaciones por email: marcar para que el administrador reciba alertas de bloqueos masivos.
- Whitelist: añadir IPs propias o de servicios de confianza para evitar bloqueos accidentales.
- Intentos permitidos antes de bloqueo:
- Opciones extra útiles
- Proteger XML-RPC: si no usas XML-RPC, desactívalo o activa la protección del plugin para evitar intentos a través de ese endpoint.
- Bloqueo por usuario y por IP: activa ambas si el plugin lo permite; añade excepciones para APIs/servicios que requieren acceso legítimo.
- Logs: revisa la pestaña de registros (logs) para ver IPs bloqueadas y patrones de ataque.
- Probar la configuración: Realiza pruebas controladas desde una IP no incluida en la whitelist: fuerza varios intentos fallidos y verifica que la IP queda bloqueada según la configuración, que llegan notificaciones (si las has activado) y que el bloqueo se elimina pasado el tiempo establecido.
- Mantenimiento
- Mantén el plugin actualizado (importante por razones de seguridad y compatibilidad).
- Revisa periódicamente los logs y ajusta umbrales si empiezas a bloquear usuarios legítimos con frecuencia.
- Combina con 2FA y, si procede, con reglas a nivel servidor o WAF para mitigar ataques a gran escala.
Nota: en entornos con alto volumen de peticiones (o bajo ataques masivos) es recomendable complementar el plugin con reglas a nivel de servidor (Nginx/Apache/fail2ban) o con un CDN/WAF para evitar sobrecargar PHP/WordPress.