提升Linux帐号安全策略

前言

先来了解一下 /etc/shadow 的格式:

[root@localhost ~]# cat /etc/shadow | grep yejr
yejr:$1$e0l45aJc$B3pfnFsKsxRFpI9apJ8mS1:13746:0:99999:7:::

类似 /etc/passwd,/etc/shadow 档的每一个栏位也是由 ":" 冒号所分开,意义如下:

使用者名称,最多 8 个符号,可以用大小写,通常都是小写。直接对应 /etc/passwd 档案中的使用者名称。 

密码,加密过的 13 个字元。空格 (就是 ::) 表示登入时不需密码 (不是个好主意),"*" 项目 (就是 :*:) 指出帐号已经关闭。 
密码最後一次变更起所经过的日数 (从 1970-1-1 起 )
密码经过几天可以变更 (0 表示可以随时变更)
密码经过几天必须变更 (99999 表示使用者可以保留他们的密码很多很多年不变)
密码过期之前几天开始要警告使用者
密码过期几天后帐号会被取消
从 1970-1-1 起,帐号经过几天会被取消
保留位

了解了之后,就开始吧。

1. 修改 /etc/login.defs

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   42
PASS_MIN_DAYS   0
PASS_MIN_LEN    8
PASS_WARN_AGE   10

即,密码有效期42天,密码最小长度8位,密码过期前10天开始提醒。

2. 修改现有账户的过期时间间隔

[root@localhost ~]# passwd -x 42 -w 10 yejr
Adjusting aging data for user yejr.
passwd: Success

即,修改现行账户中的yejr,密码最长有效期42天,过期前10天开始提醒。

3. 修改现有账户的最后密码修改时间

[root@localhost ~]# cat /etc/shadow | grep yejr
yejr:$1$e0l45aJc$B3pfnFsKsxRFpI9apJ8mS1:13746:0:99999:7:::

可以看到,帐号yejr是 2007-08-21 最后一次修改密码的,且他的密码是永久有效的。我们来手工编辑一下,修改成类似如下内容:

[root@localhost ~]# /usr/sbin/vipw
yejr:$1$e0l45aJc$B3pfnFsKsxRFpI9apJ8mS1:14012:0:42:10:::

即,帐号yejr最后一次修改时间是 2008-05-13,密码最长有效期是 42 天,密码过期前 10 天开始提醒。

以上操作在 Red Hat Enterprise Linux AS release 4 (Nahant Update 6) 上通过。

参考资料:
http://slackware.osuosl.org/slackware-3.3/docs/Shadow-Password-HOWTO
http://www.comptechdoc.org/os/linux/howlinuxworks/linux_hlshadow.html

技术相关: