Fuerza bruta a wp-login.php: cómo detectarla y frenarla en WordPress
Guía experta sobre el ataque de fuerza bruta en WordPress: cómo detectar los intentos contra wp-login.php, leer los logs y frenarlos con medidas reales.

El ataque de fuerza bruta a WordPress sigue siendo, año tras año, uno de los vectores más ruidosos y persistentes contra cualquier instalación expuesta a Internet. Consiste en lanzar miles de combinaciones de usuario y contraseña contra wp-login.php hasta acertar. No es sofisticado, pero funciona: basta un panel con una contraseña débil, reutilizada o filtrada en una brecha anterior para que un bot automatizado tome el control del sitio. Antes de entrar en el detalle, conviene situar esta amenaza dentro de una estrategia completa de seguridad y hardening de WordPress: frenar la fuerza bruta de forma aislada sirve de poco si el resto de la superficie de ataque sigue abierta.
Anatomía de un ataque de fuerza bruta a WordPress
Detrás de estos intentos casi nunca hay una persona tecleando. Son botnets distribuidas que reparten la carga entre cientos o miles de IP para esquivar los bloqueos por dirección. Las variantes más habituales que vemos en incidentes reales son tres:
- Fuerza bruta clásica y por diccionario: se prueban listas de contraseñas comunes (admin, 123456, el nombre del dominio) contra usuarios frecuentes como
admin,administratoro el propio nombre de la marca. - Credential stuffing: el atacante no adivina, reutiliza. Emplea pares usuario/contraseña filtrados en otras brechas confiando en que el administrador repite credenciales. Es el más peligroso porque un solo acierto puede bastar.
- Amplificación por XML-RPC: el método
system.multicallde xmlrpc.php permite empaquetar cientos de intentos de login en una única petición HTTP, multiplicando la velocidad del ataque y saltándose contadores que solo vigilan wp-login.php.
El objetivo final rara vez es tu contenido: buscan un servidor desde el que enviar spam, alojar phishing, inyectar SEO malicioso o redirigir a tus visitantes. En PathSentinel también atendemos entornos exigentes —banca y comercios que procesan datos de tarjeta—, donde un panel comprometido no es una molestia sino un problema de cumplimiento y de dinero.
Cómo detectar la fuerza bruta antes de que triunfe
La buena noticia es que este ataque es escandaloso: deja huella. Los indicadores que debes vigilar son claros:
- Picos de peticiones POST a wp-login.php en el access.log del servidor, muchas veces desde decenas de IP distintas en pocos minutos.
- Cadenas de respuestas 200 seguidas de un 302, que indican un login fallido tras otro y, de repente, uno exitoso.
- Tráfico anómalo hacia xmlrpc.php, especialmente peticiones grandes que apuntan a un abuso de
system.multicall. - Alertas de consumo de CPU o memoria del hosting sin causa aparente: la avalancha de logins consume recursos de PHP y puede tumbar la web antes incluso de que la comprometan.
- Correos de recuperación de contraseña que nadie ha solicitado, señal de que alguien está tanteando usuarios válidos.
Un buen punto de partida es revisar los logs de acceso con regularidad y activar un registro de eventos de seguridad. Herramientas de monitorización y firewalls como los que documenta el Wordfence Learning Center permiten visualizar estos intentos en tiempo real y correlacionarlos por IP, usuario y país.
Cómo frenar el ataque de forma efectiva
No existe una única bala de plata; la defensa es por capas. Estas son las medidas que de verdad mueven la aguja:
1. Limitar los intentos de acceso
Bloquear temporalmente una IP tras varios fallos convierte un ataque de segundos en uno de años. Es la medida con mejor relación esfuerzo-resultado y la primera que debes implantar.
2. Autenticación en dos factores (2FA)
Aunque el atacante adivine la contraseña, sin el segundo factor no entra. Para cuentas con rol de administrador es prácticamente obligatorio.
3. Desactivar o proteger XML-RPC
Si no usas la app móvil de WordPress ni Jetpack, cierra xmlrpc.php. Eliminas de golpe el vector de amplificación más agresivo.
4. Contraseñas fuertes y usuarios sin nombres obvios
Elimina el usuario admin por defecto y exige contraseñas largas y únicas. El credential stuffing muere cuando no reutilizas credenciales.
5. Proteger el propio wp-login.php
Restringir el acceso por IP mediante .htaccess, añadir una capa de autenticación HTTP básica o cambiar la ruta del login reduce drásticamente el ruido automatizado. La documentación oficial de Hardening WordPress detalla varias de estas técnicas.
Para una guía paso a paso centrada en el panel, revisa nuestro artículo hermano sobre cómo proteger wp-admin de la fuerza bruta, que incluye una comprobación gratuita del estado de tu login.
Un recordatorio: la puerta también se abre desde dentro
La fuerza bruta ataca el candado, pero muchos compromisos empiezan por un extensión adulterada que ya trae el atacante instalado. Si descargas software de fuentes dudosas, ninguna protección del login te salvará: lo explicamos en plugins y temas «nulled», la puerta trasera que instalas tú mismo. Y para verificar si alguna de estas debilidades corresponde a una vulnerabilidad conocida, la base de datos NVD del NIST es la referencia de consulta.
Si sospechas que ya has sufrido un intento con éxito, no esperes: contacta con nuestro equipo a través de contacto para una revisión forense.
¿No sabes si tu wp-login.php está siendo martilleado ahora mismo? Nuestro escáner detecta paneles expuestos, XML-RPC abierto y usuarios enumerables en segundos.
Cada semana, las vulnerabilidades de plugins de WordPress que de verdad importan y un caso real de investigación, en español. Sin ruido, sin spam.