20.4. 管理密码策略
密码策略通过强制实施一定级别的安全性来最小化使用密码的风险。例如,密码策略可以定义:
- 用户必须根据时间表更改其密码。
- 用户必须提供非主要密码。
- 密码语法必须满足某些复杂性要求。
警告
当使用密码管理员帐户或
目录管理器
(root DN)设置密码时,将绕过密码策略且不验证。不要将这些帐户用于常规用户密码管理。仅使用它们来执行需要绕过密码策略的密码管理任务。
目录服务器支持精细的密码策略,因此密码策略可以应用到整个目录(global 密码策略)、一个特定子树(subtree-level 或 local 密码策略) 或一个特定用户 (user-level 或 local密码策略)。
应用到用户帐户的完整密码策略由以下元素组成:
- 密码策略检查的类型或级别。此信息指示服务器是否应该检查并强制实施全局密码策略,还是本地(子树/用户级别)密码策略。密码策略在反转的 pyramid 中工作,从常规到特定的。全局密码策略由子树级密码策略替代,该策略由用户级密码策略替代。仅对条目强制执行一个密码策略;密码策略不会被添加。这意味着,如果在全局或子树级别策略中配置了特定属性,但没有在用户级密码策略中,则属性在尝试登录时不会用于用户,因为 active, applied 策略是用户级策略。
- 密码添加和修改信息。密码信息包括密码语法和密码历史记录详情。
- 绑定信息。绑定信息包括允许的宽限期数量、密码参与属性和跟踪绑定失败。
注意
建立密码策略后,可以通过配置帐户锁定策略来保护用户密码免受潜在的威胁。帐户锁定可防止尝试通过重复猜测用户密码来破坏目录的黑客。
20.4.1. 配置全局密码策略
默认情况下禁用全局密码策略设置。本节提供了一些配置全局密码策略的示例。
注意
配置密码策略后,配置帐户锁定策略。详情请查看 第 20.9 节 “配置基于密码的帐户锁定策略”。
20.4.1.1. 使用命令行配置全局密码策略
使用
dsconf
工具显示并编辑全局密码策略设置:
- 显示当前设置:
# dsconf -D "cn=Directory Manager" ldap://server.example.com pwpolicy get Global Password Policy: cn=config ------------------------------------ passwordstoragescheme: PBKDF2_SHA256 passwordChange: on passwordMustChange: off passwordHistory: off passwordInHistory: 6 ...
- 调整密码策略设置。例如,要启用密码语法检查并将密码的最小长度设置为 12 个字符,请输入:
# dsconf -D "cn=Directory Manager" ldap://server.example.com pwpolicy set --pwdchecksyntax=on --pwdmintokenlen=12
如需可用设置的完整列表,请输入:# dsconf -D "cn=Directory Manager" ldap://server.example.com pwpolicy set --help
- 启用密码策略:
# dsconf -D "cn=Directory Manager" ldap://server.example.com pwpolicy set --pwdlockout on
20.4.1.2. 使用 Web 控制台配置全局密码策略
使用 Web 控制台配置全局密码策略:
- 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”。
- 选择实例。
- 打开菜单。
- 在 Global Policy。,选择
- 设置全局密码策略设置。您可以在以下类别中设置参数:
- 常规设置,如密码存储方案
- 密码过期设置,如密码过期的时间。
- 帐户锁定设置,例如在应锁定帐户的登录尝试次数后。
- 密码语法设置,如最小密码长度。
要显示参数的 cn=config 条目中的工具提示和对应属性名称,请将鼠标光标悬停在设置上。详情请查看 红帽目录服务器配置、命令和文件参考 中的参数描述。 - 点击。
20.4.2. 使用本地密码策略
与定义整个目录的设置的全局密码策略不同,本地密码策略是特定用户或子树的策略。
当精细的密码策略没有设置密码语法时,如果
nsslapd-pwpolicy-inherit-global
参数为 on,则可以从全局策略继承语法。
如果定义了
--pwpinheritglobal
选项,则 local 策略中的 passwordcheck
Locator 选项设置为 OFF,并在全局策略中继承以下属性到本地策略:
passwordchecksyntax
passwordminlength
passwordmindigits
passwordminalphas
passwordminuppers
passwordminlowers
passwordminspecials
passwordmin8bit
passwordmaxrepeats
passwordmincategories
passwordmintokenlength
20.4.2.1. 其中目录服务器存储本地密码策略条目
当您使用 dsconf localpwp adduser 或 dsconf localpwp addsubtree 命令时,Directory 服务器会创建一个用于存储策略属性的条目:
- 对于子树(如 ou=body,dc=example,dc=com),添加了以下条目:
- 在子树级别上的容器条目(
nsPwPolicyContainer
),用于保存子树及其所有子项的各种密码策略相关条目。例如:dn: cn=nsPwPolicyContainer,ou=people,dc=example,dc=com objectClass: top objectClass: nsContainer cn: nsPwPolicyContainer
- 用于保存特定于子树的所有密码策略属性的实际密码策略规格条目(
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
- 具有指向上述(
nsPwPolicyEntry
)条目的pwdpolicysubentry
值的 CoS 模板条目(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
- 子树级别的 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
- 对于用户(例如,uid=user_name,ou=body,dc=example,dc=com),添加了以下条目:
- 父级别的容器条目(
nsPwPolicyContainer
),用于保存用户及其所有子项的各种密码策略相关条目。例如:dn: cn=nsPwPolicyContainer,ou=people,dc=example,dc=com objectClass: top objectClass: nsContainer cn: nsPwPolicyContainer
- 用于保存特定于用户的密码策略属性的实际密码策略规格条目(
nsPwPolicyEntry
)。例如: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
20.4.2.2. 配置本地密码策略
配置本地密码策略:
注意
目前,您只能使用命令行设置本地密码策略。
- 验证子树或用户条目是否已存在本地密码策略。例如:
# dsconf -D "cn=Directory Manager" ldap://server.example.com localpwp get "ou=People,dc=example,dc=com" Error: The policy wasn't set up for the target dn entry or it is invalid
如果不存在本地策略,请创建一个:- 创建子树密码策略:
# dsconf -D "cn=Directory Manager" ldap://server.example.com localpwp addsubtree "ou=People,dc=example,dc=com"
- 创建用户密码策略:
# dsconf -D "cn=Directory Manager" ldap://server.example.com localpwp adduser "uid=user_name,ou=People,dc=example,dc=com"
重要当您创建新的本地策略时,上一命令会自动将 cn=config 条目中的nsslapd-pwpolicy-local
参数设置为 on。如果不应该启用本地密码策略,请手动将参数设置为 off :dsconf -D "cn=Directory Manager" ldap://server.example.com pwpolicy set --pwdlocal off
- 设置本地策略属性。例如,要启用密码过期并将最长密码过期时间设置为 14 天(1209600 秒):
- 在子树密码策略中:
# dsconf -D "cn=Directory Manager" ldap://server.example.com localpwp set --pwdexpire=on --pwdmaxage=1209600 "ou=People,dc=example,dc=com"
- 在用户密码策略中:
# dsconf -D "cn=Directory Manager" ldap://server.example.com localpwp set --pwdexpire=on --pwdmaxage=1209600 "uid=user_name,ou=People,dc=example,dc=com"
如需可用设置的完整列表,请输入:# dsconf -D "cn=Directory Manager" ldap://server.example.com localpwp set --help