众所周之,目录服务器DC的安全性至关重要,而密码的保护又是安全性保护中很重要的一环。为活动目录制定密码策略可以减少人为的和来自网络入侵的安全威胁,保证活动目录的安全。AD管理员应该都知道,在Windows2000/2003上,密码策略只能指派到域(Site)上,不能单独应用于活动目录中的对象。换句话说,密码策略在域级别起作用,而且一个域只能有一套密码策略。 统一的密码策略虽然大大提高了安全性,但是提高了域用户使用的复杂度。举个例子来说,企业管理员的帐户安全性要求很高,需要超强策略,比如密码需要一定长度、需要每两周更改管理员密码而且不能使用上几次的密码;但是普通的域用户并不需要如此高的密码策略,也不希望经常更改密码并使用很长的密码,超强的密码策略并不适合他们。
为解决这个问题,在Win2008中引入了多元密码策略(Fine-Grained Password Policy)的概念。多元密码策略允许针对不同用户或全局安全组应用不同的密码策略,例如:
A.可以为管理员组指派超强密码策略,密码16位以上、两周过期;
B.为服务帐号指派中等密码策略,密码30天过期,不配置密码锁定策略;
C.为普通域用户指派密码90天过期等。
多元密码策略的诞生,满足了不同用户对于安全性的不同要求。多元密码策略虽然满足了不同级别用户对于密码安全性的要求,但是配置多个密码策略为管理员增加了管理复杂度,管理起来也不是很方便,所谓鱼和熊掌不可兼得。而我写这篇文章的初衷就是帮朋友尽快熟悉起这个功能,鱼和熊掌,我欲兼得!
部署注意点
多元密码策略部署要求有以下几点:
A. 所有域控制器都必须是Windows Server 2008;
B. 域功能级别为2008 Domain Functional Mode;如下图1所示:
图1
C. 客户端无需任何变更;
D. 如果一个用户和组有多个密码设置对象(PSO,可以把PSO理解为和组策略对象GPO类似,通俗的理解为就是一条条的密码策略),那么优先级最小的PSO将最终生效;
E. 可以使用ADSIEDIT或者LDIFDE或者第三方工具进行管理;
F. 多元密码策略只能应用于活动目录中的用户和全局安全组,而不能应用于活动目录中的计算机对象、非域内用户和组织单元OU。
实战
理论知识��嗦了一大箩筐了,接下来我将通过实战方式向大家介绍如何通过ADSIEDIT、LDIFDE以及第三方工具FGPP、Quese公司出品的针对AD的PowerShell来实现、管理多元密码策略。由于本系列文章涉及到的方法比较多,为了让大家在操作的时候有一个清晰的思路,我将主要的操作步骤写出来:
步骤 1:创建 PSO
步骤 2:将 PSO 应用到用户和/或全局安全组
步骤 3:管理 PSO
步骤 4:查看用户或全局安全组的结果 PSO
步骤5:验证结果
Ⅰ. ADSIEDIT
步骤1:创建PSO
1.
在DC上打开“活动目录用户和计算机”,创建一个名为”TestOU”的OU,然后在该OU里面建立一个名为张三的用户和一个名为PSOGroup的全局安全组,再把张三加入该组中。如图2.
图2
2.
再在DC上输入adsiedit.msc,按照如图所示展开至CN=Password Settings Container。如图3所示。并在上面右击选择新建对象,如图4.
图3
图4
3.
(接下来请完全按照图示来操作)出现新建对象窗口,如图5,类别只有一个密码设置,点击下一步。
图5
4.
接下来为PSO取个有意义的名字,便于自己管理。例如我就取“AdminPSO”,如图6所示。
图6
5.
接下来修改msDS-PasswordSettingsPrecedence属性,也就是设置密码的优先级,尽管此处可以输入零或者负数,但是要想真正生效的话,此处输入的数值必须大于零。前面说过,数值越小,优先级越高。我就输入1,如图7所示。
图7
6.
接下来修改msDS-PasswordReversibleEncryptionEnabled属性,也就是是否启用用户帐户的密码可还原的加密状态。可接受输入的值为FALSE/TRUE。为了安全着想(开启后可以用工具逆向DUMP出用户的密码),如果没有特殊需求,建议设置为FALSE。如图8.
图8
7.
接下来修改msDS-PasswordHistoryLength属性,也就是设置用户帐户的密码历史长度。有时候翻译为强制密码历史。可接收输入的值为0到1024。默认是24个。我这里设置为3个历史密码不能重复。如图9.
图9
8.
接下来修改msDS-PasswordComplexityEnabled属性,也就是是启用户帐户的密码复杂性要求。复杂性的定义就不��嗦了。可接受输入的值为FALSE/TRUE。为了安全考虑,建议设置为TRUE。如图10
图10
9.
接下来修改msDS-MinimumPasswordLength属性,也就是设置用户帐户的最短密码长度。可接收输入的值为0到255.我这里设置最短需满足16位。如图11.
图11
10.
接下来修改msDS-MinimumPasswordAge属性,也就是设置用户帐户密码的最短使用期限。默认必须是使用1天后才能再次更改密码。可以接受输入的格式为00:00:00:00。这4段分别表示为多少天、多少小时,多少分,多少秒。这里只可以输入1天的整数倍,不要输入什么0.5天,1.5天等。如果你输入00:12:00:00也就是半天,尽管可以继续下去,但是不会生效。请注意这一点。我这里输入可以立即更改密码,也就是00:00:00:00。如图12.
图12
11.
接下来修改msDS-MaximumPasswordAge属性,也就是设置用户帐户的最长密码期限。默认是42天。和前面那个属性一样,可以接受输入的格式为持续时间格式。我这里输入最长可以使用14天。如图13.
图13
12.
接下来修改msDS-LockoutThreshold 属性,也就是设置用户帐户锁定的锁定阈值。默认没有限制。可以接受的输入范围是0到65535.我这里设置为输入3次错误密码就自动锁定。如图14.
图14
13.
接下来修改msDS-LockoutObservationWindow属性,也就是设置用户帐户锁定的观察窗口时间。这个设置可以有点不太好理解。通俗点解释就是多长时间复位帐户锁定计数器。比如,我设置的是30分钟内输入3次就锁定账号。那么一个用户在30分钟内输入错误密码2次后,如果他在接下来的30分钟内停止继续尝试输入错误密码,那么半个小时后他又可以继续输入3次错误密码了。可以接受输入的格式为持续时间格式。我这里输入30分钟后复位。如图15.
图15
14.
接下来修改msDS-LockoutDuration属性,也就是设置锁定用户帐户的锁定持续时间。可以接受输入的格式为持续时间格式。我这里输入锁定30分钟。如图16.
图16
步骤2:将 PSO 应用到用户和/或全局安全组
1.
接下来不要点击“完成”,点击“更多属性”。如图17.
图17
2.
在“选择一个要查看的属性”处选择msDS-PSOAppliesTo ,它用来设置此密码设置对象PSO所应用到的对象,只能链接到用户或全局安全组的 0 个或多个 DN。我将它连接到之前创建的PSOGroup安全组。如图18.完全以后点击“确定”。至此,PSO的创建、链接工作至此完成。
图18
步骤 3:管理 PSO
查看和修改 PSO 设置
1. 打开“Active Directory 用户和计算机”。在“查看”菜单上,确保选中“高级功能”。
2. 在控制台树中,展开Active Directory 用户和计算机\域节点\System\Password Settings Container
3. 在右侧窗格中,右键单击刚才创建的AdminPSO,然后单击“属性”。切换到“属性编辑器”选项卡。
4. 选择要查看或编辑其设置的属性,然后单击“查看”(对于只读值)或“编辑”(对于可编辑的值)。
注:如果没有看到要查看或编辑其设置的属性,则单击“筛选器”以自定义在“属性编辑器”选项卡上显示的属性列表。
修改 PSO 优先级
1. 按照上面类似的方法操作,单击AdminPSO“属性编辑器”选项卡。
2. 选择 msDS-PasswordSettingsPrecedence 属性,然后单击“编辑”。在“整数”“属性编辑器”对话框中,为“PSO 优先级”输入新值,然后单击“确定”。如图19.
图19
删除 PSO
1. 按照上面类似的方法操作,找到之前建立的AdminPSO。右击删除即可。如图20.
图20
2. 注:
a.
删除 PSO 后,它所表示的密码策略对于应用该策略的全局安全组的成员将不再有效。
b.
以上针对PSO的管理我是拿活动目录用户和计算机管理单元来介绍的,你完全可以使用ADSIEDIT来进行完全一致的管理操作,我这里就不赘述了。
步骤 4:查看用户或全局安全组的结果 PSO
使用dsget查看用户结果PSO
1.
PSO链接到用户或安全组上后,密码策略是立即生效的。如何来检验呢?使用如下命令可以看到用户目前生效的密码策略:
dsget user "CN=张三,OU=TestOU,DC=Winos,DC=CN" �Ceffectivepso
返回结果是:
effectivepso
"CN=AdminPSO,CN=PasswordSettingsContainer,CN=System,DC=Winos,DC=cn"
dsget 成功
表明隶属于PSOGroup安全组的张三目前生效的密码策略是AdminPSO。如图21所示。
图21
2.
注:
a. 如果以上命令没有返回任何PSO 名称,则表示“默认域策略”已应用到指定的用户帐户。
b. 不能直接对安全组查看生效的密码策略,只能查看用户。
c. 不要尝试对张三用户通过组策略管理工具GPMC使用组策略建模或者组策略结果向导以查看他是否拿到了新密码策略,也不要尝试使用张三账号登录系统后运行net accounts命令。这些命令、工具都无法查看到张三目前应用的密码策略。它们均只能查看默认域密码策略。
使用ADUC管理单元查看用户结果PSO
1. 打开“Active Directory 用户和计算机”。右键张三用户,然后单击“属性”。
2. 切换到“属性编辑器”选项卡,然后单击“筛选器”。
3. 确保选中“显示属性”/“可选”复选框和“显示只读属性”/“已构造”复选框。
4. 找到并查看“属性”列表中的 msDS-ResultantPSO 属性的值是否为AdminPSO.
5. 注:如果 msDS-ResultantPSO 属性的值为“Null”或“未设置”,则“默认域策略”已应用到所选的用户帐户。
步骤5:验证结果
最简单的验证方法就是直接为张三用户修改密码。因为默认的域密码策略要求7个字符,而我为张三定义的密码策略是要满足16个字符。所以我在ADUC上将张三的密码重设为10位,看看能否成功,成功的话就说明他拿到的还是默认的域策略,而不是我们定义的AdminPSO。如图22所示,表示AdminPSO策略应用到张三账号上成功。