Login Security
Mejora la seguridad del formulario de inicio de sesión de Drupal detectando ataques de fuerza bruta e implementando protecciones de bloqueo configurables para usuarios y direcciones IP.
login_security
Install
composer require 'drupal/login_security:^2.0'
Overview
Login Security mejora las opciones de seguridad en la operación de inicio de sesión de un sitio Drupal. Por defecto, Drupal solo tiene un control de acceso básico que deniega el acceso de IP al contenido completo del sitio. Este módulo permite a los administradores agregar múltiples capas de características de control de acceso a los formularios de inicio de sesión (formulario de inicio de sesión predeterminado en /user y el bloque de formulario de inicio de sesión).
El módulo rastrea los intentos de inicio de sesión fallidos y puede tomar varias acciones protectoras basadas en umbrales configurables: bloquear temporalmente los envíos de formulario (bloqueo suave), bloquear permanentemente direcciones IP usando el módulo Ban (bloqueo duro), bloquear cuentas de usuario y detectar ataques de adivinación de contraseñas en curso con notificaciones por correo electrónico.
Todas las protecciones operan dentro de una ventana de tiempo configurable (tiempo de seguimiento), y los administradores pueden personalizar todos los mensajes orientados al usuario con marcadores de posición dinámicos para notificaciones personalizadas.
Features
- Detección de ataques en curso con umbrales configurables y notificaciones por correo electrónico a los administradores cuando se detecta actividad de inicio de sesión sospechosa
- Bloqueo suave de IP que previene temporalmente el envío del formulario de inicio de sesión mientras permite la navegación del sitio, expirando automáticamente después de la ventana de tiempo de seguimiento
- Bloqueo duro de IP que prohíbe permanentemente las direcciones IP de todo el sitio usando el módulo Ban del núcleo de Drupal, requiriendo eliminación manual
- Bloqueo de cuenta de usuario después de intentos de inicio de sesión fallidos configurables, previniendo el inicio de sesión independientemente de la dirección IP de origen
- Mensajes personalizables con marcadores de posición dinámicos (nombre de usuario, IP, nombre del sitio, conteos de intentos, etc.) para todos los escenarios de bloqueo y notificaciones
- Visualización de marcas de tiempo del último inicio de sesión y último acceso a usuarios autenticados tras un inicio de sesión exitoso
- Notificación de intentos de inicio de sesión restantes a usuarios antes del bloqueo de cuenta
- Opción para deshabilitar los mensajes de error de inicio de sesión del núcleo para prevenir la divulgación de información a atacantes
- Base de datos de seguimiento de eventos que almacena todos los intentos de inicio de sesión con limpieza automática vía cron
- Botón para limpiar el seguimiento de eventos para restablecer manualmente todos los intentos de inicio de sesión rastreados
- Notificaciones por correo electrónico con asunto y cuerpo personalizables tanto para eventos de bloqueo de usuario como para detección de ataques en curso
- Soporte de migración desde Drupal 7 incluyendo configuraciones y datos de seguimiento
Use Cases
Protección contra ataques de fuerza bruta
Configurar el módulo con: Tiempo de seguimiento = 60 minutos, Bloqueo de usuario = 5 intentos, Bloqueo suave de host = 10 intentos, Bloqueo duro de host = 15 intentos, Detección de ataques = 50 intentos. Esta configuración bloqueará cuentas de usuario individuales después de 5 intentos fallidos desde cualquier IP, bloqueará temporalmente IPs después de 10 intentos fallidos, prohibirá permanentemente IPs después de 15 intentos fallidos, y alertará a los administradores cuando se detecten más de 50 intentos fallidos dentro de una hora.
Entorno de alta seguridad con alertas por correo electrónico
Para sitios sensibles, configurar umbrales bajos: Bloqueo de usuario = 3 intentos, Bloqueo suave de host = 5 intentos, Bloqueo duro de host = 8 intentos, Detección de ataques = 20 intentos. Configurar correos electrónicos de notificación tanto para bloqueo de usuarios como para detección de ataques. Habilitar 'Deshabilitar mensaje de error de inicio de sesión del núcleo' para prevenir ataques de enumeración de nombres de usuario. Esta configuración proporciona protección agresiva y conocimiento inmediato de cualquier actividad sospechosa.
Sitio comunitario público con configuración permisiva
Para sitios donde bloquear usuarios legítimos es una preocupación: Establecer Bloqueo de usuario = 0 (deshabilitado) para prevenir que los atacantes bloqueen a usuarios reales. Usar Bloqueo suave de host = 20 intentos y Bloqueo duro de host = 50 intentos. Habilitar 'Notificar al usuario sobre intentos restantes' para que los usuarios legítimos sepan que se acercan a los límites. Esto equilibra seguridad con usabilidad en sitios públicos de alto tráfico.
Migración desde Drupal 7
Al actualizar desde Drupal 7, el módulo proporciona rutas de migración tanto para configuraciones como para datos de seguimiento. Usar drush migrate:import d7_login_security_settings para importar tu configuración de D7 y drush migrate:import d7_login_security_track para importar datos de seguimiento existentes. La migración convierte automáticamente las notificaciones por correo electrónico basadas en nombre de usuario a configuraciones basadas en direcciones de correo electrónico.
Cumplimiento con auditorías de seguridad
Habilitar 'Mostrar marca de tiempo del último inicio de sesión' y 'Mostrar marca de tiempo del último acceso' para ayudar a los usuarios a identificar acceso no autorizado a sus cuentas. Configurar la detección de ataques con notificaciones por correo electrónico para mantener registros de auditoría. Los registros de watchdog creados por el módulo (bajo el tipo 'login_security') proporcionan registros detallados para auditorías de seguridad.
Tips
- Establecer track_time apropiadamente para sus necesidades de seguridad - tiempos más cortos (60 minutos) son más permisivos, tiempos más largos (1440 minutos / 24 horas) son más estrictos
- Siempre configurar correos electrónicos de notificación para la detección de ataques para estar inmediatamente al tanto de las amenazas de seguridad
- Usar los registros de watchdog (Informes > Mensajes de registro recientes, filtrar por 'login_security') para monitorear eventos de bloqueo y patrones de ataque
- Considerar habilitar 'Deshabilitar mensaje de error de inicio de sesión del núcleo' para prevenir ataques de enumeración de nombres de usuario, especialmente en sitios de alta seguridad
- El usuario uid 1 nunca es bloqueado por la función de bloqueo de usuarios - usar protecciones de bloqueo de host para seguridad adicional
- Probar su configuración activando bloqueos intencionalmente para verificar que las notificaciones por correo electrónico funcionen correctamente
- El botón 'Limpiar información de seguimiento de eventos' es útil después de cambiar configuraciones o resolver una situación de bloqueo
- Los tokens de mensaje como @username, @ip, @site permiten mensajes personalizados - revisar los tokens disponibles en el formulario de configuración
Technical Details
Admin Pages 1
/admin/config/people/login_security
Configurar los ajustes de seguridad de inicio de sesión incluyendo umbrales de bloqueo, opciones de notificación y mensajes personalizables para varios escenarios de bloqueo. Esta página permite a los administradores configurar protección multicapa contra ataques de fuerza bruta de inicio de sesión.
Hooks 1
hook_login_security_display_block_attempts_alter
Permite a los módulos alterar la visualización del mensaje de intentos de inicio de sesión restantes y si mostrarlo o no.
Troubleshooting 6
Aumentar el umbral user_wrong_count o establecerlo en 0 para deshabilitar el bloqueo de usuarios. Considerar usar solo bloqueo suave y duro de host que apuntan a direcciones IP en lugar de cuentas de usuario.
Los bloqueos suaves expiran basándose en la configuración track_time. Verificar que el valor de track_time (en minutos) esté establecido apropiadamente. Ejecutar cron para asegurar que los eventos expirados se limpien. También puede limpiar manualmente todos los datos de seguimiento usando el botón 'Limpiar información de seguimiento de eventos' en la página de configuración.
Los bloqueos duros son permanentes y se almacenan en la tabla ban_ip. Desbloquear IPs en Administración > Configuración > Personas > Prohibiciones de direcciones IP (/admin/config/people/ban).
Verificar que las direcciones de correo electrónico en la configuración de notificaciones sean correctas. Comprobar que el sistema de correo electrónico del sitio esté funcionando (probar con otros correos). Asegurarse de que los valores de umbral estén establecidos (no sean cero) y que se haya alcanzado el umbral configurado.
Esto es por diseño. La cuenta de superadministrador (uid 1) está intencionalmente excluida de la protección de bloqueo de usuarios porque es comúnmente atacada y fácilmente descubierta. Usar una combinación de otras protecciones (bloqueo suave/duro de host) para proteger contra ataques dirigidos al uid 1.
El módulo mantiene un estado para prevenir notificaciones repetidas. Una alerta de ataque se restablece cuando los eventos rastreados caen por debajo de 1/3 del umbral. Si desea restablecer esto manualmente, limpie la variable de estado o use el botón 'Limpiar información de seguimiento de eventos'.
Security Notes 8
- El usuario uid 1 (superadministrador) intencionalmente nunca es bloqueado por la función de bloqueo de usuarios. Esto es porque el uid 1 es fácilmente descubierto (a menudo llamado 'admin') y podría ser bloqueado trivialmente. Confiar en el bloqueo de host para protección adicional.
- Los bloqueos suaves solo previenen el envío del formulario de inicio de sesión - los usuarios aún pueden navegar el sitio de forma anónima. Usar bloqueo duro para denegación completa de acceso.
- Los bloqueos duros usan el módulo Ban y son permanentes hasta que un administrador los elimine manualmente.
- Deshabilitar los mensajes de error de inicio de sesión del núcleo mejora la seguridad al prevenir la enumeración de nombres de usuario pero puede confundir a usuarios legítimos.
- El mensaje de notificación sobre intentos restantes puede revelar inadvertidamente su política de seguridad a los atacantes - configurar este mensaje cuidadosamente.
- Las notificaciones por correo electrónico solo funcionan si las direcciones de correo electrónico están configuradas y el sistema de correo del sitio es funcional.
- Los datos de seguimiento de eventos se almacenan en la base de datos - considerar las implicaciones de privacidad y políticas de retención para cumplimiento con GDPR.
- Los IDs de sesión no se consideran en las operaciones de seguridad porque las herramientas automatizadas de fuerza bruta típicamente solicitan nuevas sesiones en cada intento.