Sun Java System Directory Server Enterprise Edition 6.3 管理指南

密码策略设置

在目录服务器中指定密码策略时,需要修改或创建包含对象类 pwdPolicy(5dsoc) 的条目。

为特定类型的用户定义密码策略时,需要考虑以下注意事项:

本章的后续部分将介绍如何处理密码策略的这些方面。可以使用用于定义密码策略的工作单阐明要实现的每种密码策略。

帐户锁定策略

本部分介绍用于管理帐户锁定的策略属性。

目录服务器帐户一般指用户条目,以及用户在目录上执行操作的权限。每个帐户都与绑定 DN 和用户密码相关联。当入侵者看上去要尝试破解密码时,您希望目录服务器锁定帐户。锁定可阻止入侵者使用帐户进行绑定。锁定还可阻止入侵者继续进行攻击。

作为管理员,您还可以手动停用某个帐户或共享某个角色的所有用户的帐户。有关说明,请参见手动锁定帐户。但是,密码策略的一个重要部分就是指定目录服务器在什么情况下锁定帐户,而需要您的干预。

首先,您必须指定目录服务器可以在发生太多失败绑定时使用 pwdLockout(5dsat) 自动锁定帐户。目录服务器会跟踪尝试绑定到帐户的连续失败次数。可以使用 pwdMaxFailure(5dsat) 指定在目录服务器锁定帐户之前所允许的连续失败次数。

目录服务器将严格按照密码策略锁定帐户。此操作完全为机械性操作。帐户锁定的原因可能不是入侵者对帐户发动攻击,而是用户键入了错误的密码。因此,可以使用 pwdFailureCountInterval(5dsat) 指定目录服务器在清除失败尝试记录之前等待下一次尝试的时间。可以使用 pwdLockoutDuration(5dsat) 指定在目录服务器自动对帐户解除锁定之前锁定持续的时间。如果用户并非出于恶意而犯下了合理错误,管理员无需介入帐户解除锁定。

如果在复制拓扑中复制用户数据,则会将锁定属性与其他条目数据一起复制。pwdIsLockoutPrioritized(5dsat) 属性的默认设置为 TRUE,因此将以较高的优先级复制锁定属性的更新。这样,用户只能对任何单个副本连续进行 pwdMaxFailure 次失败的绑定尝试,超过之后将被锁定;对于其他副本,被锁定之前的绑定尝试次数可能更少一些。有关如何确保用户在整个复制拓扑中被锁定之前进行 pwdMaxFailure 次尝试的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Deployment Planning Guide》中的“Preventing Authentication by Using Global Account Lockout”

密码更改策略

本部分介绍用于管理密码更改的策略属性。

在许多部署中,目录服务器是标识数据的系统信息库。用户应该可以更改自己的密码(由 pwdAllowUserChange(5dsat) 指定),因此您无需更改密码。

允许用户更改自己的密码之后,您可能还希望控制用户可以在哪些情况下更改密码。可以使用 pwdSafeModify(5dsat) 指定要更改密码的用户必须首先提供正确的现有密码,然后才能替换密码。有关如何修改密码的示例,请参见pwdSafeModifyTRUE 时从命令行修改密码。可以使用 pwdInHistory(5dsat) 指定目录服务器记住的密码个数,以阻止用户重复使用相同的密码。也可以通过设置 pwdMinAge(5dsat) 来阻止用户过于频繁地更改密码。

在许多情况下,您(管理员)或者您管理的应用程序会在目录中创建用户条目。您可以指定在用户首次绑定到新帐户时要更改的用户密码值。您可能还必须重置用户密码,重置密码后,用户在下次使用该帐户时应该更改密码。目录服务器具有特定属性 pwdMustChange(5dsat),可以使用该属性指示当其他用户重置密码值后,用户是否必须更改密码。

还可以指定当目录管理者通过设置 passwordRootdnMayBypassModsChecks(5dsat) 更改密码时,可以不必遵循策略。

密码内容策略

本部分介绍用于管理密码内容的策略属性。

虽然一般不会在目录搜索中返回密码值,但攻击者仍有可能获取对目录数据库的访问权限。因此,密码值一般以某种受支持的散列格式(使用 passwordStorageScheme(5dsat) 指定)存储。

还可以通过设置 pwdCheckQuality(5dsat) 来强制检查密码是否满足最低密码质量的定义。然后,服务器会检查密码是否与任何 cngivenNamemailousnuid 属性值不匹配。密码与其中任何属性之间的比较不区分大小写。

可以在设置了 pwdCheckQuality(5dsat) 的情况下进行其他检查。可以通过设置 pwdMinLength(5dsat) 来强制密码至少包含指定数目的字符。此外,启用严格密码检查插件时,目录服务器还会检查密码是否不包含该插件所使用的字典文件中的字符串。服务器也会检查密码是否包含不同类型字符的正确组合。

可以使用 dsconf set-server-prop 命令启用严格密码检查。可以使用 pwd-strong-check-enabled 属性打开插件,然后重新启动服务器以使更改生效。可以使用 pwd-strong-check-require-charset 属性指定密码所需的字符集。pwd-strong-check-require-charset 属性使用以下值的掩码:

lower

新密码必须包含小写字符。

upper

新密码必须包含大写字符。

digit

新密码必须包含数字。

special

新密码必须包含特殊字符。

any-two

新密码必须至少包含上述字符集中的两种,每种至少包含一个字符。

any-three

新密码必须至少包含上述字符集中的三种,每种至少包含一个字符。

pwd-strong-check-require-charset 属性的默认设置为 lower && upper && digit && special

密码过期策略

本部分介绍用于管理密码过期的策略属性。

要确保用户定期更改密码,可以通过设置 pwdMaxAge(5dsat),将目录服务器配置为当密码达到特定存留期后将密码设置为过期。

必须通知用户其密码即将过期。可以将目录服务器配置为返回一个警告,指明用于绑定的密码即将过期。可以使用 pwdExpireWarning(5dsat) 定义在过期之前多久将会在客户端进行绑定时返回警告。请注意,客户端应用程序将收到该警告。用户不会直接收到警告。客户端应用程序在收到密码即将过期的警告时必须通知最终用户。

通过设置 pwdGraceAuthNLimit(5dsat),可允许用户使用过期密码进行一次或多次绑定尝试。因此,未能及时更改密码的用户仍可以进行绑定以更改密码。请注意,当用户使用宽限登录进行绑定时,该用户可以执行任何操作。宽限登录的工作方式就像密码尚未过期一样。

每次修改条目上的密码时,目录服务器都会更新操作属性 pwdChangedTime(5dsat)。因此,如果您准备启用密码过期,则已超过存留期限的用户密码会在您启用密码过期后立即过期。如果您不希望发生这种情况,请使用警告和宽限登录。

跟踪上次验证时间的策略

本部分介绍密码策略属性 pwdKeepLastAuthTime(5dsat) 的使用。

设置 pwdKeepLastAuthTime 之后,目录服务器将在每次用户验证时跟踪上次成功绑定的时间。此时间记录在用户条目的 pwdLastAuthTime(5dsat) 操作属性上。

由于此行为会为每次成功的绑定操作添加更新,因此在默认情况下不会激活 pwdKeepLastAuthTime 功能。您必须明确打开此功能才能在部署中使用。