1. 程式人生 > >Linux-密碼複雜度限制

Linux-密碼複雜度限制

前言

設定一個複雜的密碼,可以有效的提升系統的安全性。在Linux上有PAM(Pluggable Authentication Modules)裡面有一個pam_cracklib.so來控制密碼的複雜度。

Linux-密碼複雜度限制

 


配置檔案路徑

CentOS / RHEL / RedHat / Fedora : /etc/pam.d/system-auth

Linux-密碼複雜度限制

 


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 :密碼字典,這個是驗證使用者的密碼是否是字典一部分的關鍵

Linux-密碼複雜度限制

 

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生效