密码复杂度


本文目的是在于限制用户修改自己密码或root修改自己密码时,给出长度,复杂度等等限制,防止弱密码被黑客等不法分子破解

服务器系统:centos 6.5 centos 6.8

 

1.密码有效期

复制代码
cp /etc/login.defs /etc/login.defs.bak
vim /etc/login.defs # Password aging controls: # # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 90 PASS_MIN_DAYS 80 PASS_MIN_LEN 10 PASS_WARN_AGE 7
复制代码

 

2.密码复杂度

之所以选择passwdqc,是因为网上找了一下,发现绝大多数的linux密码强度策略限制都只针对非root用户,而passwdqc可以限定到root用户。

复制代码
cp /etc/pam.d/system-auth-ac /etc/pam.d/system-auth-ac.bak
vim /etc/pam.d/system-auth 。。。。。。 #password requisite pam_cracklib.so try_first_pass retry=3 type= ##注释这一行,添加下一行 password requisite /lib/security/$ISA/pam_passwdqc.so min=disabled,24,16,12,10 passphrase=3 max=40 enforce=everyone retry=3 similar=deny password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password required pam_deny.so
复制代码

 

也可以使用下面配置:

password required  pam_passwdqc.so min=disabled,disabled,12,8,8 max=30 passphrase=3 match=4 similar=deny enforce=everyone 
disable_firstupper_lastdigit_check

规则解释如下: 
1)只包含一种字符的密码,拒绝(大小写,数字,特殊字符分别为4种字符) 
2)只包含两种字符的密码,拒绝 
3)如果密码中被识别出了常用的单词,那么最小长度就必须为12位。常用单词的最小识别长度为3.(由passphrase=3制定) 
4)包含三种字符的密码,最小长度为8位 
5) 包含四种字符的密码,最小长度为8位 
6)如果发现本次修改的密码跟老密码有4个substring的长度类似,就认为是弱密码。(match=4 similar=deny) 
7) 这个策略对所有用户都生效。(enforce=everyone ) 
8)默认情况下,对于输入的密码,如果第一个字母是大写字母,或者最后一个字母为数字,则不会计入密码字符的种类。比如:Fuck1234,由于第一个F是大写字母,所以会被认为,该密码只有小写字母和数字两种字符。这个非常奇怪,我也不知道原因是什么。我们用disable_firstupper_lastdigit_check 禁止了这种识别。 

3.测试

复制代码
echo "mhokwyaofnrd"|passwd --stdin root ##仅仅小写,不通过 echo "IEJVRRzfdHPI"|passwd --stdin root ##大写,小写,不通过 echo "cyd******Ab8C"|passwd --stdin root ##大小写,特殊字符,通过。 echo "Jes&us*****12"|passwd --stdin root ##通过
复制代码

 

如果出现下面模块不支持的情况

本文目的是在于限制用户修改自己密码或root修改自己密码时,给出长度,复杂度等等限制,防止弱密码被黑客等不法分子破解

服务器系统:centos 6.5 centos 6.8

 

1.密码有效期

复制代码
cp /etc/login.defs /etc/login.defs.bak
vim /etc/login.defs # Password aging controls: # # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 90 PASS_MIN_DAYS 80 PASS_MIN_LEN 10 PASS_WARN_AGE 7
复制代码

 

2.密码复杂度

之所以选择passwdqc,是因为网上找了一下,发现绝大多数的linux密码强度策略限制都只针对非root用户,而passwdqc可以限定到root用户。

复制代码
cp /etc/pam.d/system-auth-ac /etc/pam.d/system-auth-ac.bak
vim /etc/pam.d/system-auth 。。。。。。 #password requisite pam_cracklib.so try_first_pass retry=3 type= ##注释这一行,添加下一行 password requisite /lib/security/$ISA/pam_passwdqc.so min=disabled,24,16,12,10 passphrase=3 max=40 enforce=everyone retry=3 similar=deny password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password required pam_deny.so
复制代码

 

也可以使用下面配置:

password required  pam_passwdqc.so min=disabled,disabled,12,8,8 max=30 passphrase=3 match=4 similar=deny enforce=everyone 
disable_firstupper_lastdigit_check

规则解释如下: 
1)只包含一种字符的密码,拒绝(大小写,数字,特殊字符分别为4种字符) 
2)只包含两种字符的密码,拒绝 
3)如果密码中被识别出了常用的单词,那么最小长度就必须为12位。常用单词的最小识别长度为3.(由passphrase=3制定) 
4)包含三种字符的密码,最小长度为8位 
5) 包含四种字符的密码,最小长度为8位 
6)如果发现本次修改的密码跟老密码有4个substring的长度类似,就认为是弱密码。(match=4 similar=deny) 
7) 这个策略对所有用户都生效。(enforce=everyone ) 
8)默认情况下,对于输入的密码,如果第一个字母是大写字母,或者最后一个字母为数字,则不会计入密码字符的种类。比如:Fuck1234,由于第一个F是大写字母,所以会被认为,该密码只有小写字母和数字两种字符。这个非常奇怪,我也不知道原因是什么。我们用disable_firstupper_lastdigit_check 禁止了这种识别。 

3.测试

复制代码
echo "mhokwyaofnrd"|passwd --stdin root ##仅仅小写,不通过 echo "IEJVRRzfdHPI"|passwd --stdin root ##大写,小写,不通过 echo "cyd******Ab8C"|passwd --stdin root ##大小写,特殊字符,通过。 echo "Jes&us*****12"|passwd --stdin root ##通过
复制代码

 

如果出现下面模块不支持的情况


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM