Linux-密码复杂度限制
前言
设置一个复杂的密码,可以有效的提升系统的安全性。在Linux上有PAM(Pluggable Authentication Modules)里面有一个pam_cracklib.so来控制密码的复杂度。
配置文件路径
CentOS / RHEL / RedHat / Fedora : /etc/pam.d/system-auth
pam_cracklib.so
pam_cracklib.so中有很多参数可以选择,具体配置如下:
debug : 此选为记录Syslog日志。
type=safe : 输入新密码的时候给予的提示。
retry=N : 改变输入密码的次数,默认值是1。就是说,如果用户输入的密码强度不够就退出。可以使用这个选项设置输入的次数,以免一切都从头再来。
difok=N : 默认值为8。这个参数设置允许的新、旧密码相同字符的个数。
difignore=N : 多少个字符的密码应收到difok将被忽略。默认为23
minlen=N : 新的最低可接受的大小密码。除了在新密码的字符数。此参数的默认值是9,它是一个老式的UNIX密码的字符相同类型的所有好,但可能过低,利用一个MD5的系统增加安全性。
dcredit=N : 限制新密码中至少有多少个数字。
ucredit=N : 限制新密码中至少有多少个大写字符。
lcredit=N : 限制新密码中至少有多少个小写字符。
ocredit=N : 限制新密码中至少有多少个其它的字符。此参数用于强制模块不提示用户的新密码,但以前使用的堆叠模块提供的密码之一。
dictpath=/data/dict :密码字典,这个是验证用户的密码是否是字典一部分的关键
cracklib密码强度检测过程:
1、首先检查密码是否是字典的一部分,如果不是,则进行下面的检查
2、密码强度检测过程
3、新密码是否旧密码的回文
4、新密码是否只是就密码改变了大小写
5、新密码是否和旧密码很相似
6、新密码是否太短
7、新密码的字符是否是旧密码字符的一个循环 例如旧密码:123 新密码:231
8、这个密码以前是否使用过。
例子
password required pam_cracklib.so difok=3 minlen=15 dcredit=2 ocredit=2
允许有3个新、旧密码相同字符的、最小长度15位 和至少包含2数字、至少包含2个特殊字符数
password required pam_cracklib.so dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0 minlen=8 enforce_for_root
最小长度为8和至少1位数字,1位大写字母,和另外1个字符的密码,此设置对root生效