Muchos de vosotros nos preguntáis por el funcionamiento y gestión de la contraseña de los equipos que pertenecen a Directorio Activo. En el siguiente post vamos a destacar los puntos más importantes del proceso del cambio de contraseña, dónde se almacena, cómo se puede cambiar y diversos parámetros de configuración que nos ayudarán en su gestión.

Los equipos que pertenecen al dominio establecen una contraseña para la cuenta de máquina. Esta información se almacena tanto en local, en el propio equipo (SAM), como en la cuenta de máquina en Directorio Activo. Cuando el equipo inicia, la información de la contraseña es utilizada para establecer el canal seguro del equipo y, por lo tanto, se comprueba que la contraseña almacenada y enviada por el equipo coincide con la existente en la base de datos de DA.

Los equipos almacenan la información de la contraseña de máquina en HKLM\SECURITY\Policy\Secrets\$machine.ACC . La contraseña actual y la previa se almacenan en las claves CurrVal y OldVal, respectivamente. En Directorio Activo, la contraseña se almacena en unicodepwd y en lmPwdHistory. Además, también se guarda el “timestamp” en el atributo pwdLastSet.

En principio, el cambio de contraseña se realiza cada 30 días por defecto, aunque esta configuración puede modificarse y establecerse según las necesidades de cada entorno.  Este valor puede configurarse mediante GPOs en el siguiente valor:

Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\Domain member: Maximum machine account password age

Es importante destacar que las contraseñas de máquina no caducan, y por lo tanto si un equipo lleva sin iniciarse más de 30 días, la última contraseña utilizada es válida para iniciar sesión. Si la contraseña proporcionada por el equipo en algún caso, no coincide con la del Directorio Activo, el equipo envía la N-1 y, si ésta es reconocida como válida por el DC, se permitirá el establecimiento del canal seguro. En otro caso, este intento fallará y será necesario volver a establecer la contraseña. Para volver a establecer la contraseña de la máquina podemos ejecutar nltest  /SC_CHANGE_PWD:<DomainName> con un usuario con privilegios para realizar el cambio.

El proceso de cambio de contraseña de la máquina, o bien, porque se haya cumplido el tiempo estipulado en la configuración del entorno (por defecto 30 días), o bien, porque forzamos el establecimiento de una nueva contraseña mediante nltest, es iniciado por el proceso NetLogon del equipo cliente y nunca por el/los DCs del dominio. Este cambio debe llevarse a cabo tanto en el equipo local (SAM) como en AD de manera controlada y debe ser un cambio atómico. Cuando el equipo, envía la nueva información al DC, este indica si el cambio se ha aceptado y se ha realizado, para escribirse el cambio en ambos sitios.

Es posible modificar el comportamiento del cambio de contraseña de los equipos cliente en caso de considerarse necesario, por ejemplo, modificar el intervalo de cambio de contraseña, deshabilitar el cambio de contraseña, etc.

Los parámetros más importantes que se pueden configurar al respecto en el equipo cliente son los siguientes:

  • ScavengeInterval (default 15 minutes)
  • MaximumPasswordAge (default 30 days)
  • DisablePasswordChange (default off)

A continuación detallamos cada uno de los parámetros:

· DisablePasswordChange: Evita que el equipo cliente lleve a cabo el cambio de contraseña. 

154501 How to disable automatic machine account password changes

“Warning If you disable machine account password changes, there are security risks because the security channel is used for pass-through authentication. If someone discovers a password, he or she can potentially perform pass-through authentication to the domain controller.”

Este comportamiento puede ser configurado por clave de registro o mediante GPOs:

Key = HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters
Value = DisablePasswordChange

Type= REG_DWORD
Default = 0

Computer Configuration\windows Settings\Security settings\Local Policies\Security Options\Domain member: Disable machine account Password changes

· ScavengeInterval: Establece la frecuencia con la que el servicio NetLogon comprueba si es necesario realizar el cambio de contraseña.

HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters
Value: ScavengeInterval

Type= REG_DWORD
Default= 900 (15 minutes)
Range= 60 to 172800 Seconds (48 hours)

· MaximumPasswordAge: Indica cuando se debe cambiar la contraseña de la máquina.

Key = HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters
Value = MaximumPasswordAge

Type= REG_DWORD
Default = 30
Range = 1 to 1,000,000 (in days)

Computer Configuration\windows Settings\Security settings\Local Policies\Security Options\Domain member: Maximum machine account Password age

También existe la posibilidad de configurar los DCs de manera que no acepten los cambios de contraseña de los equipos. Para ello es necesario habilitar la siguiente opción:

Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\Domain controller: Refuse machine account password changes

Esta configuración es equivalente a la siguiente clave de registro:

Key=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters

Value=RefusePasswordChange
Default=0

Esperamos que esta información os sirva de ayuda para entender mejor los cambios de contraseña de los equipos Windows.

- Yolanda Muñoz Muñoz && Paula Tomás Galed