设置建议的密码选项
恰当的密码管理只有通过用户教育来实现。 为提供某些额外的安全性,操作系统提供了可配置的密码限制。 它们允许管理员限制用户选择的密码,并强制定期更改密码。
密码选项和扩展用户属性位于 /etc/security/user 文件中,该文件包含用户的属性节。 每当为用户定义新密码时,这些限制就会执行。 所有密码限制都是按照用户来定义的。 通过在 /etc/security/user 文件的缺省节中保存限制,对所有用户执行相同限制。 为了维持密码安全性,所有密码必须受到相似的保护。
管理员还可以扩展密码限制。 通过使用 /etc/security/user 文件的 pwd支票 属性,管理员可以向密码限制代码添加新的子例程 (称为 方法)。 这样,本地站点策略可添加到操作系统,并由操作系统执行该策略。 有关更多信息,请参阅 扩展密码限制。
应用密码限制要切合实际。 过于限制的尝试,例如限制密码空间(这将使猜测密码更容易),或强制用户选择难以记忆的密码(用户可能选择会写下密码),都会危及密码安全性。 密码安全性最终要依靠用户。 简单的密码限制与明智的指南和偶尔的审计(以验证当前密码是否唯一)相结合,将是最好的策略。
下表列出与 /etc/security/user 文件中用户密码相关的一些安全属性的推荐值。
| 属性 | 描述 | 建议值 | 缺省值 | 最大值 |
|---|---|---|---|---|
| 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 命令来更改属性值。
可用于此文件的其他命令包括 mkuser, lsuser和 rmuser 命令。 mkuser 命令在 /etc/security/user 文件中为每个新用户创建一个条目,并用 /usr/lib/security/mkuser.default 文件中定义的属性初始化其属性。 要显示属性及其值,请使用 lsuser 命令。 要除去一个用户,请使用 rmuser 命令。