CentOS密码复杂度配置通过/etc/pam.d/system-auth文件中的pam_cracklib.so模块来实现。
首先查看/etc/pam.d/system-auth文件
可以看到当前并没有看到pam_cracklib.so模块
查找资料发现
pam_pwquality.so是兼容pam_cracklib.so模块的,所以pam_cracklib.so的选项也适用于pam_pwquality.so
在system-auth文件中 pam_pwquality.so后添加minlen=8 dcredit=-2 ucredit=-1 lcredit=-1 ocredit=-1
参数含义:密码长度最小为8位,数字出现的最少次数为2次,大写字母出现最少1次,小写字母出现最少1次,特殊字符出现最少1次
保存退出后,进行测试密码复杂度配置是否生效
新建一个test账户,使用root账户设置test账户的密码为test,密码修改成功。(证明root账户不受pam认证规则的限制)
然后切换到test账户设置test账户的密码。这里尝试设置密码为Pw39@。
报错提示大写字母少于8位,说明minlen=8已经生效。
接下来尝试设置密码为Pwqwert@
报错提示数字少于2位,说明dcredit=-2已经生效。
接下来尝试设置密码为pw12qwer@
报错提示大写字母少于1位,说明ucredit=-1已经生效。
passwd:Have exhausted maximum number of retries for service(passwd:已经用尽了最多可重试的服务次数),说明retry=3已经生效。
接下来重新设置密码,尝试设置密码为PW12QWER@
报错提示小写字母少于1位,说明lcredit=-1已经生效。
接下来尝试设置密码为Pw12qwer
报错提示特殊字符少于1位,说明ocredit=-1已经生效。
限制root用户
vi etc/pam.d/system-auth
在sysstem-auth文件中pam_pwquality.so行添加enforce_for_root
然后测试是否root被限制,也要遵守密码复杂度策略
用root账户设置test账户密码为Pw12qwer
报错提示特殊字符少于1位,说明root用户已经被限制,也要遵守pam认证规则。