设置建议的密码选项

恰当的密码管理只有通过用户教育来实现。 为提供某些额外的安全性,操作系统提供了可配置的密码限制。 它们允许管理员限制用户选择的密码,并强制定期更改密码。

密码选项和扩展用户属性位于 /etc/security/user 文件中,该文件包含用户的属性节。 每当为用户定义新密码时,这些限制就会执行。 所有密码限制都是按照用户来定义的。 通过在 /etc/security/user 文件的缺省节中保存限制,对所有用户执行相同限制。 为了维持密码安全性,所有密码必须受到相似的保护。

管理员还可以扩展密码限制。 通过使用 /etc/security/user 文件的 pwd支票 属性,管理员可以向密码限制代码添加新的子例程 (称为 方法)。 这样,本地站点策略可添加到操作系统,并由操作系统执行该策略。 有关更多信息,请参阅 扩展密码限制

应用密码限制要切合实际。 过于限制的尝试,例如限制密码空间(这将使猜测密码更容易),或强制用户选择难以记忆的密码(用户可能选择会写下密码),都会危及密码安全性。 密码安全性最终要依靠用户。 简单的密码限制与明智的指南和偶尔的审计(以验证当前密码是否唯一)相结合,将是最好的策略。

下表列出与 /etc/security/user 文件中用户密码相关的一些安全属性的推荐值。

表 1. 用户密码的推荐安全属性值。
属性 描述 建议值 缺省值 最大值
dictionlist 验证密码是否包含标准 UNIX 单词。 /usr/share/dict/words 不适用 不适用
histexpire 密码可重新使用前的星期数。 26 0 260*
histsize 可允许的密码重复次数。 20 0 50
maxage 必须更改密码前的最大星期数。 8 0 52
maxexpired 超过 maxage 后可由用户更改到期密码的最大星期数。 (Root 用户例外。) 2 -1 52
maxrepeats 在密码中可重复字符的最大数目。 2 8 8
minage 密码可被更改前的最小星期数。 不应设置此项为非零值,除非总是能很容易联系到管理员来对一个最近更改过的、意外泄密的密码进行重新设置。 0 0 52
minalpha 密码必须包含字母字符的最小数目。 2 0 PW_PASSLEN**
mindiff 新密码中与旧密码不同的最小字符数。 0 0 PW_PASSLEN**
minlen 密码长度的最小值。 6(对 root 用户是 8) 0 PW_PASSLEN**
minother 密码必须包含非字母字符的最小数目。 2 0 PW_PASSLEN**
pwdwarntime 系统发出要求更改密码警告前的天数。 5 不适用 不适用
pwdchecks 此条目可用于使用用于检查密码质量的定制代码来扩充 passwd 命令。 有关更多信息,请参阅 扩展密码限制 不适用 不适用

* 最多保留 50 个密码。

** PW_PASSLEN 在 userpw.h 文件中定义。

如果在系统上安装了文本处理程序,管理员可以使用 /usr/share/dict/words 文件作为 dictionlist 字典文件。 在这种情况下,管理员可以将 minother 属性设置为 0。 由于字典文件中的大多数词都不包含属于 minother 属性类别的字符,因此将 minother 属性设置为 1 或更多会消除此字典文件中绝大多数词的需求。

系统中密码的最小长度由 minlen 属性的值或 minalpha 属性的值中的较大值加上 minother 属性来设置。

密码的最大长度是由 PW_PASSLEN 属性指定的字符数。 生成存储密码值时所用的字符数取决于系统上所用的密码算法。 密码算法在 /etc/security/pwdalg.cfg 文件中定义,要使用的缺省密码算法可以通过 /etc/security/login.cfg 文件中的 pwd_algorithm 属性进行配置。 minalpha 属性的值加上 minother 属性的值决不能大于 PW_PASSLEN 属性的值。 如果 minalpha 属性的值加上 minother 属性的值大于 PW_PASSLEN 属性的值,那么 minother 属性的值会减少为 PW_PASSLEN 属性的值减去 minalpha 属性的值。

如果 histexpire 属性的值和 histsize 属性的值都设置了,那么系统保留适用于两种情况所需的密码个数,最多达系统所限制的每个用户 50 个密码。 不保留空密码。

您可以编辑 /etc/security/user 文件,使之包含您要用来管理用户密码的任何缺省值。 或者,可以使用 chuser 命令来更改属性值。

可用于此文件的其他命令包括 mkuserlsuserrmuser 命令。 mkuser 命令在 /etc/security/user 文件中为每个新用户创建一个条目,并用 /usr/lib/security/mkuser.default 文件中定义的属性初始化其属性。 要显示属性及其值,请使用 lsuser 命令。 要除去一个用户,请使用 rmuser 命令。