3.5. 配置密码策略
密码策略通过强制执行一定级别的安全性,最大程度降低使用密码的风险。例如,您可以定义一个密码策略以确保:
- 用户必须根据计划更改其密码
- 用户必须提供非缓解密码
- 密码语法必须满足某些复杂性要求
3.5.1. 密码策略如何工作 复制链接链接已复制到粘贴板!
目录服务器支持细粒度密码策略,这些策略在特定的 pyramid 中工作。全局密码策略由子树级密码策略取代,该策略由用户级密码策略取代。
您可以定义:
- 全局密码策略,应用到整个目录
本地密码策略
- 应用到特定子树的子树级别策略
- 用户级策略,应用到特定用户
密码策略没有添加:只有一个密码策略适用于条目。例如,当您在全局或子树级别密码策略中配置特定属性时,但没有在用户级密码策略中配置特定属性,此属性不会应用到用户。在这种情况下,当用户尝试登录时,只有用户级策略处于活跃状态。
当使用密码管理员帐户或 Directory Manager (root DN)设置密码时,您将绕过密码策略。不要将这些帐户用于常规用户密码管理。使用它们仅执行需要绕过密码策略的密码管理任务,如添加预哈希密码,或者有意覆盖当前密码限制,以便在重置后设置临时密码。
应用到用户帐户的完整密码策略由以下元素组成:
- 密码策略检查的类型或级别。此信息指示服务器是否应该检查并强制执行全局密码策略或本地密码策略。
- 密码添加和修改信息。密码信息包括密码语法和密码历史记录详细信息。
- 绑定信息。绑定信息包括允许的宽限期、密码过期属性和跟踪绑定失败的数量。
建立密码策略后,您可以通过配置帐户锁定策略来保护用户密码免受潜在的威胁。帐户锁定通过重复猜测用户密码来防止尝试破坏该目录。
3.5.2. 使用命令行配置全局密码策略 复制链接链接已复制到粘贴板!
默认情况下禁用全局密码策略设置。您可以使用 dsconf 命令行工具配置全局密码策略。
流程
显示当前设置:
# dsconf <instance_name> pwpolicy get Global Password Policy: cn=config ------------------------------------ passwordstoragescheme: PBKDF2_SHA256 passwordChange: on passwordMustChange: off passwordHistory: off passwordInHistory: 6 ...调整密码策略设置。如需可用设置的完整列表,请输入:
# dsconf <instance_name> pwpolicy set --help例如,要启用密码语法检查并将密码的最小长度设置为
12个字符,请输入:# dsconf <instance_name> pwpolicy set --pwdchecksyntax on --pwdmintokenlen 12为密码策略启用帐户锁定功能:
# dsconf <instance_name> pwpolicy set --pwdlockout on
后续步骤
- 配置帐户锁定策略,通过重复猜测用户密码来防止尝试破坏该目录。详情请参阅 配置帐户锁定策略。
3.5.3. 使用 Web 控制台配置全局密码策略 复制链接链接已复制到粘贴板!
默认情况下禁用全局密码策略设置。您可以使用 Web 控制台配置全局密码策略。
前提条件
- 在 web 控制台中登录到实例。
流程
-
打开
菜单。 设置全局密码策略设置。您可以在以下类别中设置参数:
- 常规设置,如密码存储方案
- 密码过期设置,如密码过期的时间
- 帐户锁定设置,比如在应锁定帐户的登录尝试的次数后
密码语法设置,如最小密码长度
要显示参数的
cn=config条目中的工具提示和对应的属性名称,请将鼠标光标悬停在设置上。
- 点 。
后续步骤
- 配置帐户锁定策略,通过重复猜测用户密码来防止尝试破坏该目录。详情请参阅 配置帐户锁定策略。
3.5.4. 本地密码策略条目 复制链接链接已复制到粘贴板!
当您使用 dsconf localpwp addsubtree 或 dsconf localpwp adduser 命令时,Directory 服务器会自动创建用于存储本地密码策略属性的条目。
对于子树,添加了以下条目:
| 条目名称 | 描述 | 内容 |
|---|---|---|
|
| 子树级别的容器条目 | 子树及其所有子项的各种与密码策略相关的条目 |
|
| 实际的密码策略规格条目 | 所有特定于子树的密码策略属性 |
|
| CoS 模板条目 |
|
|
| 子树级别的 CoS 定义条目 | COS 定义条目 |
例 3.1. 子树 ou=people,dc=example,dc=com 的 nsPwPolicyContainer 条目
dn: cn=nsPwPolicyContainer,ou=people,dc=example,dc=com
objectClass: top
objectClass: nsContainer
cn: nsPwPolicyContainer
例 3.2. 子树 ou=people,dc=example,dc=com 的 nsPwPolicyEntry 条目
dn: cn="cn=nsPwPolicyEntry,ou=people,dc=example,dc=com",
cn=nsPwPolicyContainer,ou=people,dc=example,dc=com
objectclass: top
objectclass: extensibleObject
objectclass: ldapsubentry
objectclass: passwordpolicy
例 3.3. 子树 ou=people,dc=example,dc=com 的 nsPwTemplateEntry 条目
dn: cn="cn=nsPwTemplateEntry,ou=people,dc=example,dc=com",
cn=nsPwPolicyContainer,ou=people,dc=example,dc=com
objectclass: top
objectclass: extensibleObject
objectclass: costemplate
objectclass: ldapsubentry
cosPriority: 1
pwdpolicysubentry: cn="cn=nsPwPolicyEntry,ou=people,dc=example,dc=com",
cn=nsPwPolicyContainer,ou=people,dc=example,dc=com
例 3.4. 子树 ou=people,dc=example,dc=com 的 CoS 规格条目
dn: cn=newpwdpolicy_cos,ou=people,dc=example,dc=com
objectclass: top
objectclass: LDAPsubentry
objectclass: cosSuperDefinition
objectclass: cosPointerDefinition
cosTemplateDn: cn=cn=nsPwTemplateEntry\,ou=people\,dc=example,dc=com,
cn=nsPwPolicyContainer,ou=people,dc=example,dc=com
cosAttribute: pwdpolicysubentry default operational
对于用户,添加了以下条目:
| 条目名称 | 描述 | 内容 |
|---|---|---|
|
| 父级别的容器条目 | 用户及其所有子级的各种密码策略相关条目 |
|
| 实际的密码策略规格条目 | 所有特定于用户的密码策略属性 |
例 3.5. 用户 uid=user_name,ou=people,dc=example,dc=com 的 nsPwPolicyContainer 条目
dn: cn=nsPwPolicyContainer,ou=people,dc=example,dc=com
objectClass: top
objectClass: nsContainer
cn: nsPwPolicyContainer
例 3.6. The nsPwPolicyEntry entry for a user uid=user_name,ou=people,dc=example,dc=com
dn: cn="cn=nsPwPolicyEntry,uid=user_name,ou=people,dc=example,dc=com",
cn=nsPwPolicyContainer,ou=people,dc=example,dc=com
objectclass: top
objectclass: extensibleObject
objectclass: ldapsubentry
objectclass: passwordpolicy
3.5.5. 使用命令行配置本地密码策略 复制链接链接已复制到粘贴板!
使用命令行,为特定用户或子树配置本地密码策略。与为整个目录定义设置的全局策略不同,本地密码策略定义了用于密码语法、年龄和复杂性的自定义规则。
前提条件
- 要为创建策略的用户或子树条目已存在于目录中。
流程
验证子树或用户条目的本地密码策略是否已存在。例如:
# dsconf <instance_name> localpwp get "ou=People,dc=example,dc=com" Enter password for cn=Directory Manager on ldap://server.example.com: Error: No password policy was found for this entry如果没有本地策略,请创建一个:
创建 子树 密码策略:
# dsconf <instance_name> localpwp addsubtree "ou=People,dc=example,dc=com"创建用户 密码策略:
# dsconf <instance_name> localpwp adduser "uid=user_name,ou=People,dc=example,dc=com"
设置本地策略属性。如需可用设置的完整列表,请输入:
# dsconf <instance_name> localpwp set --help例如,要启用密码过期并将最长密码期限设置为 14 天(
1209600秒):在 子树 密码策略中:
# dsconf <instance_name> localpwp set --pwdexpire on --pwdmaxage 1209600 "ou=People,dc=example,dc=com"在 用户密码 策略中:
# dsconf <instance_name> localpwp set --pwdexpire on --pwdmaxage 1209600 "uid=user_name,ou=People,dc=example,dc=com"
3.5.6. 使用 Web 控制台配置本地密码策略 复制链接链接已复制到粘贴板!
使用 Web 控制台为特定用户或子树配置本地密码策略。与为整个目录定义设置的全局策略不同,本地密码策略定义了用于密码语法、年龄和复杂性的自定义规则。使用 Web 控制台设置本地策略。
前提条件
- 您有 root 权限。
- 已登陆到 web 控制台。如需了解更多详细信息 ,请参阅使用 Web 控制台登录到目录服务器。
流程
- 选择实例。
- 打开 Database 菜单。
- 在左侧列表中选择 密码策略 设置下的 Local Policies 。
- 在 Local Password Policies 配置页面中,选择 Create A Policy 选项卡。
- 在 Password Policy Type 字段中,选择 Subtree Policy 或 User Policy。
- 在 Target DN 字段中,设置条目的可分辨名称(DN)以应用策略。
设置本地策略属性。例如,要启用密码过期,请将最大密码期限设置为 14 天(1209600 秒),并将最小密码长度设置为 10 个字符:
-
展开 Show Expiration Settings,选中 Enforce Password Expiration,并将 Password Expiration Time 设置为
1209600。 -
展开 Show Syntax Settings,选中启用密码语法检查,并将 Minimum Length 设置为
10。
-
展开 Show Expiration Settings,选中 Enforce Password Expiration,并将 Password Expiration Time 设置为
- 单击 Create New Policy。
验证
- 新创建的策略会出现在 Local Password Policies 页面的列表中。
3.5.7. 使用命令行禁用本地密码策略 复制链接链接已复制到粘贴板!
当您创建新的本地策略时,cn=config 条目中的 nsslapd-pwpolicy-local 参数会在 上 自动设置为。如果没有启用本地密码策略,您可以使用命令行手动禁用它。
流程
禁用所有本地策略或删除特定的本地策略:
禁用所有本地密码策略:
# dsconf <instance_name> pwpolicy set --pwdlocal off删除单个现有的 子树 密码策略:
# dsconf <instance_name> localpwp remove "ou=People,dc=example,dc=com"删除单个 现有用户 密码策略:
# dsconf <instance_name> localpwp remove "uid=user_name,ou=People,dc=example,dc=com"
3.5.8. 使用 Web 控制台禁用本地密码策略 复制链接链接已复制到粘贴板!
当您创建新本地策略时,Directory 服务器会自动允许本地密码策略。您可以使用 Web 控制台禁用所有或特定的本地密码策略。
前提条件
- 您有 root 权限。
- 已登陆到 web 控制台。如需了解更多详细信息 ,请参阅使用 Web 控制台登录到目录服务器。
流程
- 选择实例。
- 打开 Database 菜单。
禁用所有本地策略或删除特定的本地策略:
禁用所有本地密码策略:
- 选择 Password Policies 下的 Global Policy 设置,并取消选中 Allow Local Password Policies。
点 按钮应用配置。
因此,Directory 服务器会将
cn=config条目中的nsslapd-pwpolicy-local参数设置为off。
- 要删除特定的本地策略,请在 密码策略下选择 Local Policies 设置,并使用 Options 菜单(&&)删除本地策略。
3.5.9. 跟踪密码更改时间 复制链接链接已复制到粘贴板!
密码更改操作是条目的典型修改操作,Directory 服务器会将更新时间记录到 lastModified 操作属性。但是,为了便于更新 Active Directory 同步中的密码或与其他 LDAP 客户端连接,您可以单独记录最后一次密码更改的时间。
在全局或本地密码策略中配置 passwordTrackUpdateTime 参数,以将上次密码更改的时间记录到用户条目的 pwdUpdateTime 操作属性。
前提条件
-
您有
root权限。
流程
在
上将passwordTrackUpdateTime参数设置为 :对于全局策略,请运行:
# dsconf <instance_name> pwpolicy set --pwdtrack on对于子树或用户级策略,请运行:
# dsconf <instance_name> localpwp set "ou=people,dc=example,dc=com" --pwdtrack on
验证
显示策略的当前设置:
对于全局策略,请运行:
# dsconf <instance_name> pwpolicy get Global Password Policy: cn=config ------------------------------------ nsslapd-pwpolicy-local: on passwordstoragescheme: PBKDF2-SHA512 ... passwordtrackupdatetime: on ...对于子树或用户级策略,请运行:
# dsconf <instance_name> localpwp get "ou=people,dc=example,dc=com" Local Subtree Policy Policy for "ou=people,dc=example,dc=com": cn=cn\3DnsPwPolicyEntry_subtree\2Cou\3Dpeople\2Cdc\3Dexample\2Cdc\3Dcom,cn=nsPwPolicyContainer,ou=people,dc=example,dc=com ------------------------------------ ... passwordtrackupdatetime: on