🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Proteger el panel de administración de WordPress con .htaccess

Actualizado el 20 de marzo de 2026

Proteger el panel de administración de WordPress (wp-admin) es una de las medidas de seguridad más efectivas que puedes implementar por tu cuenta. Si eres usuario de Syspanel (accesible por el puerto 2106) o de cualquier otro panel de control, añadir reglas en el archivo .htaccess te permitirá bloquear el acceso no autorizado, evitando ataques de fuerza bruta y scripts maliciosos. Este artículo te guiará paso a paso, explicando cada método con un lenguaje sencillo y ejemplos prácticos.


¿Por qué proteger wp-admin con .htaccess?

El directorio wp-admin es la puerta de entrada a la gestión completa de tu sitio web. Sin protección, cualquier persona puede intentar acceder a tudominio.com/wp-admin y probar contraseñas. Al usar .htaccess, puedes:

  • Restringir el acceso por IP: Solo tú o tu equipo podrán entrar.
  • Añadir una doble autenticación: Un usuario y contraseña adicionales (HTTP Auth).
  • Bloquear direcciones IP sospechosas: Evitar ataques de bots.
  • Limitar el acceso a archivos críticos: Como wp-login.php o admin-ajax.php.

[INFO]
El archivo .htaccess se encuentra en la raíz de tu sitio WordPress (en la misma carpeta donde están wp-config.php y wp-content). No lo confundas con el de la carpeta wp-admin.


Requisitos previos

Antes de empezar, asegúrate de:

  • Tener acceso FTP o al administrador de archivos de tu hosting (en Syspanel lo encuentras en el puerto 2106, sección "Archivos").
  • Conocer tu dirección IP actual. Puedes consultarla en sitios como whatismyip.com.
  • Hacer una copia de seguridad del archivo .htaccess original (por si algo sale mal).
  • Tener a mano una IP de respaldo (por ejemplo, la de tu móvil o un amigo de confianza) por si te bloqueas accidentalmente.

Método 1: Bloquear el acceso a wp-admin por IP

Este es el método más seguro y recomendado si tienes una IP fija o trabajas desde pocos lugares. Consiste en permitir solo ciertas direcciones IP.

Paso a paso:

  1. Conéctate a tu servidor vía FTP o abriendo el administrador de archivos en Syspanel (puerto 2106).
  2. Navega a la raíz de tu WordPress (donde está wp-config.php).
  3. Descarga el archivo .htaccess (si no existe, créalo con un editor de texto).
  4. Añade el siguiente código al principio del archivo:
<FilesMatch "wp-login\.php|wp-admin">
Order Deny,Allow
Deny from all
Allow from 192.168.1.100
Allow from 203.0.113.5
</FilesMatch>

[WARNING]
Reemplaza 192.168.1.100 y 203.0.113.5 por tus IPs reales. Si no pones ninguna IP permitida, te bloquearás a ti mismo.

  1. Guarda el archivo y súbelo de nuevo al servidor (si usas FTP).
  2. Prueba el acceso: Ve a tudominio.com/wp-admin. Si tu IP está permitida, entrarás sin problemas. Si no, verás un error 403.

¿Qué hace este código?

  • Order Deny,Allow: Primero deniega todo, luego permite las IPs listadas.
  • Deny from all: Bloquea cualquier IP.
  • Allow from ...: Permite las IPs que especifiques.

[TIP]
Si tienes IP dinámica, puedes usar un servicio como Cloudflare o un script que actualice automáticamente tu IP. O simplemente usa el Método 2 (contraseña adicional).


Método 2: Añadir una contraseña adicional con .htaccess (HTTP Auth)

Este método no bloquea por IP, sino que pide un usuario y contraseña extra antes de entrar a wp-admin. Es ideal si compartes el acceso con varias personas o si tu IP cambia a menudo.

Paso a paso:

  1. Crea un archivo de contraseñas llamado .htpasswd. Puedes generarlo online (busca "htpasswd generator") o desde la terminal de tu servidor. Debe tener este formato:

    usuario:$apr1$hash...
    

    El hash es la contraseña encriptada.

  2. Sube el archivo .htpasswd a una carpeta segura fuera del dominio (por ejemplo, en /home/tuusuario/.htpasswd). En Syspanel, puedes usar la carpeta /home/tuusuario/ o una subcarpeta que no sea accesible desde la web.

  3. Edita el archivo .htaccess en la raíz de WordPress y añade este código ANTES de las reglas de WordPress (justo después de # BEGIN WordPress si existe):

<FilesMatch "wp-login\.php|wp-admin">
AuthType Basic
AuthName "Acceso restringido"
AuthUserFile /home/tuusuario/.htpasswd
Require valid-user
</FilesMatch>

[INFO]
Reemplaza /home/tuusuario/.htpasswd por la ruta real donde subiste el archivo. Si no estás seguro, consulta con tu hosting o en Syspanel puedes ver la ruta completa en la sección "Archivos".

  1. Guarda y sube el .htaccess.
  2. Prueba: Ahora, al visitar tudominio.com/wp-admin, te pedirá usuario y contraseña adicionales (los que pusiste en .htpasswd).

Ventajas de este método:

  • No dependes de IPs.
  • Puedes tener múltiples usuarios.
  • Es fácil de revocar (borrando el usuario del archivo).

[WARNING]
Si olvidas la contraseña, puedes borrar el .htpasswd o editar el .htaccess para eliminar las líneas. Siempre ten acceso FTP.


Método 3: Combinar ambos métodos (IP + contraseña)

Para máxima seguridad, puedes exigir que el usuario tenga una IP permitida Y además introduzca la contraseña. Así, aunque alguien robe las credenciales, no podrá acceder desde una IP no autorizada.

Código para .htaccess:

<FilesMatch "wp-login\.php|wp-admin">
AuthType Basic
AuthName "Acceso restringido"
AuthUserFile /home/tuusuario/.htpasswd
Require valid-user

Order Deny,Allow
Deny from all
Allow from 192.168.1.100
Allow from 203.0.113.5

Satisfy All
</FilesMatch>

[TIP]
La directiva Satisfy All obliga a cumplir ambas condiciones. Si usas Satisfy Any, solo necesitas una de las dos.


Método 4: Bloquear archivos específicos dentro de wp-admin

A veces no quieres proteger todo wp-admin, sino solo archivos críticos como admin-ajax.php o wp-login.php. Esto es útil para evitar ataques de fuerza bruta en el login.

Ejemplo: Proteger solo wp-login.php

<FilesMatch "wp-login\.php">
AuthType Basic
AuthName "Acceso restringido"
AuthUserFile /home/tuusuario/.htpasswd
Require valid-user
</FilesMatch>

Ejemplo: Bloquear admin-ajax.php para usuarios no logueados

<FilesMatch "admin-ajax\.php">
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>

[INFO]
Esto evita que scripts externos usen admin-ajax.php sin autenticación. Ten cuidado si usas plugins que dependan de AJAX público.


Errores comunes y cómo solucionarlos

Error 500 (Internal Server Error)

  • Causa: Sintaxis incorrecta en .htaccess.
  • Solución: Revisa que no haya espacios extra, comillas mal puestas o rutas incorrectas. Descarga el archivo original y restáuralo.

Error 403 (Forbidden) incluso estando en la IP permitida

  • Causa: La IP no coincide exactamente (puede que tengas IPv6 en lugar de IPv4).
  • Solución: Agrega también tu IPv6 (ej: Allow from 2001:db8::1). O usa el método de contraseña.

No aparece el cuadro de autenticación

  • Causa: El archivo .htpasswd no está en la ruta correcta o tiene permisos incorrectos.
  • Solución: Verifica la ruta en el código. En Syspanel, la ruta suele ser algo como /home/usuario/.htpasswd. Asegúrate de que el archivo tenga permisos 644.

Me he bloqueado a mí mismo

  • Solución: Usa FTP o el administrador de archivos de Syspanel para eliminar o renombrar el .htaccess temporalmente. Luego, corrige el código.

Preguntas frecuentes (FAQ)

¿Puedo proteger wp-admin sin .htaccess?

Sí, existen plugins de seguridad como Wordfence o iThemes Security que ofrecen funciones similares. Sin embargo, hacerlo a nivel de servidor con .htaccess es más rápido y no consume recursos de WordPress.

¿Qué pasa si mi hosting no permite .htaccess?

Algunos entornos (como Nginx sin Apache) no usan .htaccess. En ese caso, debes usar el panel de control del servidor (por ejemplo, Syspanel tiene reglas de firewall). Consulta con tu proveedor.

¿Cómo sé mi IP actual?

Visita whatismyip.com o ipinfo.io. Anótala antes de aplicar las reglas.

¿Puedo permitir un rango de IPs?

Sí, usando máscaras de subred. Por ejemplo:

Allow from 192.168.1.0/24

Esto permite todas las IPs desde 192.168.1.1 hasta 192.168.1.254.

¿Es seguro guardar contraseñas en .htpasswd?

Sí, las contraseñas están encriptadas con el algoritmo apr1 (MD5 mejorado). Asegúrate de que el archivo no sea accesible desde la web (colócalo fuera del directorio público).


Conclusión y recomendaciones finales

Proteger wp-admin con .htaccess es una tarea sencilla que puede ahorrarte muchos dolores de cabeza. Elige el método que mejor se adapte a tu caso:

  • IP fija y pocos usuarios: Método 1 (por IP).
  • IP dinámica o varios usuarios: Método 2 (contraseña adicional).
  • Máxima seguridad: Método 3 (combinado).

Recuerda siempre:

  • Hacer copias de seguridad del .htaccess original.
  • Probar el acceso desde una IP de respaldo.
  • Mantener actualizadas las IPs permitidas si cambian.

Si usas Syspanel (puerto 2106), puedes acceder fácilmente al administrador de archivos para editar .htaccess y crear el .htpasswd. No dudes en contactar con soporte si tienes dudas.

[TIP FINAL]
Combina esta protección con un firewall de aplicación web (WAF) y contraseñas fuertes en WordPress. La seguridad nunca es demasiada.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel