修改linux系统用户密码长度和复杂性



之前在修改Linux密码长度的时候都是去修改/etc/login.defs文件的pass_min_len 参数,可是地球人都知道,这个参数根本不具备强制性,用户一样可以使用短密码.


真正要对密码复杂性进行限制,还需要cracklib来完成.


红帽的系统一般都已经安装了, 可以rpm -qa|grep crack来查看,一般是两个包



cracklib参数主要有:

1.debug

   用于syslog日志记录 

2.type=abcd

   当修改密码时,典型的提示信息是:


  New linux password: 


  Retype Linux password:


  可以通过abcd来替换linux这个单词

3.retry=3

   用户有几次出错的机会

4.difok=5

   新密码中至少有几个字符是和以前的密码不同的. 

5.difignore=3

    忽略新密码中不同字符之前的几个字母. 


6.minlen=8 


    最小密码长度 


7.dcreditr=5

    密码中最多几个数字

8.ucredit=5 

   密码中最多几个大些字母.

 9.lcredit=5 

   新密码中最多几个消协字母


10.ocredit=5


   新密码中最多几个特殊字符

11.use_authtok


   使用密码字典中的密码



cracklib密码强度检测过程


首先检查密码是否是字典的一部分,如果不是,则进行下面的检查

 

1、密码强度检测过程

 

2、新密码是否旧密码的回文

 

3、新密码是否只是就密码改变了大小写

 

4、新密码是否和旧密码很相似

 

5、新密码是否太短

 


6、新密码的字符是否是旧密码字符的一个循环

 

    例如旧密码:123

       新密码:231


7、这个密码以前是否使用过

 



配置样例:



/etc/pam.d/system-auth


修改


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


       为


       password requisite /lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 difok=5







 

在linux,设置密码复杂度的方法有几个
1. 一个是在/etc/login.defs文件,里面几个选项
PASS_MAX_DAYS   90  #密码最长过期天数
PASS_MIN_DAYS   80  #密码最小过期天数
PASS_MIN_LEN    10  #密码最小长度
PASS_WARN_AGE   7   #密码过期警告天数

2. 另外一个方法是,修改/etc/pam.d/system-auth文件
找到 password requisite pam_cracklib.so这么一行替换成如下:
password  requisite pam_cracklib.so retry=5  difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict

参数含义:
尝试次数:5   
最少不同字符:3      
最小密码长度:10         
最少大写字母:1      
最少小写字母:3       
最少数字:3       
密码字典:/usr/share/cracklib/pw_dict

这样设置好,你可以做一下测试,不过需要先退出root,因为root用户并不会受这些限制,它可以设置任意的密码。