这篇博客记录CentOS6怎么限制密码使用的长度、复杂度,过期时间。目的是防止用户使用弱密码,强制用户设置强密码。
Linux的用户密码是一大安全因素。如果你使用弱密码,极有可能会被人暴力破解。很多系统的安全问题都是由于使用弱密码引起的。
做为系统管理员,你应使用复杂的强密码。
1、修改密码复杂度
不知从何讲起,直接贴配置文件吧
配置文件:/etc/pam.d/system-auth,保存即生效
其实system-auth这个文件是个链接文件在同目录的system-auth-ac,这两个修改哪一个都行
1#%PAM-1.0 2#Thisfileisauto-generated. 3#Userchangeswillbedestroyedthenexttimeauthconfigisrun. 4authrequiredpam_env.so 5authsufficientpam_fprintd.so 6authsufficientpam_unix.sonulloktry_first_pass 7authrequisitepam_succeed_if.souid>=500quiet 8authrequiredpam_deny.so 9 10accountrequiredpam_unix.so 11accountsufficientpam_localuser.so 12accountsufficientpam_succeed_if.souid<500quiet 13accountrequiredpam_permit.so 14 15passwordrequisitepam_cracklib.sotry_first_passretry=2type=A+b+4+!difok=3minlen=7dcredit=-1ucredit=-1lcredit=-1ocredit=-1##需要修改的行 16 17passwordsufficientpam_unix.sosha512shadownulloktry_first_passuse_authtok 18passwordrequiredpam_deny.so 19 20sessionoptionalpam_keyinit.sorevoke 21sessionrequiredpam_limits.so 22session[success=1default=ignore]pam_succeed_if.soserviceincrondquietuse_uid 23sessionrequiredpam_unix.so
注解:
我设置的策略是:修改密码可重新输入两次,修改密码时提示A+b+4+! ,新密码必须要和旧密码有3个字符不同,密码长度最低7位,最少包含1位大写数字,最少包含1位大写字母,最少包含1位小写字母,最少包含1位特殊字符
retry=N:此选项定义用户在重试输入多少次密码后,返回一个错误信息,然后不准继续输入。缺省是1次。
difok=N:此选项用来定义新密码中必须有几个字符要与旧密码不同,如果新密码中有1/2以上的字符与旧密码不同时,该新密码就会被接受。
minlen=N:此选项用来设置新密码的最小长度。
dcredit=N:此选项用来设定新密码中可以包含数字的最大数目。
ucredit=N:此选项用来设定新密码中可以包含的大写字母的最大数目。
lcredit=N:此选项用来设定新密码中可以包含的小写字母的最大数目。
ocredit=N:此选项用来设定新密码中可以包含的特殊字符的最大数目。
具体信息大家可以man pam_cracklib来获取帮助,但是有一点我觉得需要注意一下,就是关于密码长度的计算,官方的man解析很不好理解,你会发现dcredit,ucredit,lcredit,ocredit这些的值也可以设置为正数,也可以为负数
设置为正数,就非常不好理解,可以推荐大家看一下这个网友的博客记录:http://blog.sina.com.cn/s/blog_74bceb490102w4os.html
设置为负数,就代表为最少包含的位数,我这里是最少包含1位
配置文件:/etc/login.defs,保存即生效
... 25PASS_MAX_DAYS90##密码最大有效时间 26PASS_MIN_DAYS0##最小密码使用时间 27PASS_MIN_LEN5##密码最小长度 28PASS_WARN_AGE7##密码失效前提前多少天数开始警告; ...
[root@PEAANSIBLEpam.d]#useraddxiaowang [root@PEAANSIBLEpam.d]#chage-lxiaowang Lastpasswordchange:Nov29,2017 Passwordexpires:Feb27,2018 Passwordinactive:never Accountexpires:never Minimumnumberofdaysbetweenpasswordchange:0 Maximumnumberofdaysbetweenpasswordchange:90 Numberofdaysofwarningbeforepasswordexpires:7 [root@PEAANSIBLEpam.d]#
这就是密码的复杂度相关的策略,其实关于这一块后期还是要做SSH的错误登陆限制,这样才是一个完整的体系,SSH登陆限制也是基于pam.d这个模块来实现的,有时间再写吧