Admin Shield: proteger el back office de PrestaShop 8 y 9
Instalar y configurar Admin Shield: límite de intentos, bloqueo por IP y país, captcha, enlace secreto, alertas, sesiones, registro de actividad e informe.
Admin Shield protege el acceso al back office de PrestaShop 8 y 9. El módulo se configura en Parámetros avanzados > Admin Shield, organizado en siete pestañas: Panel, Historial de accesos, Registro de actividad, Sesiones activas, Bloqueos y cierres, Ajustes y Acceso al back office.
Instalación
- En Módulos > Gestor de módulos, haga clic en Subir un módulo y envíe el archivo ZIP.
- La instalación vacía la caché de PrestaShop: todas las páginas del back office quedan protegidas desde la siguiente petición.
- El módulo concede a todos los perfiles de empleado el permiso de ver el módulo. Sin él, PrestaShop no ejecutaría sus hooks para esos empleados y sus acciones no se registrarían.
Primeros ajustes recomendados
- Pestaña Ajustes, bloque Direcciones IP: haga clic en Añadir mi IP actual a la lista blanca. Una IP de la lista blanca nunca se bloquea.
- Compruebe la línea IP de cliente detectada. Detrás de Cloudflare o de un proxy, mantenga el modo Automático o elija el adecuado.
- Configure la verificación antibot (ver más abajo) y pruebe las claves.
- Haga clic en Enviarme un correo de prueba para comprobar que los correos de la tienda salen.
- Pestaña Acceso al back office: renombre la carpeta admin si la lista de control la señala como fácil de adivinar.
Pruebe cada protección desde una ventana de navegación privada sin cerrar su sesión principal.
Límite de intentos de inicio de sesión
Por defecto, 5 fallos en una misma cuenta desde una misma IP, o 15 fallos desde una IP en todas las cuentas, en una ventana de 15 minutos, bloquean el acceso durante 15 minutos. Con el bloqueo progresivo, la duración se duplica en cada reincidencia en 24 horas, hasta 24 horas. Tras 3 bloqueos en 24 horas, la IP queda vetada 7 días. El bloqueo afecta al par IP y cuenta: un atacante no puede bloquear a un empleado legítimo que se conecta desde otra dirección. Las solicitudes de contraseña olvidada se limitan a 5 por IP y por hora.
La pestaña Bloqueos y cierres muestra los bloqueos activos, que puede liberar, y las IP vetadas, que puede eliminar. También puede vetar a mano una IP o un rango CIDR.
Direcciones IP y filtro por país
La lista blanca admite IP y rangos CIDR IPv4 e IPv6, uno por línea. La opción Permitir solo la lista blanca rechaza cualquier otra dirección; solo se guarda si su IP actual está en la lista.
El filtro por país funciona en modo permitir (solo los países elegidos) o bloquear. El país procede de la cabecera de Cloudflare cuando la petición llega realmente de sus servidores, y si no, de una base MMDB. Haga clic en Descargar la base DB-IP Lite para instalar la base de países gratuita, que conviene actualizar cada dos meses aproximadamente. Las direcciones de red local nunca se filtran, y el guardado se rechaza si bloquearía su propia conexión.
Los visitantes rechazados reciben una página 403, o una página 404 si prefiere ocultar la existencia del back office.
Verificación antibot: Turnstile o hCaptcha
- Cree un widget en dash.cloudflare.com (Turnstile) o dashboard.hcaptcha.com, autorizando el dominio de su back office.
- En Ajustes, elija el proveedor, pegue la clave del sitio y la clave secreta y guarde.
- Resuelva el widget de prueba y haga clic en Verificar y activar.
La verificación solo se aplica a la página de acceso tras esta prueba correcta: una clave errónea no puede bloquear a los administradores. Cualquier cambio de claves la desactiva hasta la siguiente prueba. Por defecto, los accesos pasan si el proveedor no responde.
Acceso al back office: enlace secreto y carpeta admin
Enlace de acceso secreto
Una vez activado, el back office solo se abre en un navegador que haya visitado el enlace secreto una vez; los demás reciben una página 404. El navegador que lo activa conserva el acceso, y el enlace se envía por correo a los destinatarios de las alertas. Generar un nuevo enlace invalida todos los navegadores salvo el suyo. Las IP de la lista blanca nunca necesitan el enlace.
Renombrar la carpeta admin
Se propone un nombre aleatorio. Antes del cambio, la nueva dirección se envía por correo; después se renombra la carpeta y se vacía la caché. Vuelva a iniciar sesión en la nueva dirección y actualice las tareas cron que apuntan a la carpeta anterior. Si el servidor web no puede renombrar la carpeta, hágalo por FTP y vacíe la caché en Parámetros avanzados > Rendimiento.
Alertas de inicio de sesión inusual
El primer inicio de sesión de cada empleado tras la instalación sirve de referencia. Después se envía una alerta para una nueva IP, un nuevo país, un nuevo navegador o sistema, o un acceso fuera del horario indicado (por ejemplo 07-21). Los destinatarios son el empleado, los superadministradores y las direcciones adicionales. El enlace No he sido yo del correo, válido 7 días, veta la IP, cierra las sesiones del empleado e invalida su contraseña; el empleado elige otra con ¿Olvidó su contraseña?
El campo webhook publica también estas alertas, los bloqueos y los cambios sensibles en Slack, Microsoft Teams, Discord, Google Chat o Mattermost.
Sesiones activas e inactividad
La pestaña Sesiones activas muestra las sesiones abiertas con la IP, el país y el dispositivo del acceso. Puede cerrar una sesión, cerrar todas sus demás sesiones o desconectar a un empleado en todas partes. El ajuste Cerrar sesión tras inactividad cierra las sesiones inactivas más allá del plazo elegido; las actualizaciones automáticas del back office no cuentan como actividad.
Registro de actividad
Cada creación, modificación y eliminación hecha en el back office se registra con el empleado, la IP, la página y, en una modificación, el valor anterior y el nuevo de cada campo. Las contraseñas y los tokens se ocultan. También se registran las instalaciones, desinstalaciones y actualizaciones de módulos. Los cambios de empleados, perfiles, claves API, URL de tienda y las instalaciones de módulos se marcan como sensibles y se envían por correo a los administradores. Filtre por empleado, acción u objeto y exporte en CSV. Añada en Ajustes las clases de objetos que no deben registrarse.
Informe de seguridad
El informe se envía cada semana o cada mes a los superadministradores y a las direcciones adicionales. Para un envío fiable, llame una vez al día a la URL de cron mostrada en Ajustes. Sin cron, el informe sale en la siguiente visita al back office una vez vencido el plazo. El botón Enviarme el informe ahora sirve de vista previa.
Acceso de emergencia
Si queda bloqueado, cree por FTP un archivo vacío llamado disable.flag en modules/dfadminshield/: todas las protecciones se detienen hasta que se elimine. No borre la carpeta del módulo, el contenedor Symfony de PrestaShop la referencia. El valor DFAS_KEY de la tabla configuration contiene la clave del enlace secreto.
Autenticación de dos factores
Admin Shield protege la página de acceso y vigila los accesos, sin pedir un código tras la contraseña. Para añadir ese paso, instale también el módulo 2FA Google Authenticator de DataFirefly: ambos funcionan juntos.