Autenticación de Dos Factores (TFA)
Proveedor conectable de autenticación de segundo factor para Drupal que mejora la seguridad de las cuentas al requerir un paso de verificación adicional durante el inicio de sesión.
tfa
Install
composer require 'drupal/tfa:8.x-1.12'
Overview
El módulo Two-factor Authentication (TFA) es una mejora integral de seguridad para Drupal que añade una capa adicional de protección a las cuentas de usuario. Proporciona interfaces flexibles y bien probadas para permitir la integración perfecta de diversas soluciones de autenticación de dos factores.
El módulo admite múltiples métodos de autenticación, incluyendo contraseñas de un solo uso basadas en tiempo (TOTP), contraseñas de un solo uso basadas en HMAC (HOTP), códigos de recuperación y funcionalidad de navegador de confianza. TFA utiliza una arquitectura basada en plugins que permite una fácil extensión a través de módulos adicionales.
Todos los datos sensibles se cifran utilizando el módulo Encrypt, garantizando el almacenamiento seguro de los secretos de autenticación. El módulo incluye protección de control de flood contra ataques de fuerza bruta, notificaciones por correo electrónico cuando se activa/desactiva TFA, e integración con Views para que los administradores puedan ver qué usuarios tienen TFA habilitado.
Features
- Validación TOTP (contraseña de un solo uso basada en tiempo) compatible con aplicaciones como Google Authenticator, Microsoft Authenticator, Authy y FreeOTP
- Validación HOTP (contraseña de un solo uso basada en HMAC) utilizando códigos basados en contador
- Generación de códigos de recuperación para la recuperación de cuentas cuando el dispositivo de autenticación principal no está disponible
- Funcionalidad de navegador de confianza para omitir la verificación TFA en dispositivos de confianza durante un período configurable
- Arquitectura basada en plugins que permite métodos TFA personalizados a través de módulos contribuidos o personalizados
- Protección de control de flood que limita los intentos de validación fallidos para prevenir ataques de fuerza bruta
- Notificaciones por correo electrónico enviadas cuando los usuarios activan o desactivan TFA en sus cuentas
- Integración de campo con Views que muestra el estado de TFA para usuarios en listados administrativos
- Requisitos de TFA por rol que obligan a roles de usuario específicos a configurar TFA
- Función de omisión de validación que permite a los usuarios un número limitado de inicios de sesión antes de requerir la configuración de TFA
- Generación de códigos QR para una fácil configuración de la aplicación de autenticación
- Comandos Drush para restablecer datos TFA de usuarios y saneamiento de base de datos
- Soporte de API REST para validación TFA en aplicaciones headless
Use Cases
Asegurar cuentas de administrador
Requiere que todos los usuarios con el rol Administrator configuren TFA antes de acceder al sitio. Configure TFA en /admin/config/people/tfa, seleccione el rol Administrator en 'Roles required to set up TFA' y asegúrese de que los administradores tengan el permiso 'setup own tfa'. Los administradores recibirán un aviso para configurar TFA en su próximo inicio de sesión.
TFA opcional para usuarios regulares
Permite a los usuarios habilitar TFA opcionalmente sin requerirlo. Otorgue el permiso 'setup own tfa' al rol Authenticated. Los usuarios pueden entonces acceder a la pestaña TFA de su cuenta (/user/{uid}/security/tfa) para configurar la autenticación TOTP o códigos de recuperación a su discreción.
Autenticación headless/desacoplada con TFA
Use TFA con autenticación REST API en arquitecturas Drupal desacopladas. El módulo soporta autenticación a través de REST permitiendo que los plugins de validación implementen el método validateRequest(). Configure los proveedores de autenticación exentos en los parámetros de tfa.services.yml si es necesario.
Recuperación ante pérdida del dispositivo de autenticación
Los usuarios que pierden acceso a su aplicación de autenticación pueden usar códigos de recuperación para iniciar sesión. Asegúrese de que el plugin de validación Recovery Code esté habilitado en la configuración de TFA. Los usuarios deben generar y almacenar de forma segura los códigos de recuperación desde su página de resumen de TFA antes de perder el acceso al dispositivo.
Dispositivos de confianza para usuarios frecuentes
Reduce la fricción para usuarios que inician sesión frecuentemente desde el mismo dispositivo. Habilite el plugin de inicio de sesión Trusted Browser en la configuración de TFA. Los usuarios pueden marcar su navegador como de confianza durante la verificación TFA, omitiendo las comprobaciones TFA posteriores durante el período configurado (30 días por defecto).
Gestionar TFA para otros usuarios
Permite al personal de soporte técnico restablecer TFA para usuarios que están bloqueados. Otorgue el permiso 'administer tfa for other users' a los roles apropiados. El personal puede entonces acceder a la página TFA de cualquier usuario para restablecer los intentos de omisión de validación o deshabilitar TFA completamente.
Tips
- Siempre genere y almacene de forma segura los códigos de recuperación como respaldo antes de depender únicamente de una aplicación de autenticación
- Use la configuración 'validation_skip' sabiamente - un valor muy bajo fuerza la configuración inmediata de TFA, un valor muy alto reduce los beneficios de seguridad
- Considere habilitar el plugin Trusted Browser para reducir la fricción para usuarios en dispositivos personales mientras mantiene la seguridad en computadoras compartidas
- Pruebe exhaustivamente la configuración de TFA antes de habilitarlo para roles de administrador para evitar escenarios de bloqueo
- Mantenga la clave de cifrado segura y respaldada - perderla hará que todos los secretos TFA almacenados sean irrecuperables
- Use la integración con Views para agregar una columna de estado TFA a las páginas de administración de usuarios para un monitoreo fácil de la adopción de TFA
Technical Details
Admin Pages 5
/admin/config/people/tfa
Página de configuración principal para la Autenticación de Dos Factores. Configure qué métodos de validación están disponibles, seleccione el plugin de validación predeterminado, configure el cifrado, configure el control de saturación y personalice las notificaciones por correo electrónico.
/user/{user}/security/tfa
Página de resumen de TFA de la cuenta del usuario que muestra el estado actual de TFA, métodos de validación configurados, plugins de inicio de sesión y contador de omisión de validación. Los usuarios pueden administrar su configuración de TFA desde esta página.
/user/{user}/security/tfa/{method}
Formulario de configuración para configurar un método de validación de TFA específico. El contenido del formulario varía según el plugin - TOTP/HOTP muestra el código QR y la semilla, Códigos de Recuperación muestra los códigos generados, Navegador de Confianza muestra la administración del navegador.
/user/{user}/security/tfa/disable
Formulario de confirmación para deshabilitar TFA para una cuenta de usuario. Requiere confirmación de contraseña por seguridad.
/tfa/{uid}/{hash}
Formulario de entrada de TFA mostrado después de la autenticación de nombre de usuario/contraseña. Los usuarios ingresan su código de verificación de su aplicación de autenticación o código de recuperación.
Permissions 4
Hooks 1
hook_tfa_info_alter
Altera las definiciones de plugins de TFA. Permite a los módulos modificar las definiciones de plugins descubiertas por el administrador de plugins de TFA.
Drush Commands 2
drush tfa:reset-user
Restablece los datos de TFA de un usuario individual, eliminando todos los métodos de validación configurados y permitiéndole configurar TFA nuevamente.
drush sql-sanitize
TFA se integra con el comando sql-sanitize de Drush para eliminar todos los datos de TFA de usuarios durante la sanitización de la base de datos.
Troubleshooting 6
Un administrador con el permiso 'administer tfa for other users' puede restablecer los intentos de omisión de validación del usuario desde su página de resumen de TFA, o deshabilitar completamente TFA para el usuario. Alternativamente, use Drush: drush tfa:reset-user --name=username
Los usuarios pueden ingresar manualmente la semilla/clave secreta mostrada en su aplicación de autenticación en lugar de escanear. Asegúrese de que el código QR se muestre con tamaño y contraste suficientes. La semilla se muestra como un campo de texto sobre el código QR.
Los códigos TOTP son sensibles al tiempo. Asegúrese de que la hora del servidor sea precisa y esté sincronizada con NTP. Verifique que la configuración time_skew permita suficiente tolerancia. Verifique que la hora del dispositivo del usuario también sea precisa. Considere aumentar la configuración 'Number of Accepted Codes'.
Debe configurar un perfil de cifrado en el módulo Encrypt antes de poder configurar TFA. Instale y configure el módulo Key con una clave de cifrado, luego cree un perfil de cifrado en /admin/config/system/encryption.
Deshabilite TFA durante las pruebas estableciendo la configuración enabled en false: drush config-set tfa.settings enabled 0. Vuelva a habilitar después de las pruebas con: drush config-set tfa.settings enabled 1
Verifique que el sistema de correo de Drupal esté configurado correctamente. Compruebe que las plantillas de correo en la configuración de TFA tengan contenido válido de asunto y cuerpo. Revise los mensajes de registro recientes para detectar errores de envío de correo.
Security Notes 7
- Los secretos TFA se cifran usando el perfil Encrypt configurado - asegúrese de que su clave de cifrado esté debidamente protegida y no sea accesible mediante solicitudes web
- El control de flood protege contra ataques de fuerza bruta en códigos TFA - no deshabilite ni aumente significativamente los umbrales sin entender las implicaciones de seguridad
- La función Trusted Browser usa cookies que podrían ser robadas en ataques XSS - asegúrese de que su sitio tenga las protecciones XSS adecuadas
- Los códigos de recuperación son de un solo uso y deben tratarse con la misma seguridad que las contraseñas
- Considere usar el control de flood solo por UID (más seguro) a menos que tenga preocupaciones específicas sobre ataques de denegación de servicio
- Se recomienda la rotación regular de claves de cifrado - tenga en cuenta que esto requiere restablecer TFA para todos los usuarios
- Los eventos de registro de TFA se registran y deben monitorearse para detectar patrones de actividad inusuales