如何通过 Active Directory 随机化或交错密码过期时间?

如何通过 Active Directory 随机化或交错密码过期时间?

我们即将实施新的密码政策,要求用户每六个月更改一次密码。我们还需要每个用户更改密码周。我不想陷入每半年更改一次密码的狂热,而且更愿意随机化或错开密码到期日期。

当我尝试在 ADSI 编辑中修改 pwdLastSet 属性时收到错误。似乎该属性可能是只读的。如果我可以写入它,我不确定直接修改 pwdLastSet 属性是否会产生任何不良影响。

我考虑过实施多重密码策略,但从我所读的内容来看,DFL 2003 不支持多重密码策略,这需要升级(尽管这可能是最终升级的一个不错的借口。)

当所有用户都需要立即更改密码时,我该如何避免每六个月进行一周的全公司密码更改?

答案1

有几种方法可以实现这一点。我尝试通过编程实现随机化,但效果并不好 - 尝试向 pwdLastSet 属性写入除 0 或 -1 之外的任何值都行不通。

我倾向于应用新的密码策略,然后每周使一组用户的密码过期,以分散负载。

您可以使用修改重置上次修改日期。我会抓取一个组(我实际上是从 TXT 文件中导入了一个用户名列表)并要求他们在下次登录时更改密码。

我保存了一个电子表格来了解哪些用户仍需要过期。

这种方法有两个缺点 - 您需要多次运行此脚本,并且用户无法使用他们的第一个复杂密码整整六个月。

答案2

我首先想到的是,选择一组随机用户,在你想要他们的现有密码过期的时间范围之后,再次让他们的密码过期:

$users = get-aduser -filter * | get-random -count <my number of users>
foreach ($user in $users) {Set-ADUser $user -ChangePasswordAtLogon $true}

显然,你需要使用 PowerShell 来完成此示例,但可以使用任何脚本语言完成相同的操作

相关内容