口令老化(Password aging)是一种增强的系统口令生命期认证机制,虽然它会一定程序的削弱用户使用的便利性,但是它能够确保用户的口令定期更换,这是一种非常好的安全措施。大部分的Linux发行版默认都不会打开口令老化功能,但是我们可以很容易地启用它。

编辑/etc/login.defs文件,我们可以通过以下参数来修改口令老化的默认配置:

[bash]
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_WARN_AGE   7

将密码有效期天数(PASS_MAX_DAYS)设置为99999,实际是关闭了口令老化功能,更加明智的方法是将其设置为60-强制口令每两个月变更一次。而PASS_MIN_DAYS表示自从上次密码修改以来多少天后用户才被允许修改口令。最后PASS_WARN_AGE表示在口令到期前多少天开始通知用户口令即将到期(比如,在用户登录时提示)。

另外,我们也可以编辑/etc/default/useradd文件,在其中查找INACTIVE和EXPIRE关键字:

[bash]
INACTIVE=14
EXPIRE=

INACTIVE设置在口令已过期而用户一直没有修改口令多少天后用户帐户将置为不可用而锁定,以上设置是14天,而EXPIRE则直接指明新用户的口令的失效日期,格式为YYYY-MM-DD。

以上的设置都只对配置修改后创建的新用户有效,如果要更改已经创建的用户配置,可以使用chage工具:

[bash]chage -M 60 feiy

以上将设置用户feiy的PASS_MAX_DAYS为60天,并且相应的更新shadow文件。我们可以使用-l选项查看用户密码老化相关信息,-m设置PASS_MIN_DAYS,-W设置PASS_WARN_AGE等等。chage工具可以让我们设置口令老化的方方面面参数。以下是chage的详细参数信息:

用法:chage [选项] 用户名

选项:
  -d, --lastday 最近日期        将最近一次密码设置时间设为“最近日期”
  -E, --expiredate 过期日期     将帐户过期时间设为“过期日期”
  -h, --help                    显示此帮助信息并退出
  -I, --inactive 失效密码       将因过期而失效的密码设为“失效密码”
  -l, --list                    显示帐户年龄信息
  -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小
                                天数”
  -M, --maxdays 最大天数        将两次改变密码之间相距的最大天数设为“最大
                                天数”
  -W, --warndays 警告天数       将过期警告天数设为“警告天数”

注意,chage只针对本地系统帐户,如果您使用的诸如LDAP这样的认证系统,该命令无效。如果您使用LDAP认证而试图使用chage命令查看用户口令老化信息的话,您将发现chage对于该用户的老化信息一无所知。

这样一个明确定义密码多长时间失效,并且强制其更改的机制,肯定是一种有效的管理措施。例如,对于一个被解雇的员工,口令老化确保这个前任的员工不会在三个月后回来还发现原来的帐号仍然可以使用。即使系统管理员疏忽忘了删除解雇员工的帐户,这个帐户也会因为老化过期而被锁定。当然,忘了删除不再需要访问系统的用户帐户是不可原谅的,但是如果这一工作被疏忽了,口令老化提供了一道而外的安全保护层。

原文:Enable password aging on Linux systems