Ocultar la página de login de WordPress a los bots

El login de todo sitio WordPress vive en la misma URL que atacan los bots: wp-login.php. Muévelo a un slug secreto y envía a los intrusos a un 404.

Todos los sitios WordPress del planeta tienen su login en la misma dirección: wp-login.php. Todos los bots de fuerza bruta la conocen, todos los escáneres de vulnerabilidades la prueban primero, y WordPress de fábrica no ofrece nada para cambiarla: la URL está escrita en el código. Así que tu página de login recibe golpes las veinticuatro horas de scripts que nunca van a parar, porque siempre saben exactamente dónde tocar. La respuesta más eficaz no es un candado más grande. Es mover la puerta.

Lo esencial

  • Todo login de WordPress vive en wp-login.php: un objetivo universal que todos los bots ya conocen.
  • El módulo mueve el login a un slug secreto y redirige la URL antigua y /wp-admin (para visitantes sin sesión) a un 404 o a la página que elijas.
  • Omite AJAX, REST API, XML-RPC, cron y CLI, así que plugins, apps y tareas programadas siguen funcionando.
  • Los slugs reservados (wp-admin, login, xmlrpc.php…) están bloqueados, y el slug de login queda excluido de la caché de páginas: no puedes romperlo ni exponerlo por accidente.
  • Está desactivado hasta que tú lo enciendas, te avisa que guardes la URL en marcadores y recomienda combinarlo con Fatal Error Recovery como red de seguridad contra bloqueos.

¿Por qué wp-login.php es un problema tan grande?

Porque WordPress no te da ninguna forma integrada de cambiar la URL de login, bloquear el acceso directo a wp-login.php, mantener a los visitantes sin sesión fuera de /wp-admin ni redirigir los intentos a otra parte. Así que la página de login se queda ahí, idéntica y predecible, en millones de sitios.

El resultado es un tráfico automatizado implacable. Los bots no necesitan tener éxito para costarte caro: queman recursos del servidor, entierran tus logs bajo intentos fallidos y pueden ralentizar notablemente un sitio pequeño con solo tocar la puerta miles de veces al día. Limitar intentos y los CAPTCHA combaten ese tráfico cuando ya llegó. Ocultar el login elimina el objetivo para que el tráfico nunca llegue en primer lugar: si un bot no encuentra la puerta, no puede martillearla.

¿Cómo ocultas tu página de login de WordPress?

Activa el módulo Hide Login Page en Blaminhor Essentials y configura dos cosas: un slug de login secreto que reemplaza a wp-login.php, y a dónde enviar a todos los demás —tu 404 o la página que elijas—. Los usuarios con sesión llegan al panel con normalidad, y AJAX, REST, cron y CLI quedan intactos, así que nada en tu sitio se rompe.

El módulo Hide Login Page: un campo para el slug de login personalizado, un destino de redirección para visitantes no autorizados y un recordatorio de activar primero Fatal Error Recovery. Dos campos —tu slug de login secreto y a dónde enviar a todos los demás— más un empujoncito integrado para configurar la recuperación antes de encenderlo.

Define una URL de login secreta

Reemplaza wp-login.php por un slug que tú elijas, para que tu login se convierta en tusitio.com/mi-puerta-secreta/ en lugar de la dirección que todos los bots prueban. Hazlo memorable pero no adivinable: evita opciones obvias como admin, login o signin. El módulo bloquea activamente los slugs reservados (wp-admin, wp-login, xmlrpc.php y similares) para que no puedas elegir algo que chocaría con el propio WordPress.

Manda a todos los demás a otra parte

Una vez activado, cualquiera que llegue a wp-login.php o a /wp-admin sin haber iniciado sesión es redirigido: por defecto a tu 404, o a la URL que prefieras (tu página de inicio, una página personalizada). Nunca ven un formulario de login, y nunca descubren que existe uno en ese slug. Los usuarios con sesión llegan al panel con normalidad, y las peticiones de AJAX, REST API, XML-RPC, cron y CLI quedan intactas, así que nada en tu sitio se rompe. El slug de login personalizado queda incluso excluido de la caché de páginas, para que una capa de caché no pueda servirlo ni exponerlo por accidente.

Esto es lo que cambia para cada tipo de petición, para que veas que nada legítimo queda atrapado:

PeticiónWordPress por defectoCon Hide Login Page
wp-login.php en un navegador (sin sesión)Formulario de login visible para cualquieraRedirigido a un 404 o a la página que elijas
/wp-admin (sin sesión)Rebota a wp-login.phpRedirigido fuera: ningún login revelado
Tu slug secretoNo existeMuestra el formulario de login
AJAXFuncionaIntacto: omitido deliberadamente
REST APIFuncionaIntacta: omitida deliberadamente
XML-RPCFuncionaIntacto: omitido deliberadamente
Cron / WP-CLIFuncionanIntactos: omitidos deliberadamente

¿Y si te quedas fuera de tu propio sitio?

Ese es el único riesgo genuino de ocultar un login: olvida la URL personalizada y tú también te quedas afuera. El módulo incorpora dos salvaguardas.

  • Guarda la URL en tus marcadores. El módulo muestra un recordatorio claro antes de que lo actives: guarda el slug en algún lugar de confianza.
  • Activa primero Fatal Error Recovery. Este módulo compañero proporciona una URL secreta de recuperación que siempre funciona, incluso si pierdes tu dirección de login personalizada. Hide Login recomienda explícitamente encenderlo antes de activarte: dos módulos del mismo plugin que se conocen entre sí, exactamente el tipo de red de seguridad que las herramientas sueltas nunca te dan.

Un ejemplo práctico

Digamos que administras el sitio de un cliente y quieres el login invisible tanto para los bots como para el cliente:

  1. Activa Hide Login Page.
  2. Define el slug de login como algo tipo acceso-cliente.
  3. Configura la redirección a 404.
  4. Activa Fatal Error Recovery y guarda su URL de recuperación en un lugar seguro.
  5. Enciende la protección.

Ahora tusitio.com/wp-login.php y tusitio.com/wp-admin/ devuelven ambos un 404. La única entrada es tusitio.com/acceso-cliente/. Los bots que rastrean wp-login.php no encuentran nada, los scripts de fuerza bruta se quedan sin objetivo y tus logs se quedan en silencio.

Seguridad simple, sin sobrecarga

Mover tu login no toca tus contraseñas ni tu 2FA: elimina el objetivo del que dependen todos los ataques automatizados. Sin editar .htaccess, sin configurar el servidor, sin costo de rendimiento: solo una URL distinta y un sitio mucho más tranquilo. Combínalo con los módulos HTTPS Redirect y Fatal Error Recovery y tu superficie de login queda tan pequeña como WordPress lo permite.

Hide Login Page es una de las más de 20 herramientas de Blaminhor Essentials, gratuito y de código abierto en WordPress.org.

Descarga Blaminhor Essentials

– blaminhor

FAQ

¿Ocultar la página de login realmente detiene los ataques de fuerza bruta?

Detiene los automatizados, que son la inmensa mayoría. Los bots martillean wp-login.php porque es la misma URL en todos los sitios; mueve el login a un slug secreto y se topan con un 404 sin nada que atacar. Un humano que te tenga en la mira y de algún modo encuentre tu slug todavía necesita tu contraseña, así que mantenla fuerte también.

¿Ocultar mi login romperá AJAX, la REST API o el cron?

No. El módulo omite deliberadamente las peticiones de AJAX, REST API, XML-RPC, cron y CLI, así que los plugins, las apps y las tareas programadas siguen funcionando con normalidad. Solo se redirigen las peticiones de navegador humanas a la antigua página de login y a wp-admin por parte de visitantes sin sesión.

¿Cómo cambio también la URL de wp-admin?

No renombras /wp-admin: sigue existiendo, pero el módulo redirige a cualquier visitante sin sesión que llegue ahí directo a tu 404 o a la página que elijas, así que nadie sin sesión ve jamás un login. Con tu slug de login en secreto, /wp-admin se convierte en un callejón sin salida para los bots; los usuarios con sesión llegan con normalidad.

¿Ocultar el login es mejor que limitar intentos de acceso o el 2FA?

Es complementario, no un reemplazo. Limitar intentos y el 2FA combaten los ataques cuando ya llegaron a tu login; ocultar la página hace que la mayoría nunca llegue, reduciendo el ruido que esas herramientas deben manejar. La configuración más sólida apila las tres capas —slug oculto, intentos limitados y 2FA— en lugar de confiar en una sola.

¿Y si olvido mi URL de login personalizada y me quedo fuera?

Ese es el único riesgo real, así que guarda la URL en tus marcadores y combina el módulo con Fatal Error Recovery, un módulo compañero que te da un enlace secreto de recuperación que siempre funciona. Hide Login incluso te recuerda activarlo primero. Los slugs reservados como wp-admin o login también están bloqueados para que no puedas elegir una URL que te sabotee.

¿Ocultar mi login interferirá con la caché de páginas?

No. El módulo excluye automáticamente tu slug de login personalizado de la caché de páginas, así que una capa de caché no puede almacenar por accidente la página de login, servir una versión obsoleta ni exponer el slug en una URL cacheada. Todo lo demás se cachea con normalidad: solo la ruta sensible del login queda deliberadamente fuera.

blaminhor Construyo lo que falta.

Comentarios