前言:

使用Linux快三年了,从未想过Linux用户密码策略,从未把一本Linux的书从头看到尾(上学时的教材除外),故不知书上有无介绍,直到最近参加公司的信息安全稽核会议后才开始考虑Linux用户密码策略…

系统版本:

Red Hat Enterprise Linux AS release 4

Linux用户密码策略

    Linux用户密码的有效期,是否可以修改密码可以通过login.defs文件控制.对login.defs文件修只影响后续建立的用户,如果要改变以前建立的用户的有效期等可以使用chage命令.

    Linux用户密码的复杂度可以通过pam pam_cracklib module或pam_passwdqc module控制,两者不能同时使用. 个人感觉pam_passwdqc更好用.

/etc/login.defs密码策略

PASS_MAX_DAYS   99999     #密码的最大有效期, 99999:永久有期

PASS_MIN_DAYS   0          #是否可修改密码,0可修改,非0多少天后可修改

PASS_MIN_LEN    5          #密码最小长度,使用pam_cracklib module,该参数不再有效

PASS_WARN_AGE   7         #密码失效前多少天在用户登录时通知用户修改密码

pam_cracklib主要参数说明:

    tretry=N:重试多少次后返回密码修改错误

    difok=N:新密码必需与旧密码不同的位数

    dcredit=N: N >= 0:密码中最多有多少个数字;N < 0密码中最少有多少个数字.

    lcredit=N:小宝字母的个数

    ucredit=N大宝字母的个数

    credit=N:特殊字母的个数

    minclass=N:密码组成(大/小字母,数字,特殊字符)

pam_passwdqc主要参数说明:

mix:设置口令字最小长度,默认值是mix=disabled。

max:设置口令字的最大长度,默认值是max=40。

passphrase:设置口令短语中单词的最少个数,默认值是passphrase=3,如果为0则禁用口令短语。

atch:设置密码串的常见程序,默认值是match=4。

similar:设置当我们重设口令时,重新设置的新口令能否与旧口令相似,它可以是similar=permit允许相似或similar=deny不允许相似。

random:设置随机生成口令字的默认长度。默认值是random=42。设为0则禁止该功能。

enforce:设置约束范围,enforce=none表示只警告弱口令字,但不禁止它们使用;enforce=users将对系统上的全体非根用户实行这一限制;enforce=everyone将对包括根用户在内的全体用户实行这一限制。

non-unix:它告诉这个模块不要使用传统的getpwnam函数调用获得用户信息,

retry:设置用户输入口令字时允许重试的次数,默认值是retry=3

密码复杂度通过/etc/pam.d/system-auth实施

如:

要使用pam_cracklib将注释去掉,把pam_passwdqc.so注释掉即可.

#password    requisite     /lib/security/$ISA/pam_cracklib.so retry=3 difok=1

password    requisite     /lib/security/$ISA/pam_passwdqc.so min=disabled,24,12,8,7 passphrase=3

password    sufficient    /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow

#password    requisite     /lib/security/$ISA/pam_cracklib.so retry=3 difok=1

新密码至少有一位与原来的不同.