Cómo proteger la carpeta wp-admin con .htaccess

Contents

Cómo proteger la carpeta wp-admin con .htaccess

La carpeta wp-admin de WordPress es el núcleo del panel de control de tu sitio. Si un atacante logra acceder a ella, podría tomar el control total de tu web. Implementar una capa adicional de seguridad mediante .htaccess y .htpasswd es una técnica recomendada por expertos en seguridad.

Índice de contenidos

1. Por qué proteger la carpeta wp-admin

El directorio wp-admin alberga archivos críticos del dashboard de WordPress, incluyendo:

  • Archivos de configuración y conexión a la base de datos.
  • Scripts de administración y actualización.
  • Herramientas internas de gestión de usuarios y roles.

Sin una protección adecuada, un atacante podría:

  • Probar contraseñas mediante brute force.
  • Explotar vulnerabilidades de plugins o temas.
  • Subir malware o modificar archivos críticos.

Ventajas de añadir una capa extra:

  • Autenticación HTTP básica antes de llegar a WordPress.
  • Bloqueo de bots y usuarios no autorizados.
  • Registro de intentos de acceso en el servidor.

2. Métodos de protección

Método Descripción Ventajas
Autenticación HTTP básica Usa .htpasswd para pedir usuario y contraseña antes de acceder. Fácil de implementar y efectiva.
Filtrado por IP Solo permite el acceso desde direcciones IP confiables. Control muy estricto.
Protección combinada Mezcla autenticación y filtro de IP. Mayor seguridad en capas.
Limitación de intentos Plugins o reglas mod_security para limitar login fails. Mitiga ataques de fuerza bruta.

3. Implementación paso a paso

3.1. Crear archivo .htpasswd

El archivo .htpasswd almacena usuarios y contraseñas encriptadas. Puedes generarlo mediante la herramienta htpasswd de Apache o un generador en línea.

  • En servidor Linux/SSH: htpasswd -c /ruta/oculta/.htpasswd usuario
  • En Windows: usar herramientas como Apache Utilities.

El resultado será una línea como:

usuario:apr1abcd1234XyZ9QwErT5YzK7/8p0QaB.

3.2. Configurar .htaccess en wp-admin

Crea (o edita) wp-admin/.htaccess con este contenido:

AuthName Área restringida
AuthType Basic
AuthUserFile /ruta/oculta/.htpasswd
Require valid-user

# Permitir admin-ajax.php para AJAX

  Require all granted

Explicación:

  • AuthName: Mensaje que verá el usuario en el diálogo.
  • AuthType Basic: Tipo de autenticación.
  • AuthUserFile: Ruta absoluta al .htpasswd.
  • Require valid-user: Solo usuarios del .htpasswd.
  • Se excluye admin-ajax.php para mantener funcionalidad AJAX de plugins.

3.3. Filtrado por IP (opcional)

Para añadir restricción por dirección IP, combina estas reglas:

Order Deny,Allow
Deny from all

# Lista blanca de IPs
Allow from 123.45.67.89
Allow from 98.76.54.32

# Autenticación adicional
AuthType Basic
AuthName Acceso WP-Admin
AuthUserFile /ruta/oculta/.htpasswd
Require valid-user


  Require all granted

Ajusta las IPs según tu configuración de oficina o proveedores VPN.

3.4. Probar y depurar

  • Accede a tusitio.com/wp-admin. Debe pedir usuario/clave.
  • Verifica admin-ajax.php funcionando: prueba un plugin con AJAX.
  • Revisa los logs de Apache (error_log) si hay errores 500 o 401.

4. Buenas prácticas adicionales

4.1. Desactivar edición de temas y plugins

define(DISALLOW_FILE_EDIT, true)

4.2. Renombrar la carpeta de login

Usa plugins como WPS Hide Login para ocultar wp-login.php. Así añades seguridad por oscuridad.

4.3. Actualización constante

  • Mantén WordPress, plugins y temas siempre actualizados.
  • Usa contraseñas robustas (passphrases).
  • Aplica autenticación de dos factores (2FA).

4.4. Monitoreo y alertas

Implementa soluciones de monitoreo como Wordfence para recibir alertas sobre accesos fallidos o cambios de archivos.

5. Referencias y lecturas recomendadas

Artículo generado para ofrecer una guía completa y detallada en la protección de wp-admin mediante .htaccess. Sigue estos pasos y refuerza la seguridad de tu sitio WordPress.


Acepto donaciones de BAT's mediante el navegador Brave 🙂



Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *