La política de contraseñas de Active Directory (AD) básicamente impone una fecha de caducidad máxima para las contraseñas de usuario. Cuando se alcanza esa fecha, la contraseña se marca como caducada y la próxima vez que el usuario inicie sesión, deberá cambiarla. Es un poco molesto, sobre todo si alguien se conecta mediante VPN o RDS y no puede restablecer su contraseña directamente. Por suerte, existe una forma de extender esa fecha de caducidad sin activar la opción «La contraseña nunca caduca», lo que respeta las políticas de seguridad, pero da un poco más de margen.
PowerShell es la solución ideal. Permite comprobar cuándo expiran las contraseñas y ajustar las fechas si es necesario. De esta forma, los usuarios no se bloquearán inesperadamente ni se verán obligados a restablecer contraseñas en masa cuando no sea necesario.
Cómo solucionar la caducidad de una contraseña en Active Directory
Comprobar la fecha de caducidad de la contraseña actual
Saber cuándo una contraseña está a punto de caducar o ya ha caducado es el primer paso. Este comando extrae información sobre la última fecha de configuración de la contraseña del usuario, su hora de caducidad y si ha caducado:
Get-ADUser -Identity e.herrmann -Properties msDS-UserPasswordExpiryTimeComputed, PasswordLastSet, PasswordNeverExpires, PasswordExpired | Select-Object -Property Name, PasswordLastSet, PasswordNeverExpires, PasswordExpired, @{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}
Así, con un vistazo rápido, puedes ver si una contraseña ha caducado ( PasswordExpired=True) o sigue vigente. La clave es msDS-UserPasswordExpiryTimeComputed, que indica la fecha de caducidad según la política de contraseñas.
Mira la última fecha de configuración de la contraseña
Esto verifica cuándo se cambió la contraseña por última vez, lo que influye en los cálculos de caducidad. Use este comando:
Get-ADUser e.herrmann -Properties pwdLastSet | select SamAccountName, @{Name="pwdLastSet";Expression={[datetime]::FromFileTime($_.pwdLastSet)}}
Tenga en cuenta que pwdLastSet almacena la fecha en formato Windows FileTime (milisegundos desde 1601).También puede ser 0 si la contraseña nunca se configuró o -1 si se restableció a la fecha actual. Porque, claro, Windows tiene que complicar las cosas más de lo debido.
Ajustar la última fecha de configuración de la contraseña
Si desea extender o restablecer la fecha de caducidad de la contraseña, puede modificar pwdLastSet. Ajústelo a 0 para restablecer la última fecha establecida (es decir, «la contraseña nunca se estableció») o a -1 para actualizar la cuenta regresiva de caducidad. Así es como se hace:
Set-ADUser e.herrmann -Replace @{pwdLastSet='0'} # resets password date Set-ADUser e.herrmann -Replace @{pwdLastSet='-1'} # resets to current time
En algunas configuraciones, hacer ambas cosas seguidas puede ayudar a extender la fecha de caducidad o reparar cuentas caducadas. No sé por qué funciona, pero en un dominio tardó varios intentos, y en otro, solo necesitó reiniciar después.
Verificar los cambios y confirmar la caducidad
Después, vuelva a ejecutar la comprobación anterior para confirmar que la fecha de caducidad se ha modificado o que la contraseña ya no está marcada como caducada. Esto es especialmente útil si un usuario se queda atascado porque su contraseña caducó inesperadamente. Simplemente ejecute algunos comandos hasta que todo esté correcto.
Otro punto a tener en cuenta: no se puede elegir una fecha de caducidad personalizada directamente en AD; el sistema la calcula basándose en la última fecha establecida y la política de contraseñas. Por lo tanto, modificar pwdLastSet es prácticamente lo más aproximado.
Este truco es especialmente útil cuando te preparas para implementar una nueva política, pero no quieres interrumpir a todos los usuarios a la vez. Es como darles una tarjeta de extensión, por así decirlo, sin desactivar la política por completo.
Resumen
- Verifique la caducidad de la contraseña con Get-ADUser.
- Úselo
msDS-UserPasswordExpiryTimeComputedpara ver la fecha de vencimiento. - Verificar el último cambio de contraseña con
pwdLastSet. - Ajuste la última fecha establecida con
Set-ADUsery modifiquepwdLastSetpara extender el vencimiento. - Recuerde que no puede establecer una fecha de vencimiento fija, solo modificar la fecha del último cambio.
Resumen
Crucemos los dedos, esto ayudará a evitar restablecimientos de contraseña innecesarios o sorpresas. Es una solución alternativa, pero sorprendentemente efectiva, especialmente cuando los usuarios son sorprendidos por los avisos de expiración. Solo tenga cuidado al manipular los atributos de AD; siempre verifique dos veces después de realizar cambios. Con suerte, esto le ahorrará algunas horas de dolor de cabeza a alguien.