在 IBM Network Authentication Service for AIX 中增强密码强度
2008-11-10 08:26:24 来源:WEB开发网引言
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 管理员介绍如何充分利用该功能。
Tags:IBM Network Authentication
编辑录入:爽爽 [复制链接] [打 印]- ››IBM WebSphere常见问题解答
- ››IBM WebSphere Studio V5相关认证资料
- ››IBM WebSphere应用服务器发展趋势
- ››IBM WebSphere Application Server诊断和调优(一...
- ››IBM WebSphere Application Server诊断和调优(二...
- ››IBM WebSphere Performance Pack服务器
- ››IBM WebSphere软件概述
- ››IBM PowerVM 实战手册,第 3 部分 : VIO server 配...
- ››IBM PowerVM 实战手册,第 2 部分 : VIO server 准...
- ››IBM p 系列服务器系统固件升级攻略
- ››IBM PowerVM 概述
- ››IBM Systems Director 在 AIX 上的常见问题及解决...
更多精彩
赞助商链接