Kerberos 主体密码是用来解锁密钥分发中心 (KDC) 服务器应答的密钥,因此,如果该密码发生泄露,就没有其他方法来核实主体的真实性。因而,管理员必须选择非常难于破解的密码,以免被他人破解而影响系统的安全性。
您还可以建议最终用户提高密码的强度,并通知其密码策略相关内容。这是一种源自外部的保护,但是,还需要通过内部机制来强制最终用户选择强密码,为此,IBM Network Authentication Service (NAS) for AIX 提供了增强密码强度功能。
IBM NAS 管理服务器 (kadmind) 提供了增强密码强度检查工具。Kadmind 服务器负责检查和验证主体的密码。服务器可以根据分配给主体的密码策略(请参阅参考资料部分以阅读有关 Kerberos 密码策略管理的 developerWorks 文章)和在规则配置文件中指定的密码规则来验证密码。
为了激活 IBM NAS 中的增强密码强度功能,管理员需要在密钥分发中心 (KDC) 配置文件 '/var/krb5/krb5kdc/kdc.conf' 中指定规则配置文件的位置。需要使用配置文件 [realm] 节中的 ‘password_rules’ 关系来指定规则配置文件的位置,如下所示:
[kdcdefaults]
kdc_ports = 88
[realms]
TEST = {
database_name = /var/krb5/krb5kdc/principal
admin_keytab = /var/krb5/krb5kdc/kadm5.keytab
acl_file = /var/krb5/krb5kdc/kadm5.acl
dict_file = /var/krb5/krb5kdc/kadm5.dict
key_stash_file = /var/krb5/krb5kdc/.k5.TEST
kadmind_port = 749
kdc_ports = 88
max_life = 24h 0m 0s
max_renewable_life = 7d 0h 0m 0s
master_key_type = des3-cbc-sha1
supported_enctypes = des3-cbc-sha1:normal arcfour-hmac:normal
aes256-cts:normal des-cbc-md5:normal des-cbc-crc:normal
password_rules = /var/krb5/krb5kdc/password_rules.conf
}
|
如果在 /var/krb5/krb5kdc/kdc.conf 文件中未指定 'password_rules = ' 行,或者所指定的文件不存在或无法访问,则不会启用增强密码强度功能。
密码规则文件包含多个密码规则,这些规则通过帮助用户选择适当的密码来提高密码强度。这些规则是在节下定义的。密码规则文件可以包含如下三个节:
[default]节包含应用于整个领域的密码规则。缺省情况下,领域中的所有主体都受制于该节下指定的规则。[policies]节包含影响各个策略的密码规则。需要应用领域范围规则以外的更多规则时使用此节。[principals]节包含基于各个主体的密码规则。对于少数非常重要的主体(如admin/admin等),管理员可以采用特别定制的规则。
如果任何节重复出现,则最后出现的节被视为有效,并忽略其他节。也会忽略任何不完整、未知和拼写错误的条目。
如果由于某种原因导致密码规则文件发生损坏,kadmind 将记录和显示错误,然后退出。
密码规则配置文件具有与 IBM NAS 配置文件(/etc/krb5/krb5.conf 和 /var/krb5/krb5kdc/kdc.conf)相同的格式,如下所示:
# This stanza has the realm-wide default rules
[default]
mindiff = 3
maxrepeats = 3
minalpha = 4
minother = 1
minlen = 6
maxlen = 24
minage = 604800
histsize = 5
# Add a separate dictlist line for each dictionary you want to add
dictlist = /usr/dict/words
dictlist = /var/krb5/krb5kdc/words
# This stanza has the per-policy rules
[policies]
staff = {
minlen = 8
}
admin = {
minlen = 10
minother = 2
histsize = 8
}
# This stanza has the per-principal rules
[principals]
admin/admin = {
mindiff = 4
histsize = 10
}
|
IBM NAS 附带了示例密码规则文件 /usr/samples/krb5/password_rules.conf。下一部分将介绍所有可用的密码规则。
密码规则用于控制对主体密码的单项限制或检查项。这些增强密码强度规则可以基于领域、策略或主体进行设置。缺省情况下,规则是针对整个领域设置的。现有主体的密码不会受新密码规则的影响。如果在激活密码规则后密码发生改变,新密码应遵从这些规则。IBM NAS 支持四种类型的密码规则:
这些规则指定密码可以包含哪些内容,例如,密码是否应当只包含字母或字母数字字符。支持下列规则:
- mindiff = <number>
- 新密码与旧密码中不同字符的最小数目。
- maxrepeats = <number>
- 给定字符在密码中可以出现的最大次数。
- minalpha = <number>
- 密码中字母数字字符的最小数目。
- minother = <number>
- 密码中非字母数字字符的最小数目。
- minlen = <number>
- 密码中字符的最小数目。(最小值为 1,因为密码不能为空字符串)
- maxlen = <number>
- 密码中字符的最大数目。
组合检查算法根据下列规则验证密码中的字符是否处于有效范围:
- 不允许出现负值。如果指定了负值,服务器将记录警告并忽略该值。
- 如果 minalpha 和 minother 相加大于 maxlen,则 maxlen 的值设为 minalpha + minother。
- minlen 的最小值为 1(密码不能为空字符串)。如果未指定 minlen 的值或指定为 0,则该值设为 1。在这种情况下不会记录警告。
- maxlen 必须大于或等于 minlen。如果 minlen 大于 maxlen,则 maxlen 设为 minlen 的值。
- mindiff、maxrepeats、minalpha、minother 或 maxlen 的值设为 0 表示不会检查该规则。
这些规则用于指定更改密码的频率。支持下列规则:
- minage = <seconds>
- 在可以更改密码之前,该密码必须存在的最短时间。该值以秒为单位。其值必须是大于或等于零的整数。如果未指定该值或值为 0,则不应用该规则。如果值为负数,则忽略该值,并且由 kadmind 服务器记录一个警告。
注意:如果管理员使用 change_password kadmin 命令来更改密码,则忽略 minage 检查。
使用此规则指定在某个密码可以重用之前,必须使用的其他密码的数目。支持下列规则:
- histsize = <number>
- 在可以重用前一个密码之前,密码更改必须发生的特定次数。histsize 的有效值为 1 至 10。如果未指定或传递该值,则该值设为 1。但是,如果传递了大于 10 的值,则该值设为 10 并附带警告。
使用字典规则可以指定在密码验证过程中使用的单词列表(作为字典文件)。支持下列规则:
- dictlist = <filename>
- 包含不能用作密码的单词的字典文件列表。
字典文件具有与 AIX 字典文件相同的格式:
- 每行包含一个单词。
- 每个单词从第一列开始,并以新行字符结束。
- 不会删除内嵌、前导和末尾的空格。
字典文件必须位于正在运行 kadmind 的计算机上,或位于可通过显式路径访问的远程加载的文件系统中。必须使用绝对路径来指定字典文件。
注意:
- 如果主 KDC 和 kadmind 迁移到新计算机,则必须转移字典文件。
- 如果取消 IBM NAS 的配置,则可能需要手动删除系统中的任何字典文件。
- 如果 kadmind 无法找到指定的字典文件,则会记录关于缺少文件的警告,但用户仍然可以更改其密码。不会检查缺少的字典文件。
概括来说,密码配置文件中有三个位置可供管理员指定基于主体、策略或领域范围的密码规则;管理员需要决定在何处放置规则。每个节各自具有不同的用途和限制。每次修改规则文件时,都需要重启 kadmind 守护进程,这就是始终推荐指定领域范围或基于策略的规则的原因,以使对 kadmind 服务器的影响降到最低。如果在主体级别上指定规则,管理员可能需要在每次添加单个主体或一批主体时重启 kadmind 服务器。在生产环境中重启服务器守护进程是一种不推荐的做法。
kadmind 守护进程只在启动时读取 kadmin 命令接口的所有规则,而 kadmind.local 命令接口则在每次调用时重新读取规则文件。因此,建议每当规则文件或字典文件被更改时就重启 kadmind 服务器,这样 kadmin 和 kadmin.local 命令接口将提供一致的结果。
下面的示例显示了 kadmind 和 kadmin.local 如何读取密码配置文件。对于 kadmin 接口,kadmind 守护进程在启动时读取文件,如下所示:
bash-2.05b# hostname
land.in.ibm.com
bash-2.05b# date
Wed Apr 30 11:35:42 CDT 2008
bash-2.05b# start.krb5 kadmind
Starting kadmind...
kadmind was started successfully.
The command completed successfully.
|
守护进程启动成功后,它将在日志文件(缺省日志文件:/var/krb5/log/kadmin.log)中记录如下内容:
Apr 30 11:35:47 land.in.ibm.com kadmind[26712](info): Seeding random number generator
Apr 30 11:35:47 land.in.ibm.com kadmind[26712](info): Password strength is enabled using
rules file /var/krb5/krb5kdc/password_rules.conf.
Apr 30 11:35:47 land.in.ibm.com kadmind[25232](info): starting
|
启动时,kadmin.local 命令接口在日志文件中记录关于密码规则文件的信息,如下面的示例所示:
bash-2.05b# hostname
land.in.ibm.com
bash-2.05b# date
Wed Apr 30 11:30:11 CDT 2008
bash-2.05b# kadmin.local
kadmin.local:
|
在您运行 kadmin.local 接口时,它将在日志文件中记录下列信息:
pr 30 11:30:15 land.in.ibm.com kadmin.local[22428](info): Password strength is enabled
using rules file /var/krb5/krb5kdc/password_rules.conf.
|
kadmind 服务器启动时,在密码规则文件的 [default] 节中指定的字典文件列表和缺省字典文件(在 /var/krb5/krb5kdc/kdc.conf 文件中提供)被加载到内存中。启动时不会读取为单个策略或主体指定的字典文件列表;相反,根据需要读取它们并添加到内存中的现有字典文件列表中。
除字典文件检查外,在启用密码强度检查时还维持一些隐含规则。例如,密码不能与主体名称或领域名称相同。
下面的示例显示了如何执行字典检查。在本例中,字典文件 /var/krb5/krb5kdc/words 包含下列单词:
bash-2.05b# cat /var/krb5/krb5kdc/words kerberos ibm admin nas aix |
同样,不要忘记在 password_rule 文件的 [dictlist] 节下提供字典文件名,如下所示:
bash-2.05b# cat /var/krb5/krb5kdc/password_rules.conf
[default]
mindiff = 3
maxrepeats = 3
minalpha = 0
minother = 0
minlen = 6
maxlen = 24
minage = 604800
histsize = 5
# Add a separate dictlist line for each dictionary you want to add
dictlist = /var/krb5/krb5kdc/words
|
还需要在 /var/krb5/krb5kdc/kdc.conf 文件中提供 password_rule 文件的名称。
现在,我们来尝试创建密码为“kerberos”的主体“vipin”。它不会成功。
bash-2.05b# /usr/krb5/sbin/kadmin.local
kadmin.local: ank -pw kerberos vipin
WARNING: no policy specified for vipin@TEST;
defaulting to no policy. Note that policy may be overridden by
ACL restrictions.
Unable to create principal "vipin@TEST".
Status 0x29c2518 - Password is either in the password dictionary or is the same
as the principal or realm name.
kadmin.local: q
|
因此,我们的字典文件已生效并且工作正常!
启用增强密码强度功能时,可能存在将密码规则的多个实例应用于某个主体的情况。在这种情况下,将应用最严格的规则。根据下表执行最严格的规则:
表 1. 合并规则
| 规则 | 最严格值 |
|---|---|
| mindiff | 最大值 |
| maxrepeats | 最小值 |
| minalpha | 最大值 |
| minother | 最大值 |
| minlen | 最大值 |
| maxlen | 最小值 |
| minage | 最大值 |
| histsize | 最大值 |
如果在领域、策略和主体级别上为主体提供了多个字典文件列表,那么在密码验证过程中将连接所有列表并进行查询。
正如我们所了解的,只有在 /var/krb5/krb5kdc/kdc.conf 文件中指定了“password_rule”文件时才会激活增强密码强度功能,基于主体是否拥有策略和 password_rule 文件是否被激活来确定是否对密码进行验证。下表总结了所有可能情况:
表 2. 密码验证规则
| 主体是否拥有策略? | 是否激活了 password_rules 文件? | 密码验证规则 |
|---|---|---|
| 否 | 否 | 不执行密码强度检查。不检查字典文件。 |
| 否 | 是 | 检查 password_rules 文件中的增强规则。如果在 kdc.conf 中指定了字典,也会执行字典检查。 |
| 是 | 否 | 不执行增强规则检查。检查策略规则;如果在 kdc.conf 中指定了字典,则执行字典检查。 |
| 是 | 是 | 检查现有基于策略的规则以及规则文件中的增强规则。如果在 kdc.conf 中指定了字典,则也会执行字典检查。根据表 1 中的规则来合并策略记录中的规则与规则文件的 [policy] 节之间的冲突。 |
本文讨论了关于 IBM NAS 提供的增强密码强度功能的所有内容,并向 Kerberos 管理员介绍如何充分利用该功能。
学习
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文 。
- IBM Network Authentication Service for AIX Version 5.3 中的 Kerberos 策略管理 :阅读本文以了解关于 Kerberos 密码策略管理的信息。
- Configuring AIX 5L for Kerberos Based Authentication Using IBM Network Authentication Service:阅读这篇白皮书,以了解使用 Kerberos 作为 AIX 备选身份验证机制的内容。
- A Kerberos Primer:这篇文章介绍了 Kerberos 技术和基于分布式计算环境的应用程序。
- AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
- AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
- AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
- developerWorks 技术事件和网络广播:了解最新的 developerWorks 技术事件和网络广播。
- AIX Wiki:访问此 AIX 相关技术信息的协作环境。
- Podcast:收听 Podcast 并与 IBM 技术专家保持同步。
获得产品和技术
- IBM Network Authentication Service for AIX:从“IBM AIX Web Download Pack Programs”页面下载 IBM Network Authentication Service for AIX。
- IBM Network Authentication Service for Linux,Solaris:从这里下载用于 Linux 和 Solaris 的 IBM Network Authentication Service。
- IBM GUI-based Administration Tool for Network Authentication Service:使用 GUI 以执行与 IBM NAS 相关的各种管理任务。立即从 IBM alphaWorks 进行下载。
- AIX 5L Expansion Pack and Web Download Pack:现在就开始下载。
- IBM 试用软件:从 developerWorks 可直接下载这些试用软件,您可以利用它们开发您的下一个项目。
讨论
- 参与“AIX and UNIX”论坛:

