Un ataque de brute force en WordPress es un método automatizado donde bots prueban miles de combinaciones de usuario y contraseña por segundo contra tu página de login. Sin protección, WordPress permite intentos ilimitados por defecto, y según Wordfence, su red registra más de 90.000 ataques de este tipo por minuto a nivel global.
En 30 segundos
- WordPress no limita intentos de login por defecto: cualquier bot puede probar contraseñas sin parar hasta acertar.
- Wordfence bloqueó más de 100 mil millones de ataques desde 74 millones de IPs distintas (dato acumulado a 2026).
- La primera medida es instalar un plugin que limite intentos fallidos: Limit Login Attempts Reloaded tiene más de 2 millones de instalaciones activas.
- El 2FA detiene el 100% de los bots automatizados incluso si la contraseña fue comprometida.
- Cambiar la URL de wp-login.php reduce el ruido de ataques automatizados, pero no reemplaza las capas anteriores.
Wordfence es un plugin de seguridad para WordPress desarrollado por Wordfence, Inc. Incluye firewall, escaneo de malware, monitoreo en tiempo real y protección contra ataques de fuerza bruta.
Qué es un ataque brute force y cómo funciona
Un ataque brute force es un método automatizado donde scripts o bots prueban combinaciones de usuario y contraseña de forma sistemática hasta encontrar las correctas. No requiere ninguna vulnerabilidad de código: explotan el comportamiento por defecto de WordPress, que no tiene límite de intentos de login.
Hay dos variantes principales. El brute force puro prueba todas las combinaciones posibles de caracteres (lento, pero exhaustivo). El ataque de diccionario usa listas de contraseñas filtradas de brechas anteriores (Collection #1, RockYou2024) para intentar primero las más probables. Este segundo tipo es el más común hoy porque es más eficiente: si tu contraseña estaba en alguna brecha anterior, aparece en esas listas.
Ponele que tu servidor recibe 500 solicitudes POST a wp-login.php por minuto desde una misma IP (o desde miles de IPs distintas en un ataque distribuido). Sin protección, WordPress procesa cada una. El servidor se degrada, el sitio se pone lento, y eventualmente alguna combinación puede acertar.
Por qué WordPress es especialmente vulnerable
Tres factores hacen a WordPress un blanco fácil para este tipo de ataques.
Primero, la URL de login es estándar y conocida: wp-login.php o wp-admin. Cualquier bot sabe dónde golpear sin necesidad de reconocimiento previo. Segundo, WordPress no limita intentos fallidos por defecto (a diferencia de, por ejemplo, sistemas bancarios que te bloquean tras 3 intentos). Tercero, el nombre de usuario «admin» sigue siendo el más usado, con lo cual los atacantes ya tienen la mitad del problema resuelto antes de empezar.
El dato que cierra el argumento: según estadísticas de seguridad 2026, el 81% de las brechas de seguridad aprovechan contraseñas robadas o débiles. No estamos hablando de exploits sofisticados. Estamos hablando de que alguien reutilizó la misma contraseña de tres sitios distintos.
Cómo detectar si tu sitio está siendo atacado
El primer síntoma suele ser rendimiento degradado sin causa aparente. Si tu sitio anda lento en horarios específicos y no hay pico de tráfico legítimo, mirá los logs.
En el archivo de logs del servidor (access.log en Apache o Nginx), buscá líneas con POST a /wp-login.php repetidas desde la misma IP o desde rangos de IPs. Una cadena de 50 o más intentos fallidos en minutos es señal clara. Si tenés Wordfence instalado, su dashboard muestra en tiempo real los intentos bloqueados, la IP de origen y el usuario que intentaron usar. También podés activar notificaciones por correo para cada bloqueo (útil para auditorías, aunque ruidoso si el sitio está siendo atacado activamente).
¿Y si no tenés ningún plugin instalado todavía? Exacto, ahí no sabés qué está pasando hasta que es tarde.
Wordfence publicó que su red bloqueó más de 100 mil millones de ataques provenientes de 74 millones de IPs distintas. Eso es escala masiva, y la mayor parte de esos ataques van contra instalaciones WordPress sin protección básica.
Primera línea de defensa: limitar intentos de login
La medida más simple y efectiva para brute force en WordPress es limitar cuántos intentos fallidos tolerás antes de bloquear la IP.
Limit Login Attempts Reloaded
Limit Login Attempts Reloaded tiene más de 2 millones de instalaciones activas y es gratuito. La lógica es sencilla: rastrea la IP de cada intento fallido y, después de N intentos configurables, la bloquea por un período determinado. La configuración por defecto (4 intentos, bloqueo de 20 minutos) está bien para la mayoría de los casos; si querés ir más conservador, bajalo a 5 intentos y extendé el bloqueo a 1 hora.
Wordfence
Wordfence incluye protección contra brute force dentro de su firewall. La versión gratuita limita intentos, bloquea IPs y te manda alertas. La versión premium (USD 119/año por sitio) agrega feeds de amenazas en tiempo real y protección a nivel de red. Si ya lo tenés instalado por otras razones, la protección brute force viene de serie, no necesitás otro plugin.
Sucuri e iThemes Security
Sucuri y iThemes Security también incluyen límite de intentos. La diferencia es que Sucuri enfoca más en el WAF externo (que veremos más adelante) y iThemes tiene una capa de gestión de usuarios más completa. Para la función específica de limitar intentos, los tres hacen bien el trabajo.
Protección multicapa: cambiar la URL de login y ocultar la identidad
Cambiar wp-login.php por una URL personalizada como /mi-acceso-secreto reduce el ruido automatizado de forma dramática. Los bots que van directo a wp-login.php reciben un 404 y pasan de largo. WPS Hide Login lo hace sin modificar archivos del core, con una configuración de dos campos.
Eso sí: esto es defensa por oscuridad, no seguridad real. Un atacante que apunte específicamente a tu sitio puede encontrar la URL real escaneando el sitio. Usalo como capa adicional, nunca como única medida.
En la misma línea, cambiar el nombre de usuario «admin» por algo no predecible cierra la otra mitad del ataque de diccionario. Si el atacante no sabe cuál es tu usuario, tiene que adivinar dos campos en vez de uno. WordPress no permite cambiar el nombre de usuario desde la interfaz, pero podés crear un usuario nuevo con otro nombre, darle rol Administrador, y borrar el usuario «admin» original (ojo: primero reasigná sus posts al nuevo usuario).
Autenticación de dos factores (2FA) como barrera adicional
El 2FA es la medida con mejor relación esfuerzo/resultado para cuentas admin. Incluso si un atacante obtiene tu contraseña correcta, sin el segundo factor no entra. Detiene el 100% de los bots automatizados, porque ningún script puede generar el código TOTP que cambia cada 30 segundos.
Los métodos disponibles en WordPress son dos principalmente. El TOTP (Google Authenticator, Authy, cualquier app compatible) genera un código de 6 dígitos que cambia cada 30 segundos. El U2F usa llaves de seguridad físicas USB (YubiKey, por ejemplo): más robusto, pero más caro y menos práctico para la mayoría.
Para implementarlo, el plugin Wordfence 2FA (incluido en la versión gratuita) y el plugin «Two Factor» del repositorio oficial son las opciones más directas. Configuralo como mínimo en todas las cuentas con rol Administrador o Editor.
¿Vale la pena el paso extra al entrar? Si el sitio tiene datos de clientes, una tienda WooCommerce o cualquier información sensible, la respuesta es sí sin dudarlo.
WAF: firewall de aplicación web a nivel plugin y externo
Un WAF (Web Application Firewall) analiza el tráfico antes de que llegue a WordPress y bloquea patrones de ataque conocidos. Hay dos tipos con diferencias importantes:
WAF a nivel plugin (Wordfence Firewall)
Se instala como plugin en tu WordPress. Intercepta las solicitudes antes de que PHP las procese. Funciona bien y es más fácil de configurar, pero tiene una limitación: el servidor web ya recibió la solicitud. En ataques de alto volumen, el servidor puede degradarse antes de que el WAF actúe.
WAF externo (Cloudflare, Sucuri CDN)
El tráfico pasa primero por el WAF externo antes de llegar a tu servidor. Bloquea en capa de red, lo que significa que el servidor nunca ve el ataque. Cloudflare en su plan gratuito ya incluye protección básica contra brute force vía rate limiting. El plan Pro (USD 20/mes) agrega reglas WAF más específicas.
Para un sitio en producción con tráfico real, la combinación óptima es WAF externo (Cloudflare o Sucuri) más Wordfence como segunda capa dentro de WordPress. Si tu sitio está en un hosting con buena infraestructura, como donweb.com, algunos planes ya incluyen protección DDoS a nivel de red que complementa estas capas.
Contraseñas y monitoreo continuo
Todo lo anterior pierde valor si la contraseña de admin es «wordpress2026». Las reglas mínimas: 12 caracteres, combinación de letras, números y símbolos, única para este sitio (no reutilizada de ningún otro servicio). Un gestor de contraseñas (Bitwarden, 1Password) resuelve el problema de recordarlas.
El monitoreo continuo significa revisar periódicamente los logs de Wordfence, tener activadas las alertas por correo para bloqueos, y hacer auditoría de usuarios activos cada cierto tiempo. Un usuario inactivo con contraseña débil es una puerta trasera esperando ser usada.
Un detalle que mucha gente ignora: XML-RPC. Es una API antigua de WordPress que también acepta credenciales y es blanco frecuente de ataques de brute force. Si no usás apps móviles de WordPress ni Jetpack, deshabilitalo. Podés hacerlo con un snippet en functions.php o con Wordfence (tiene la opción en configuración avanzada).
Tabla comparativa de herramientas de protección
| Herramienta | Tipo | Precio | Límite intentos | 2FA | WAF |
|---|---|---|---|---|---|
| Limit Login Attempts Reloaded | Plugin | Gratuito | Sí | No | No |
| Wordfence (free) | Plugin | Gratuito | Sí | Sí | Sí (básico) |
| Wordfence Premium | Plugin | USD 119/año | Sí | Sí | Sí (tiempo real) |
| WPS Hide Login | Plugin | Gratuito | No | No | No |
| Cloudflare (free) | WAF externo | Gratuito | Rate limiting básico | No | Sí (básico) |
| Cloudflare Pro | WAF externo | USD 20/mes | Rate limiting avanzado | No | Sí (completo) |
| Two Factor (plugin) | Plugin | Gratuito | No | Sí (TOTP/U2F) | No |

Errores comunes que dejan la puerta abierta
Error 1: Confiar solo en el cambio de URL de login. WPS Hide Login reduce el ruido automatizado, pero no es una protección real. Un atacante que apunte específicamente a tu sitio puede encontrar la URL nueva. Sin límite de intentos y sin 2FA, el cambio de URL solo aplaza el problema.
Error 2: No proteger XML-RPC. Muchos sitios tienen bien configurado wp-login.php pero dejan XML-RPC abierto. Los bots modernos atacan ambos. Si Wordfence está activo, revisá que la opción de bloquear XML-RPC esté habilitada. Si no usás esa API para nada, bloqueala del todo.
Error 3: Activar 2FA solo en el admin principal y olvidar los demás. Si tenés varios usuarios con rol Editor o Administrador y solo uno tiene 2FA, los otros son el eslabón débil. Los atacantes prueban todos los usuarios que puedan encontrar (incluyendo los que aparecen en las URLs de autor como ?author=1, ?author=2). La política de 2FA tiene que aplicar a todos los roles con permisos elevados.
Error 4: Poner el umbral de bloqueo muy alto. Configurar bloqueo recién a los 20 intentos fallidos es demasiado permisivo. Con eso, un ataque distribuido desde múltiples IPs puede probar miles de contraseñas antes de que se active cualquier bloqueo. 5 intentos es razonable; 3 si sos paranoico (con el riesgo de bloquearte a vos mismo si escribís mal la contraseña seguido).
Preguntas Frecuentes
¿Qué es un ataque brute force en WordPress?
Un ataque brute force en WordPress es un método automatizado donde bots prueban combinaciones masivas de usuario y contraseña contra la página de login (wp-login.php). WordPress no tiene límite de intentos por defecto, lo que permite que los atacantes prueben miles de contraseñas por minuto sin ser detenidos automáticamente.
¿Cómo puedo bloquear intentos de login en mi WordPress?
Instalá un plugin que limite intentos fallidos: Limit Login Attempts Reloaded (gratuito, 2M+ instalaciones) o Wordfence. Configurá el bloqueo tras 5 intentos fallidos. Wordfence además ofrece bloqueo a nivel de firewall antes de que el intento llegue a la lógica de login de WordPress.
¿Cuál es el mejor plugin para proteger WordPress de brute force?
Para sitios pequeños y medianos, la combinación de Wordfence gratuito (firewall + límite de intentos + 2FA) cubre la mayoría de los casos sin costo. Si necesitás feeds de amenazas en tiempo real y protección más agresiva, Wordfence Premium a USD 119/año agrega esa capa. Para protección a nivel de red antes del servidor, Cloudflare es complementario y no reemplaza a Wordfence.
¿Cómo habilitar 2FA en WordPress para más seguridad?
Con Wordfence activado, entrá a Wordfence > Login Security y seguí los pasos para vincular tu cuenta con Google Authenticator u otra app TOTP compatible. Si preferís un plugin dedicado, «Two Factor» del repositorio oficial de WordPress soporta TOTP y llaves de seguridad U2F. Activalo como mínimo en todas las cuentas con rol Administrador.
¿Cómo cambiar la URL de wp-login.php para evitar ataques?
Instalá WPS Hide Login desde el repositorio de WordPress. En la configuración del plugin, ingresá la URL personalizada que quieras usar (por ejemplo, /acceso-admin). A partir de ese momento, wp-login.php devuelve 404 y solo la URL nueva funciona. Guardá esa URL en un lugar seguro porque si la olvidás tendrás que desactivar el plugin por FTP.
Conclusión
Los ataques de brute force en WordPress no son sofisticados, pero son efectivos contra sitios sin protección básica. Con Wordfence registrando más de 90.000 ataques por minuto a nivel global, la pregunta no es si tu sitio va a recibir intentos, sino cuándo.
La buena noticia es que defenderse no es difícil. La combinación de límite de intentos (Wordfence o Limit Login Attempts Reloaded), 2FA en cuentas admin, cambio de usuario «admin» y opcionalmente una URL de login personalizada cubre el 95% de los vectores de ataque automatizados. Si el sitio tiene tráfico relevante o maneja datos de clientes, sumá un WAF externo como Cloudflare encima.
Hacelo ahora, antes de necesitarlo. Un sitio comprometido es mucho más trabajo que configurar estas capas preventivas.