CentOS7密码复杂度配置

CentOS7/RHEL7 开始使用pam_pwquality模块进行密码复杂度策略的控制管理。pam_pwquality替换了原来Centos6/RHEL6中的pam_cracklib模块,并向后兼容。

使用pam_pwquality模块设置密码复杂度

可以通过两种方式实现:

  1. 直接指定pam_pwquality模块参数,即在/etc/pam.d/system-auth中的“password    requisite     pam_pwquality.so”行尾添加具体参数,比如“minlen=16 ucredit=-1 lcredit=-1 ocredit=-1 dcredit=-1”,表示最小密码长度16位,数字,大小写字母,特殊字符均至少包含1位。添加/etc/pam.d/system-auth pam_pwquality模块参数
  2. 通过修改/etc/security/pwquality.conf参数文件,定义密码复杂度规则。修改pwquality.conf参数文件有2种方法,可以参考“CentOS7 设置密码规则” by shaonbean

         (1)直接vi或vim编辑器 ,或者甚至用sed命令,修改/etc/security/pwquality.conf

         (2)使用authconfig命令修改,修改后最终会体现在/etc/security/pwquality.conf文件中

authconfig修改密码复杂度策略
使用authconfig修改密码复杂度策略

 

centos7如何继续使用pam_cracklib模块检验密码复杂度

    由于Centos7默认取消了对pam_cracklib模块的使用,配置文件/etc/pam.d/system-auth中没有pam_cracklib.so相关的条目。

    有同学直接在/etc/pam.d/system-auth文件末尾添加“password    requisite     pam_cracklib.so try_first_pass retry=3 type=  minlen=16 ucredit=-1 lcredit=-1 ocredit=-1 dcredit=-1” ,然后发现实际上密码复杂度策略并没有生效。

    经测试是因为位置不对,把上面的语句添加在“pam_pwquality.so”所在行的前面,即可使策略生效。如下所示:

centos7使用pam_cracklib模块检验密码复杂度
centos7如何继续使用pam_cracklib模块检验密码复杂度

参考

(1)pam_pwquality(8) - Linux man page

(2)Administering Local Password Policies in CentOS 7

(3)CentOS 7 设置密码规则