Habilite la autenticación de dos factores (2FA) en Windows con MultiOTP

En este artículo, mostraremos cómo implementar la autenticación de dos factores (2FA) para usuarios en un dominio de Windows utilizando el código abierto gratuito multiOTP paquete. MultiOTP es un conjunto de clases y herramientas de PHP que le permite implementar un servidor de autenticación sólido local para HOTP y TOTP (contraseña de un solo uso basada en el tiempo). Puede usarlo tanto en Windows como en cualquier otro sistema operativo (a través de RADIUS) para habilitar 2FA con una contraseña de un solo uso.

Una vez que se implementa multiOTP, Windows solicita al usuario que ingrese una contraseña de un solo uso (OTP) que recibe de su dispositivo móvil/smartphone (de Microsoft o Google Authenticator, u otro generador de OTP). Puede habilitar la autenticación de dos factores para que los usuarios inicien sesión en estaciones de trabajo de Windows o para acceder a hosts RDS en Windows Server a través de RDP.

MultiOTP ofrece operación fuera de línea (no necesita acceso a Internet), por lo que puede usarlo para configurar la autenticación multifactor en entornos desconectados. La mayoría de las aplicaciones similares son comerciales o requieren acceso directo a Internet.

Instalación de MultiOTP en el dominio de Active Directory

En esta sección, mostraremos cómo instalar multiOTP en Windows Server 2019 y configurar la sincronización de usuarios desde Active Directory.

También puede implementar multiOTP utilizando una imagen OVA para una máquina virtual VMware/Hyper-V o un contenedor Docker.

Comencemos con la configuración de un servidor multiOTP que obtendrá usuarios de Active Directory, generará códigos QR únicos para los usuarios y validará el segundo factor.

Cree un grupo de seguridad en Active Directory y agréguele usuarios que deberán pasar la verificación de segundo factor al iniciar sesión en Windows. Cree un grupo usando PowerShell:

New-ADGroup 2FAVPNUsers -path 'OU=Groups,OU=Munich,dc=woshub,DC=com' -GroupScope Global -PassThru –Verbose

Añadir usuarios al grupo:

Add-AdGroupMember -Identity 2FAVPNUsers -Members j.smith, k.berg, m.bakarlin

Cree un nuevo usuario en AD multiOTP que usará para acceder al catálogo de AD (con privilegios mínimos):

$passwd = ConvertTo-SecureString -String "Paa32ssw0rd!" -AsPlainText -Force
New-ADUser -Name "multiotp_srv" -SamAccountName "multiotp_srv" -UserPrincipalName "[email protected]" -Path "OU=ServiceAccounts,OU=Munich,DC=woshub,DC=com" –AccountPassword $passwd -Enabled $true

Descargue el archivo multiOTP – https://descargar.multiotp.net/.

Abra el archivo multiotp_5.9.2.1.zip y extraiga el ventanas directorio de él a una carpeta en su disco local (C:MultiOTP).

Abra el símbolo del sistema y vaya al directorio que contiene multiotp.exe:

CD C:MultiOTPwindows

Usando los comandos a continuación, configuraremos las configuraciones de MultiOTP LDAP para obtener usuarios de la base de datos de Active Directory.

multiotp -config default-request-prefix-pin=0
multiotp -config default-request-ldap-pwd=0
multiotp -config ldap-server-type=1
multiotp -config ldap-cn-identifier="sAMAccountName"
multiotp -config ldap-group-cn-identifier="sAMAccountName"
multiotp -config ldap-group-attribute="memberOf"
multiotp -config ldap-ssl=0
multiotp -config ldap-port=389

REM Domain controller IP address:

multiotp -config ldap-domain-controllers=mun-dc1.woshub.com,ldap://192.168.15.15:389
multiotp -config ldap-base-dn="DC=woshub,DC=com"

REM Account for multiOTP authentication in AD:

multiotp -config ldap-bind-dn="CN=multiotp_srv,OU=ServiceAccounts,OU=Munich,DC=woshub,DC=com"
multiotp -config ldap-server-password="Paa32ssw0rd!"

REM Group of users you want to enable OTP for:

multiotp -config ldap-in-group=”2FAVPNUsers”
multiotp -config ldap-network-timeout=10
multiotp -config ldap-time-limit=30
multiotp -config ldap-activated=1

REM Key to access a MultiOTP server:

multiotp -config server-secret=secret2OTP

configurar el servidor MultiOTP en Windows

Anteriormente creamos el 2FAVPNUusuarios grupo y le agregó 3 usuarios. Sincronice usuarios de AD con multiOTP.

multiotp -debug -display-log -ldap-users-sync

LOG 2022-09-17 14:36:44 info LDAP Info: 3 users created, based on 3 LDAP entries (processed in 00:00:00)
LOG 2022-09-17 14:36:44 debug System Info: *File created: c:MultiOTPwindows.usersj.smith.db

En este caso, multiOTP ha encontrado 3 usuarios y los ha sincronizado.

multiotp ldap-users-sync

Para sincronizar regularmente nuevas cuentas de Active Directory, cree un trabajo del Programador de tareas usando el siguiente comando:

multiotp -debug -display-log -ldap-users-sync

Correr webservice_install.cmd como administrador Instalará la interfaz de administración web multiOTP.

Inicie sesión en la interfaz web MULTIOTP (http://127.0.0.1:8112/) utilizando las credenciales predeterminadas (usuario: adminclave: 1234). Entonces se recomienda cambiarlo.

Consola de administración web de instalación de MultiOtp

Configuración de autenticación de dos factores MultiOTP para usuarios de dominio

En el Lista de usuarios sección, verá una lista de usuarios de dominio sincronizados anteriormente (fuente AD/LDAP).

Active Directory sincronizado a través de usuarios LDAP en multiOTP

Seleccione un usuario y haga clic en Impresión. Verá un código QR de usuario para agregar a la aplicación de autenticación.

Obtenga el código QR de OTP para usuarios de Windows

Instala el Autenticador de Microsoft (o Google Authenticator) de Google Play o App Store en el teléfono inteligente del usuario. Ábrelo y escanea el código QR del usuario.

Luego aparece una nueva cuenta de usuario en la aplicación Authenticator, que genera una nueva contraseña de seis dígitos (el segundo factor) cada 30 segundos.

Contraseña de un solo tema en la aplicación Microsoft Authenticator

En el símbolo del sistema, puede asegurarse de que multiOTP permita autenticar a este usuario con OTP:

multiotp.exe -display-log j.smith 130186

dónde 130186 es una contraseña de un solo uso que obtienes de la aplicación.

LOG 2022-09-17 15:13:11 notice (user j.smith) User OK: User j.smith successfully logged in with TOTP token
Filter-Id += "2FAVPNUsers"

multiotp.exe -display-log

También puede asegurarse de que OTP funcione correctamente a través de la interfaz web. Ir Comprobar un usuario sección, ingrese un nombre de usuario y una contraseña de un solo uso.

verifique la contraseña de un solo uso de los usuarios a través de la interfaz web

¿Cómo instalar y configurar MultiOTP CredentialProvider en Windows?

El siguiente paso es instalar multiOTP-CredentialProvider en computadoras con Windows, desea implementar la autenticación de dos factores usando multiOTP. Puede instalar CredentialProvider en cualquier versión de Windows 7/8/8.1/10/11 o Windows Server 2012(R2)/2016/2019/2022.

En este ejemplo, habilitaremos 2FA para que los usuarios de RDP inicien sesión en un servidor RDSH que ejecuta Windows Server 2019.

Descargue e instale multiOTP CredentialProvider desde GitHub https://github.com/multiOTP/multiOTPCredentialProvider/releases. La última versión disponible es la 5.9.2.1.

Ejecute la instalación:

  1. Especifique la dirección IP del servidor en el que está instalado multiOTP.
  2. Ingrese la clave secreta de la configuración multiOTP (server-secret) en el campo Secreto compartido con servidor multiOTP; Instalar multiOTP-CredentialProvider en Windows
  3. Seleccione el tipo de inicio de sesión de Windows para aplicar la autenticación OTP. En nuestro ejemplo, usaremos 2FA solo para inicios de sesión RDP (Autenticación OTP obligatoria solo para escritorio remoto). habilitar: autenticación OTP obligatoria solo para escritorio remoto

Puede habilitar la autenticación OTP tanto para RDP como para inicios de sesión locales.

MultiOTP CredentialProvider mantiene su configuración en el registro: HKEY_CLASSES_ROOTCLSID{FCEFDFAB-B0A1-4C4D-8B2B-4FF4E0A3D978}. Si lo desea, puede cambiar la configuración de CredentialProvider aquí sin reinstalar el agente.

Configuración de MultiOTP CredentialProvider en el registro

Reinicie el host RDS de Windows Server e intente conectarse a él a través de RDP. Después de ingresar sus credenciales de usuario, aparece una nueva ventana de contraseña de un solo uso. Aquí debe ingresar una contraseña de un solo uso de su aplicación Authenticator en su teléfono inteligente.

Ingrese la contraseña de un solo uso para iniciar sesión en el host RDS/RDP que ejecuta Windows

Si NLA para RDP está deshabilitado en el host RDS, un usuario solo verá tres campos (nombre de usuario, contraseña y OTP).

Inicie sesión en Windows con credenciales y contraseña de un solo uso

Puede habilitar el inicio de sesión en su servidor multiOTP, es útil para la depuración:

multiotp -config debug=1
multiotp -config display-log=1

Your script is running from C:MultiOTPwindows
2022-09-17 15:21:07 debug CredentialProviderRequest Info: *Value for IsCredentialProviderRequest: 1 0 MUN-SRVOTP1
2022-09-17 15:21:07 debug Server-Client Info: *CheckUserToken server request. 0 MUN-SRVOTP1
2022-09-17 15:21:07 notice j.smith User OK: User j.smith successfully logged in (using Credential Provider) with TOTP token 0 MUN-SRVOTP1
2022-09-17 15:21:07 debug Server-Client Info: *Cache level is set to 1 0 MUN-SRVOTP1
2022-09-17 15:21:07 debug Server-Client Info: *Server secret used for command CheckUserToken with error code result 0: secret2OTP 0 MUN-SRVOTP1

Recuerde asegurarse de que su dominio AD sincronice la hora con una fuente horaria confiable y que los dispositivos cliente tengan la hora correcta. Estos son críticos para el funcionamiento de la OTP.

De todos modos, antes de la implementación masiva de 2FA basada en multiOTP en su red, recomendamos probar todos los modos de operación y emergencias (servidor multiOTP o falta de disponibilidad de DC, errores de CredentialProvider, etc.) dentro de un par de semanas. Si se produce algún problema grave con el inicio de sesión multiOTP, puede desinstalar CredentialProvider en modo seguro.

Entonces, la configuración de la autenticación de dos factores multiOTP en Windows Server ha terminado. También hay escenarios de uso de multiOTP con un servidor RADIUS para autenticar casi cualquier tipo de cliente que use OTP. Puede usar OTP para una protección adicional del servidor RDP contra ataques de fuerza bruta junto con las reglas de Firewall de Windows.

Artículos Interesantes