Cómo proteger el directorio /admin en PrestaShop con contraseña
¿Por qué es importante proteger el directorio /admin de PrestaShop?
PrestaShop es una de las plataformas de comercio electrónico más populares del mundo, y precisamente por eso, los ciberdelincuentes la tienen en el punto de mira. El panel de administración, al que normalmente se accede a través de la URL tudominio.com/admin, es la puerta de entrada a todo tu negocio online: pedidos, clientes, pagos, configuración de envíos y datos sensibles.
Si un atacante logra acceder a tu panel de administración, podría robar información de tus clientes, modificar precios, instalar malware o incluso secuestrar tu tienda por completo. Por eso, proteger admin PrestaShop no es una opción, es una necesidad.
Una de las medidas más efectivas y sencillas de implementar es añadir una contraseña a nivel de servidor al directorio /admin. Esto significa que, antes de que el navegador siquiera cargue la página de login de PrestaShop, el servidor pedirá unas credenciales adicionales. Es una capa extra de seguridad que actúa como un "portero" virtual.
En este artículo, te explicaré paso a paso cómo hacerlo, incluso si no eres un experto en tecnología. Hablaremos de métodos con archivos .htaccess, directivas de servidor y alternativas como la protección a través de tu panel de control de hosting. También resolveremos dudas frecuentes sobre seguridad PrestaShop y la protección de la carpeta admin.
Antes de empezar: prepara tu entorno de trabajo
Vamos a necesitar acceso a dos cosas:
- Tu panel de control de hosting (cPanel, Plesk, o un panel personalizado como Syspanel). Si tu hosting usa Syspanel, recuerda que el puerto de acceso es el 2106.
- Un gestor de archivos o un cliente FTP (como FileZilla). Esto nos permitirá ver y editar los archivos de tu instalación de PrestaShop.
[WARNING] Haz una copia de seguridad completa de tu tienda y de la base de datos antes de realizar cualquier cambio. Aunque estos métodos son seguros, es mejor prevenir que lamentar.
Método 1: Proteger el directorio /admin con contraseña usando .htaccess
Este es el método más universal y funciona en la gran mayoría de servidores Apache. El archivo .htaccess es un archivo de configuración que permite modificar el comportamiento del servidor en un directorio específico.
Paso 1: Crea un archivo .htpasswd
El archivo .htpasswd es donde se almacenan los nombres de usuario y las contraseñas cifradas. Lo colocaremos en un lugar seguro, fuera de la carpeta pública de tu web (por ejemplo, en el directorio raíz de tu cuenta de hosting, /home/tuusuario/).
Necesitas generar un hash de tu contraseña. Puedes usar herramientas online como "htpasswd generator", pero te recomiendo hacerlo desde la terminal de tu hosting o con un pequeño script. Si no sabes cómo, no te preocupes, aquí tienes una forma sencilla:
- Crea un archivo de texto llamado
htpasswd.txt(sin el.al principio por ahora). - Dentro, escribe el usuario y el hash de la contraseña con el formato
usuario:hash.
Para generar el hash, puedes usar la herramienta online de htaccesstools.com. Introduce tu usuario y contraseña, y te dará la línea completa. Cópiala y pégala en tu archivo.
[TIP] Elige un usuario que no sea "admin" y una contraseña larga y compleja, combinando mayúsculas, minúsculas, números y símbolos. Cuanto más difícil de adivinar, mejor.
Paso 2: Sube el archivo .htpasswd a tu servidor
Usando tu cliente FTP o el gestor de archivos de tu hosting, sube el archivo htpasswd.txt a una carpeta que esté fuera de public_html (o www). Por ejemplo, en la raíz de tu cuenta.
Luego, renómbralo a .htpasswd. El punto al principio lo convierte en un archivo oculto, lo que añade una capa extra de discreción.
Paso 3: Crea o modifica el archivo .htaccess en tu carpeta /admin
Ahora, necesitamos decirle al servidor que proteja la carpeta de administración. Accede a tu carpeta /admin (la que tienes en public_html). Deberías ver un archivo llamado .htaccess. Si no existe, créalo. Si existe, ábrelo con un editor de texto.
Añade o modifica el contenido con el siguiente bloque:
<Files "*.tpl">
Require all denied
</Files>
AuthType Basic
AuthName "Acceso restringido"
AuthUserFile /ruta/completa/al/archivo/.htpasswd
Require valid-user
Es crucial que cambies /ruta/completa/al/archivo/.htpasswd por la ruta absoluta real donde subiste tu archivo. Si no la conoces, puedes encontrarla en la configuración de tu hosting o usando un script PHP para mostrarla. Por ejemplo, si tu usuario se llama usuario y subiste el archivo a la raíz, la ruta podría ser /home/usuario/.htpasswd.
[INFO] Si tu servidor usa Apache 2.2 o inferior, las directivas
Requiredeben ser reemplazadas porAllow from allyvalid-user. Pero la mayoría de servidores modernos usan Apache 2.4+, así que esto debería funcionar.
Paso 4: Guarda y prueba
Guarda el archivo .htaccess y sube los cambios si usas FTP. Ahora, intenta acceder a tudominio.com/admin. Deberías ver una ventana emergente pidiendo usuario y contraseña. ¡Felicidades, ya has añadido una capa de seguridad muy importante!
Método 2: Usar la protección de directorio de tu panel de control (cPanel / Plesk / Syspanel)
La mayoría de los paneles de control de hosting ofrecen una función gráfica para proteger directorios. Es la forma más fácil si no te sientes cómodo editando archivos manualmente.
cPanel
- Entra a tu cPanel.
- Busca la sección "Seguridad" y haz clic en "Protección con contraseña de directorios".
- Navega hasta la carpeta
public_htmly luego entra en tu carpetaadmin. - Marca la casilla "Proteger este directorio" y dale un nombre (por ejemplo, "Admin PrestaShop").
- Crea un usuario y una contraseña. cPanel generará automáticamente el archivo
.htpasswdy modificará el.htaccesspor ti. - Guarda los cambios.
Plesk
- Entra a Plesk.
- Ve a "Sitios web y dominios" y selecciona tu dominio.
- Busca la sección "Protección por contraseña" o "Seguridad".
- Añade una nueva regla para la carpeta
/admin. - Crea un usuario y una contraseña.
Syspanel (puerto 2106)
Si tu hosting utiliza Syspanel, el proceso es igual de intuitivo. Accede a través de tu-ip:2106 o tu-dominio:2106, inicia sesión y busca la opción de "Protección de directorios" o "Seguridad". Sigue los pasos que se te indiquen en pantalla para proteger tu carpeta /admin.
[TIP] Este método es el más recomendado para principiantes, ya que te evita errores de sintaxis en el archivo
.htaccess.
Método 3: Proteger el directorio /admin mediante la configuración del servidor (Nginx)
Si tu tienda PrestaShop se sirve con Nginx en lugar de Apache, el método .htaccess no funcionará. Necesitas modificar la configuración del servidor virtual. Esto es un poco más técnico, pero no imposible.
Accede a tu servidor por SSH y localiza el archivo de configuración de tu sitio (normalmente en /etc/nginx/sites-available/tudominio.com).
Dentro del bloque server, añade una nueva ubicación para la carpeta /admin:
location /admin {
auth_basic "Acceso restringido";
auth_basic_user_file /etc/nginx/.htpasswd;
try_files $uri $uri/ /index.php?$args;
}
Necesitarás crear el archivo .htpasswd en /etc/nginx/ (o la ruta que prefieras) con el mismo formato que en el método 1. Después, recarga Nginx con sudo nginx -s reload.
[WARNING] Si no tienes experiencia con Nginx, te recomiendo que pidas ayuda a tu proveedor de hosting o a un administrador de sistemas. Un error en la configuración puede dejar tu tienda inaccesible.
Consejos adicionales para maximizar la seguridad de tu PrestaShop
Proteger la carpeta /admin es solo el primer paso. Para una seguridad PrestaShop robusta, considera lo siguiente:
- Cambia la URL de tu panel de administración: PrestaShop te permite cambiar la carpeta
adminpor otra más difícil de adivinar. Ve a Parámetros Avanzados > Administración y cambia el nombre de la carpeta. - Usa autenticación de dos factores (2FA): Activa esta opción en tu panel de administración. Aunque alguien obtenga tu contraseña, necesitará un código adicional que se envía a tu teléfono.
- Mantén PrestaShop actualizado: Las actualizaciones corrigen vulnerabilidades de seguridad conocidas.
- Utiliza contraseñas únicas y robustas: Tanto para tu cuenta de administrador como para la base de datos.
- Limita los intentos de inicio de sesión: Instala un módulo de seguridad que bloquee la cuenta tras varios intentos fallidos.
- Revisa los permisos de los archivos: Los archivos deben tener permisos
644y las carpetas755. Nunca uses777.
Preguntas frecuentes (FAQ) sobre cómo proteger la carpeta admin
¿Qué hago si olvido la contraseña del directorio /admin?
No hay problema. Simplemente accede a tu hosting, elimina o renombra el archivo .htaccess dentro de la carpeta admin (o elimina la regla de protección desde el panel de control). Después, podrás acceder de nuevo y repetir el proceso con una nueva contraseña.
¿Puedo usar la misma contraseña que para mi cuenta de administrador de PrestaShop?
No es recomendable. Utiliza una contraseña diferente y única para la capa del servidor. Así, si una se ve comprometida, la otra sigue siendo segura.
¿Este método protege contra ataques de fuerza bruta?
Añade una capa extra, pero no es infalible. Un atacante podría intentar adivinar la contraseña de la capa del servidor. Por eso es crucial usar una contraseña larga y compleja. Combínalo con un módulo de limitación de intentos para una protección más completa.
¿Qué es mejor, .htaccess o la protección del panel de control?
Para la mayoría de usuarios, la protección desde el panel de control es más fácil y menos propensa a errores. El método .htaccess es útil si tu hosting no ofrece esa función o si quieres tener un control más granular.
¿Afecta esto al rendimiento de mi tienda?
No, el impacto en el rendimiento es mínimo y apenas perceptible. La comprobación de credenciales es una operación muy rápida para el servidor.
¿Necesito proteger también el directorio /download o /upload?
No es estrictamente necesario. La prioridad es proteger el panel de administración. Sin embargo, puedes aplicar la misma técnica a otras carpetas sensibles si lo deseas, como /var/logs o /config.
¿Qué pasa con los usuarios de Syspanel?
Si tu hosting usa Syspanel, el proceso es tan sencillo como en cPanel o Plesk. Recuerda que el acceso a Syspanel se realiza a través del puerto 2106 (por ejemplo, https://tu-dominio.com:2106). Busca la sección de "Seguridad" o "Protección de directorios" dentro de Syspanel y sigue las instrucciones.
Conclusión: refuerza tu primera línea de defensa
Proteger el directorio /admin de PrestaShop con una contraseña adicional es una de las medidas de seguridad más rentables y fáciles de implementar. No requiere conocimientos avanzados y te da una tranquilidad enorme saber que has añadido una barrera más entre los ciberdelincuentes y tu negocio.
Este pequeño paso, junto con otras buenas prácticas como mantener todo actualizado y usar contraseñas fuertes, puede marcar la diferencia entre una tienda segura y un dolor de cabeza. Empieza hoy mismo, dedica unos minutos a hacerlo y duerme más tranquilo sabiendo que tu tienda está mejor protegida.
[INFO] Si en algún momento del proceso te sientes perdido, no dudes en contactar con el soporte técnico de tu proveedor de hosting. Ellos podrán guiarte o incluso hacerlo por ti. La seguridad de tu tienda es una inversión que vale la pena.
