Proteger el directorio /admin de PrestaShop con contraseña
¿Por qué proteger el directorio /admin de PrestaShop?
El directorio /admin de PrestaShop es la puerta de entrada al panel de control de tu tienda online. Si un atacante consigue acceder a él, podría robar datos de clientes, modificar precios, instalar malware o incluso secuestrar tu tienda por completo.
Por defecto, PrestaShop ya incluye una capa de seguridad: el acceso mediante usuario y contraseña. Sin embargo, esta protección no es suficiente. Los ataques de fuerza bruta, donde un bot prueba miles de combinaciones por minuto, pueden llegar a vulnerar contraseñas débiles. Además, la URL del directorio admin suele ser predecible (ej: /admin123 o /admin), lo que facilita que los atacantes la localicen.
Proteger el directorio /admin con una contraseña adicional a nivel de servidor es como poner un segundo candado a una puerta blindada. Aunque un ciberdelincuente consiga la contraseña de tu panel, todavía necesitaría superar esta barrera extra. Esta medida, conocida como autenticación HTTP, es sencilla de implementar y aporta una capa de defensa fundamental para cualquier tienda PrestaShop.
¿Qué es la autenticación HTTP y cómo funciona?
La autenticación HTTP es un mecanismo a nivel de servidor que exige un usuario y contraseña antes de cargar cualquier archivo de un directorio específico. Cuando alguien intenta acceder a tu /admin, el servidor muestra un cuadro de diálogo del navegador pidiendo credenciales. Sin ellas, el acceso se deniega por completo.
Esta protección es independiente de la que ofrece PrestaShop. Funciona antes de que se ejecute cualquier código PHP, por lo que es extremadamente robusta. Puedes tener la contraseña más débil del mundo en tu panel de PrestaShop, pero si el atacante no supera esta primera barrera, no podrá llegar a intentar entrar.
La implementación requiere dos archivos:
.htpasswd: Almacena las credenciales cifradas (usuario y contraseña)..htaccess: Indica al servidor qué directorio proteger y dónde encontrar el archivo de contraseñas.
A continuación te explico paso a paso cómo configurarlo en los entornos más comunes.
Método 1: Proteger /admin desde el panel de control (Syspanel)
Si tu hosting utiliza el panel Syspanel (accesible a través del puerto 2106), el proceso es muy visual y no necesitas conocimientos técnicos avanzados. Este método es el más recomendado para usuarios principiantes.
Paso 1: Accede a Syspanel
Abre tu navegador y escribe la dirección de tu servidor seguida de :2106. Por ejemplo:
https://tu-dominio.com:2106
Inicia sesión con tus credenciales de administrador del hosting.
Paso 2: Localiza la opción de protección de directorios
Dentro de Syspanel, busca la sección de "Archivos" o "Seguridad". Dependiendo de la versión, puede aparecer como:
- Protección de directorios
- Password Protect Directories
- Autenticación HTTP
Haz clic en esa opción.
Paso 3: Selecciona el directorio admin
El panel te mostrará la estructura de carpetas de tu sitio web. Navega hasta la raíz de tu instalación de PrestaShop y localiza la carpeta que corresponde a tu directorio admin. Si no la has renombrado, probablemente se llame admin o admin123.
Selecciona esa carpeta y haz clic en "Proteger" o "Activar".
Paso 4: Configura usuario y contraseña
El sistema te pedirá que crees un usuario y una contraseña. Te recomendamos:
- Usar un nombre de usuario que no sea "admin" ni "administrador".
- Crear una contraseña larga (mínimo 12 caracteres) con mayúsculas, minúsculas, números y símbolos.
- Anotar estas credenciales en un gestor de contraseñas, porque no podrás recuperarlas si las olvidas.
Paso 5: Guarda los cambios
Confirma la operación y Syspanel generará automáticamente los archivos .htaccess y .htpasswd necesarios. A partir de este momento, cualquier intento de acceso a tu directorio /admin mostrará un cuadro de autenticación.
[TIP] Si tu hosting usa Syspanel, este es el método más seguro y limpio, ya que el propio panel gestiona los permisos de los archivos correctamente y evita errores de configuración.
Método 2: Configuración manual mediante archivos .htaccess
Si no tienes acceso a Syspanel o prefieres control total, puedes crear los archivos manualmente. Este método es compatible con la mayoría de servidores Apache.
Paso 1: Genera el archivo .htpasswd
Necesitas crear un archivo llamado .htpasswd que contenga el usuario y la contraseña cifrada. Puedes generarlo con herramientas online o mediante la terminal de tu servidor.
Si tienes acceso SSH, ejecuta:
htpasswd -c /ruta/absoluta/al/.htpasswd usuario_elegido
El sistema te pedirá la contraseña y generará una línea con el formato usuario:hash_cifrado.
Si no tienes SSH, usa un generador online de htpasswd. Asegúrate de que la herramienta sea de confianza y no almacene los datos.
Paso 2: Sube el archivo .htpasswd
Sube el archivo .htpasswd a una ubicación segura. Lo ideal es colocarlo fuera del directorio público de tu web (por ejemplo, en /home/usuario/ en lugar de /public_html/). Si no es posible, puedes guardarlo en la raíz de tu PrestaShop, pero asegúrate de que no sea accesible desde el navegador.
Paso 3: Modifica el archivo .htaccess del directorio admin
Dentro de la carpeta de tu directorio admin, debe existir un archivo .htaccess. Si no lo encuentras, créalo con un editor de texto plano.
Añade el siguiente contenido:
AuthType Basic
AuthName "Acceso restringido"
AuthUserFile /ruta/absoluta/al/.htpasswd
Require valid-user
Es muy importante que la ruta en AuthUserFile sea la ruta absoluta en el servidor, no la URL. Por ejemplo: /home/usuario/.htpasswd.
Paso 4: Guarda y prueba
Guarda el archivo .htaccess y súbelo al directorio admin si lo has creado localmente. Ahora intenta acceder a tu panel de PrestaShop desde el navegador. Deberías ver el cuadro de autenticación.
[WARNING] Si introduces mal la ruta en AuthUserFile, el servidor mostrará un error 500. Verifica siempre las rutas absolutas con tu proveedor de hosting antes de guardar.
Método 3: Protección adicional con IP (opcional pero recomendado)
Si además de la contraseña quieres restringir el acceso solo desde ciertas IPs (por ejemplo, tu IP de oficina o casa), puedes combinar ambos métodos. Esto es especialmente útil si eres la única persona que administra la tienda.
En el .htaccess de tu directorio admin, añade:
AuthType Basic
AuthName "Acceso restringido"
AuthUserFile /ruta/absoluta/al/.htpasswd
Require valid-user
Require ip 123.456.789.000
Reemplaza 123.456.789.000 con tu dirección IP real. Puedes conocer tu IP pública buscando "cuál es mi IP" en Google.
[WARNING] Si tu IP cambia con frecuencia (IP dinámica), este método te dejará fuera de tu propia tienda. Úsalo solo si tienes IP fija o una VPN.
Buenas prácticas adicionales para asegurar /admin
Proteger con contraseña es un gran paso, pero no el único. Combina esta medida con las siguientes recomendaciones:
Renombra el directorio admin
PrestaShop permite cambiar el nombre del directorio admin durante la instalación o desde el archivo parameters.php. Si aún usas el nombre por defecto, cámbialo. Esto dificulta que los bots encuentren tu panel.
Usa contraseñas robustas en PrestaShop
La contraseña de tu usuario administrador en PrestaShop debe ser única y compleja. No la reutilices en otros sitios. Activa la autenticación de dos factores (2FA) si tu versión de PrestaShop lo permite.
Mantén PrestaShop actualizado
Cada versión nueva incluye parches de seguridad. Las versiones antiguas son las más atacadas. Configura las actualizaciones automáticas si es posible.
Limita los intentos de acceso
Puedes instalar módulos de seguridad que bloqueen la IP después de varios intentos fallidos de inicio de sesión en el panel. Esto complementa la protección HTTP.
Revisa los logs del servidor
Periódicamente, revisa los archivos de registro de acceso al servidor. Busca patrones de intentos de acceso al directorio admin desde IPs desconocidas. Syspanel suele ofrecer visores de logs integrados.
Preguntas frecuentes (FAQ)
¿Puedo usar la misma contraseña que en el panel de PrestaShop?
No. La contraseña HTTP debe ser diferente a la de tu usuario de PrestaShop. Si un atacante descubre una, no tendrá acceso a la otra.
¿Esta protección afecta al rendimiento de mi tienda?
No. La verificación HTTP es extremadamente rápida y solo se activa cuando se accede al directorio admin. No afecta al rendimiento de la tienda pública.
¿Qué pasa si olvido la contraseña HTTP?
Si olvidas las credenciales, tendrás que acceder al servidor por FTP o SSH y eliminar o modificar el archivo .htaccess para desactivar la protección. Luego podrás crear nuevas contraseñas.
¿Funciona esta protección en servidores Nginx?
El método con .htaccess es específico de Apache. En Nginx, la configuración se realiza en el archivo de configuración del servidor con directivas auth_basic y auth_basic_user_file. Consulta con tu proveedor de hosting o con Syspanel si no sabes qué servidor usas.
¿Debo proteger también otros directorios sensibles?
Sí. Además del directorio admin, es recomendable proteger directorios como /var/logs, /cache o /app/config si tu hosting lo permite. Sin embargo, estos suelen estar protegidos por defecto en PrestaShop.
Conclusión
Proteger el directorio /admin de PrestaShop con una contraseña adicional es una de las medidas de seguridad más efectivas y sencillas de implementar. Tanto si usas Syspanel como si configuras los archivos manualmente, el esfuerzo es mínimo comparado con la tranquilidad que aporta.
Esta capa extra de protección disuade a la mayoría de atacantes automatizados, que buscan objetivos fáciles. Si además combinas esta medida con las buenas prácticas mencionadas (renombrar el directorio, contraseñas robustas y actualizaciones), tu tienda estará muy bien protegida contra accesos no autorizados.
No esperes a ser víctima de un ataque para actuar. Dedica 15 minutos hoy a implementar esta protección y duerme tranquilo sabiendo que tu negocio online está más seguro.
