En pocas palabras: Para frenar el brute force en WordPress, instalá el plugin Limit Login Attempts Reloaded (más de 2 millones de instalaciones activas), configurá un máximo de 4 a 6 intentos fallidos y activá bloqueos progresivos: 20 minutos en el primero, 2 horas en el segundo y 24 horas en el tercero.

WordPress no limita intentos de login por defecto: cualquier bot puede probar contraseñas sin que el sistema lo frene. Para limitar intentos de login en WordPress y cortar el brute force, instalá el plugin Limit Login Attempts Reloaded, configurá un máximo de 4 a 6 intentos fallidos y activá tiempos de bloqueo con escalamiento progresivo: 20 minutos en el primero, 2 horas en el segundo, 24 horas en el tercero.

En 30 segundos

  • WordPress acepta intentos de login ilimitados por defecto: no hay protección nativa contra brute force en el core.
  • Limit Login Attempts Reloaded, con más de 2 millones de instalaciones activas, es la solución gratuita más probada para este problema.
  • El rango óptimo es 4 a 6 intentos antes de bloquear, no los 20 que configura la mayoría por descuido.
  • El escalamiento de tiempos (20 min → 2 hs → 24 hs) hace que el costo del ataque supere el beneficio para el bot.
  • Cambiar la URL de wp-login.php reduce el ruido de bots básicos, pero no reemplaza el límite de intentos: si encuentran la nueva ruta, quedás igual de expuesto.

¿Qué es un ataque brute force y por qué WordPress es vulnerable?

Un ataque de fuerza bruta contra WordPress es un método automático donde bots prueban combinaciones masivas de usuario y contraseña contra el endpoint wp-login.php hasta encontrar una válida. WordPress no incluye ningún límite de intentos en su configuración base, lo que convierte cualquier instalación sin protección adicional en un blanco disponible para scripts automatizados que trabajan las 24 horas.

Ponele que tenés un sitio con WooCommerce. Un bot identifica tu wp-login.php, conoce tu usuario porque aparece en la URL del autor de algún post, y empieza a probar contraseñas a razón de miles por hora. Vos no recibís ninguna alerta, WordPress no bloquea nada, y si la contraseña era «tienda2024» o «admin123», el atacante entra y queda con acceso total al panel.

O peor: instalás WordPress, elegís un tema, subís algunos plugins, publicás tu primer post con tu nombre de usuario visible en la URL del autor, y al día siguiente un bot ya intentó 400 combinaciones de contraseña contra tu wp-login.php sin que WordPress dijera nada, sin que te llegara ninguna alerta, sin que quedara ningún registro en el dashboard (spoiler: eso es lo normal para cualquier sitio sin protección).

Según datos de Wordfence de 2026, el sistema de firewall registra más de 90.000 ataques de fuerza bruta por minuto a nivel global. El problema estructural es que WordPress delega la protección al administrador del sitio: el core no bloquea IPs, no rastrea intentos fallidos y no escala la dificultad de autenticación. Todo hay que configurarlo aparte.

Paso 1: Instalar y activar Limit Login Attempts Reloaded

Limit Login Attempts Reloaded resuelve el problema central: hace que WordPress lleve un registro de intentos fallidos por IP y bloquee al que supere el límite configurado. Más de 2 millones de instalaciones activas lo hacen el plugin más adoptado para este caso. Esto se conecta con lo que analizamos en usar un plugin de seguridad profesional.

  • Andá a Plugins → Añadir nuevo en el menú lateral de tu dashboard de WordPress.
  • Buscá «Limit Login Attempts Reloaded», de Dev4Press. Fijate que sea ese nombre exacto, hay variantes desactualizadas con nombres similares.
  • Instalá y activá el plugin. Desde ese momento empieza a registrar intentos fallidos, aunque todavía no configuraste nada.
  • Verificá la instalación en Ajustes → Limit Login Attempts, donde ya debería aparecer la pantalla de configuración con los valores por defecto.

La página oficial del plugin en WordPress.org confirma compatibilidad con WordPress 6.x y actualizaciones regulares. Si necesitás funciones extra como listas de IPs bloqueadas compartidas entre varios sitios, existe una versión premium en limitloginattempts.com. Para la mayoría de los sitios, la versión gratuita alcanza y sobra.

Paso 2: Configurar los intentos permitidos (4 a 6 máximo)

Una vez activo el plugin, andá a Ajustes → Limit Login Attempts y buscá el campo «Permitir reintentos». Ese número controla cuántas veces puede fallar una IP antes de quedar bloqueada. El rango correcto es 4 a 6.

No es arbitrario. Un usuario legítimo que olvidó su contraseña suele acertar en 3 o 4 pruebas con variaciones que recuerda: con mayúscula, sin el número del final, con el año distinto. Con 5 intentos le das ese margen mínimo sin abrir la puerta a un ataque automatizado, que necesita miles de pruebas para ser efectivo.

El error más común es llegar a esta pantalla y dejar el valor en 20 o más. Eso es casi no tener protección. Un bot prueba 20 contraseñas en segundos, incluyendo las más usadas del planeta: admin, password, 123456, el nombre del sitio.

Paso 3: Tiempos de bloqueo con escalamiento progresivo

El tiempo de bloqueo después del primer fallo importa tanto como el límite de intentos. Sin escalamiento, el atacante espera 5 minutos y vuelve a intentarlo, iterando con paciencia hasta que da con la contraseña o te das cuenta. Con escalamiento, el costo de continuar el ataque crece hasta que deja de tener sentido.

La configuración que funciona en sitios con algo real que proteger:

  • Primer bloqueo: 20 minutos. Interrumpe el ataque inmediato y descarta los bots sin lógica de reintentos, que son la mayoría.
  • Segundo bloqueo: 2 horas. Si el atacante volvió después de esperar los primeros 20 minutos y falló de nuevo, ahora queda fuera durante un tiempo que ya no es rentable para la mayoría de los scripts automatizados.
  • Tercer bloqueo: 24 horas. A esta altura, el costo de continuar supera cualquier beneficio razonable. El bot se va a buscar otro blanco más fácil.

¿Por qué funciona el escalamiento? Porque los ataques de fuerza bruta son negocios de escala: el atacante no espera detrás del teclado. Sus bots saltan de sitio en sitio buscando los que ceden rápido. Si vos tardás 24 horas en desbloquearte, el bot no te espera. Tema relacionado: implementar autenticación de dos factores.

ConfiguraciónIntentos antes de bloquear1er bloqueo2do bloqueo3er bloqueo
Permisiva10–205 minutos30 minutos2 horas
Equilibrada (recomendada)4–620 minutos2 horas24 horas
Conservadora3–41 hora12 horas72 horas

La configuración permisiva es la que recomiendan foros que priorizan no molestar al usuario. Para cualquier sitio que maneje datos de clientes o pedidos, optá por la equilibrada como mínimo.

Paso 4: Notificaciones por email y whitelist de IPs confiables

Activar las alertas por email te avisa cada vez que una IP supera el límite de intentos. Es el mínimo de monitoreo activo que debería tener cualquier WordPress con acceso público: sin alertas, podés estar bajo ataque durante días sin enterarte.

La opción aparece en la misma pantalla de configuración. Lo recomendable es configurar la notificación a partir de cierto número de bloqueos en una misma IP, no en cada intento individual. Si tu sitio tiene algo de tráfico, las alertas por cada intento se convierten en ruido y terminás ignorándolas todas.

Lo que no podés ignorar es la whitelist de IPs. Si vos o tu equipo trabajan desde una IP fija (oficina, VPN, acceso del cliente), agregala a la lista blanca antes de activar bloqueos agresivos. De lo contrario, vas a bloquearte tu propia IP en algún momento, te vas a quedar sin acceso al panel y el único camino va a ser entrar por SFTP a editar los archivos del plugin (no es dramático, pero sí molesto y evitable). El plugin también tiene soporte de GDPR: las IPs bloqueadas se pueden anonimizar si operás en mercados donde eso importa legalmente.

Medidas complementarias: URL de login, CAPTCHA y XML-RPC

El límite de intentos es la capa principal. Estas tres medidas no la reemplazan, pero agregan fricción adicional al atacante y reducen la superficie de ataque. Complementá con agregar un segundo factor de autenticación.

¿Cambiar la URL de wp-login.php sirve de algo real?

El plugin WPS Hide Login permite cambiar wp-login.php por cualquier URL personalizada. Esto reduce el ruido: la mayoría de los bots apuntan a la URL estándar y, si no la encuentran, siguen de largo. El problema es que eso no es protección real. Si el atacante enumera URLs, revisa tus logs o usa ingeniería social, va a encontrar la nueva ruta y quedás igual de expuesto que antes. Usalo como medida de reducción de ruido, nunca como sustituto del límite de intentos.

CAPTCHA en el formulario de login

Agregar Google reCAPTCHA v3 o hCaptcha al formulario de login suma una capa que los bots más básicos no superan. Plugins como WP Captcha o Login No Captcha reCAPTCHA lo implementan en pocos minutos. Los bots más sofisticados resuelven CAPTCHAs, pero la mayoría del tráfico automatizado de bajo costo no pasa ese filtro. Es un complemento útil, no un reemplazo.

¿Cómo bloquear XML-RPC en WordPress?

XML-RPC es una API legada de WordPress que muchos bots usan para intentar autenticación porque en algunas configuraciones no tiene los mismos controles que wp-login.php. Si no usás aplicaciones de publicación remota ni Jetpack, podés bloquearlo en tu .htaccess con una directiva <Files xmlrpc.php> que deniega todo acceso. También existe el plugin Disable XML-RPC que lo hace sin tocar archivos. Si tu sitio está alojado en DonWeb u otro host con cPanel y ModSecurity activo, podés bloquearlo desde las reglas del firewall del servidor sin depender de WordPress.

Wordfence como alternativa para protección en capas

Limit Login Attempts Reloaded resuelve el problema puntual. Wordfence es una solución más amplia: incluye firewall de aplicaciones web (WAF), detección de malware, auditoría de archivos del core y, dentro de ese sistema, también límite de intentos de login.

La configuración recomendada de Wordfence para el módulo de brute force, según su documentación oficial, es 5 intentos permitidos con un período de conteo de 4 horas y tiempo de bloqueo de 4 horas. La versión premium agrega inteligencia de amenazas en tiempo real: bloquea IPs maliciosas conocidas antes de que lleguen a intentar el login, lo que elimina el vector antes de que se active el mecanismo de brute force.

¿Cuándo vale Wordfence sobre Limit Login Attempts? Cuando el sitio tiene historial de ataques, maneja datos sensibles o el administrador quiere monitoreo centralizado en lugar de gestionar plugins separados para cada función. Para un blog o portfolio pequeño, Limit Login Attempts Reloaded hace el trabajo sin el overhead de Wordfence.

Errores comunes que debilitan tu protección

  • Dejar el límite de intentos en 20 o más. Es el error más frecuente. Con 20 intentos permitidos, un bot tiene tiempo suficiente para probar contraseñas comunes antes de que se active el bloqueo. La solución: bajá el valor a 4–6 en el momento de la instalación, no después de que pase algo.
  • No escalar los tiempos de bloqueo. Un bloqueo fijo de 5 minutos no sirve: el bot espera, reintenta y tiene todo el día para seguir. Sin escalamiento, el límite de intentos es una molestia menor para cualquier atacante con algo de paciencia. El escalamiento (20 min → 2 hs → 24 hs) cambia la ecuación.
  • Creer que cambiar wp-login.php es suficiente. El cambio de URL es reducción de ruido, no seguridad. La «capa de protección» que ofrece dura hasta que alguien enumera tus URLs o revisa un log accesible. La protección real está en limitar los intentos con escalamiento, independientemente de qué URL tenga el formulario de login.

Preguntas Frecuentes

¿Cuántos intentos de login debo permitir antes de bloquear?

El rango recomendado es 4 a 6 intentos. Un usuario legítimo que olvidó su contraseña suele recordarla en 3 o 4 pruebas con variaciones que conoce. Valores de 10 o más dan margen suficiente para que un bot pruebe contraseñas comunes sin activar el bloqueo. Para sitios con datos sensibles, bajá a 3–4 intentos y asegurate de tener un proceso claro de recuperación de contraseña para usuarios legítimos que queden bloqueados. Más contexto en reforzar la seguridad de tu WordPress.

¿Qué plugin limita intentos de login en WordPress?

Limit Login Attempts Reloaded es el plugin gratuito más usado, con más de 2 millones de instalaciones activas y compatibilidad verificada con WordPress 6.x. Wordfence incluye la misma función dentro de un sistema de seguridad más amplio con WAF y detección de malware. Para la mayoría de los sitios, la versión gratuita de Limit Login Attempts Reloaded es suficiente. Wordfence conviene cuando necesitás protección en capas desde un solo plugin.

¿Cómo configurar Limit Login Attempts Reloaded?

Después de instalar y activar el plugin desde Plugins → Añadir nuevo, andá a Ajustes → Limit Login Attempts. Los campos clave son: «Permitir reintentos» (configurá en 4–6), «Minutos de bloqueo» (20 minutos para el primer bloqueo), «Horas de bloqueo» (2 horas para el segundo) y «Horas hasta reinicio de reintentos» (24 horas para el tercero). Activá también las notificaciones por email y agregá tus IPs confiables a la whitelist antes de guardar los cambios.

¿Cuánto tiempo debo bloquear después de intentos fallidos?

La configuración equilibrada es: 20 minutos en el primer bloqueo, 2 horas en el segundo y 24 horas en el tercero. El escalamiento es la parte crítica: un bloqueo fijo de 5 o 10 minutos no es efectivo porque el bot puede esperar y reintentar sin límite real de tiempo. Con 24 horas en el tercer bloqueo, el costo de seguir el ataque supera el beneficio para la gran mayoría de los atacantes automatizados.

¿Es suficiente cambiar la URL de wp-login.php para frenar el brute force?

No. Cambiar la URL de login con WPS Hide Login u otro plugin reduce el volumen de ataques de bots básicos que apuntan a la ruta estándar, pero no protege el formulario si alguien descubre la nueva URL. La protección real contra brute force requiere limitar los intentos de autenticación fallidos con tiempos de bloqueo en escalamiento. El cambio de URL es una medida de reducción de ruido: útil como complemento, inútil como única defensa.

Conclusión

WordPress no viene listo para defenderse de los ataques de fuerza bruta. Eso no es nuevo ni sorprendente: es una decisión de diseño del core que delega la seguridad al administrador.

La configuración que funciona es concreta: Limit Login Attempts Reloaded con 4–6 intentos y tiempos de bloqueo en escalamiento progresivo. No toma más de 10 minutos implementar y corta la mayor parte del tráfico de bots automatizados contra wp-login.php. Si el sitio tiene mayor exposición o historial de ataques, sumás Wordfence como capa adicional. Si querés reducir el ruido de bots básicos, cambiás la URL de login como complemento. Si no usás XML-RPC, lo bloqueás y cerrás ese vector secundario.

Lo que no tiene sentido es dejar un WordPress en producción con los valores por defecto y esperar que todo salga bien. Los ataques automatizados no distinguen entre blogs personales y tiendas: buscan cualquier instalación que ceda.

Fuentes