20.4. 管理密码策略
密码策略通过强制执行一定级别的安全性,最大程度降低使用密码的风险。例如,密码策略可以定义以下内容:
- 用户必须根据计划更改其密码。
- 用户必须提供非缓解密码。
- 密码语法必须满足某些复杂性要求。
警告
当使用密码管理员帐户或
Directory Manager (root DN)设置密码时,会绕过密码策略,且不会验证。不要将这些帐户用于常规用户密码管理。仅使用它们来执行需要绕过密码策略的密码管理任务。
目录服务器支持精细的密码策略,因此密码策略可以应用到整个目录(global 密码策略)、一个特定子树(subtree-level 或 local 密码策略) 或一个特定用户 (user-level 或 local密码策略)。
应用到用户帐户的完整密码策略由以下元素组成:
- 密码策略检查的类型或级别。此信息指示服务器是否应该检查并强制执行全局密码策略,还是 local (subtree/user-level)密码策略。密码策略在经过验证的 pyramid 中工作,从常规到特定。全局密码策略由子树级密码策略取代,该策略由用户级密码策略取代。条目只强制使用一个密码策略 ; 密码策略不会被添加。这意味着,如果在全局或子树级别策略中配置了特定属性,但没有在用户级密码策略中配置,则尝试登录时不会为用户使用属性,因为活跃的策略是用户级别策略。
- 密码添加和修改信息。密码信息包括密码语法和密码历史记录详细信息。
- 绑定信息。绑定信息包括允许的宽限期、密码过期属性和跟踪绑定失败的数量。
注意
建立密码策略后,可以通过配置帐户锁定策略来防止用户密码受到潜在的威胁。帐户锁定可防止试图通过重复猜测用户密码来进入该目录的黑客。
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 选项,则 passwordchecksyntax 选项在本地策略中被设置为 OFF,并在全局策略中设置为 ON,您可以将以下属性从全局策略继承到本地策略:
passwordchecksyntax
passwordminlength
passwordmindigits
passwordminalphas
passwordminuppers
passwordminlowers
passwordminspecials
passwordmin8bit
passwordmaxrepeats
passwordmincategories
passwordmintokenlength
20.4.2.1. 目录服务器存储本地密码策略条目 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
当您使用 dsconf localpwp adduser 或 dsconf localpwp addsubtree 命令时,Directory 服务器会自动创建用于存储策略属性的条目:
- 对于子树(如 ou=people,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 - CoS 模板条目(
nsPwTemplateEntry),其具有指向上述(nsPwPolicyEntry)条目的pwdpolicysubentry值。例如: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=people,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参数设置为 上的。如果没有启用本地密码策略,请手动将参数设置为 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