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
12,218 sites
109
drupal.org
Drupal 8 Drupal 9 Drupal 10 Drupal 11

Install

Drupal 11, 10, 9, 8 v8.x-1.12
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
Configuración de TFA /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.

Resumen de TFA /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.

Configuración de TFA /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.

Deshabilitar TFA /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.

Autenticación de Dos Factores /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
Administrar TFA

Configura los ajustes de autenticación de dos factores. Proporciona acceso a la página principal de configuración de TFA.

Configurar TFA para la cuenta

Permite a los usuarios configurar TFA para su propia cuenta. Los usuarios con este permiso pueden acceder a su página de resumen de TFA y configurar los métodos de validación.

Desactivar TFA de la cuenta

Permite a los usuarios desactivar TFA una vez que se haya configurado en su cuenta.

Administrar TFA para otros usuarios

Permite a los usuarios editar los ajustes de TFA para otras cuentas. Los administradores con este permiso pueden ver y modificar las configuraciones de TFA de otros usuarios.

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
Usuario bloqueado de su cuenta después de configurar TFA

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

El código QR no se escanea correctamente

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 de la aplicación de autenticación siempre son inválidos

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'.

La página de configuración de TFA muestra 'No Encryption profiles available'

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.

No se puede probar el inicio de sesión con TFA en pruebas automatizadas

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

Las notificaciones por correo electrónico no se envían

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