/etc/login.defs文件,里面幾個(gè)選項(xiàng)
PASS_MAX_DAYS 90 #密碼最長(zhǎng)過(guò)期天數(shù)
PASS_MIN_DAYS 80 #密碼最小過(guò)期天數(shù)
PASS_MIN_LEN 10 #密碼最小長(zhǎng)度
PASS_WARN_AGE 7 #密碼過(guò)期警告天數(shù)
修改/etc/pam.d/system-auth文件
找到 password requisite pam_cracklib.so這么一行替換成如下:
password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict
參數(shù)含義:
嘗試次數(shù):5
最少不同字符:3
最小密碼長(zhǎng)度:10
最少大寫(xiě)字母:1
最少小寫(xiě)字母:3
最少數(shù)字:3
密碼字典:/usr/share/cracklib/pw_dict
pam_cracklib.so 才是控制密碼復(fù)雜度的關(guān)鍵文件
/lib/security/pam_cracklib.so
# rpm -qa | grep cracklib
cracklib-2.8.9-3.1 \\檢查軟件是否安裝
cracklib-dicts-2.8.9-3.1 \\密碼字典文件
聲明:login.defs主要是控制密碼的有效期。對(duì)密碼進(jìn)行時(shí)間管理
密碼的復(fù)雜度的判斷是通過(guò)pam模塊控制來(lái)實(shí)現(xiàn)的,具體的模塊是pam_cracklibpam_cracklib 的參數(shù)介紹:
# man pam_cracklib \\手冊(cè)分析該模塊的作用
可用參數(shù)說(shuō)明
debug
此選項(xiàng)使模塊的信息寫(xiě)入到syslog(3),顯示模塊的行為(此選項(xiàng)不寫(xiě)密碼信息到日志文件)。
type=XXX
默認(rèn)的動(dòng)作是模塊使用以下提示時(shí),要求口令:“新的UNIX密碼:“和”重新輸入U(xiǎn)NIX密碼:“。默認(rèn)的Word UNIX可以被替換為這個(gè)選項(xiàng)。
retry=N
改變輸入密碼的次數(shù),默認(rèn)值是1。就是說(shuō),如果用戶輸入的密碼強(qiáng)度不夠就退出??梢允褂眠@個(gè)選項(xiàng)設(shè)置輸入的次數(shù),以免一切都從頭再來(lái)。
difok=N
默認(rèn)值為10。這個(gè)參數(shù)設(shè)置允許的新、舊密碼相同字符的個(gè)數(shù)。不過(guò),如果新密碼中1/2的字符和舊密碼不同,則新密碼被接受。
difignore=N
多少個(gè)字符的密碼應(yīng)收到difok將被忽略。默認(rèn)為23
minlen=N
新的最低可接受的大小密碼(加一個(gè),如果沒(méi)有禁用學(xué)分這是默認(rèn)值)。除了在新密碼的字符數(shù),貸方(在長(zhǎng)度+1),給出了各種人物的不同種類(其他,大寫(xiě),小寫(xiě),數(shù)字)。此參數(shù)的默認(rèn)值是9,它是一個(gè)老式的UNIX密碼的字符相同類型的所有好,但可能過(guò)低,利用一個(gè)MD5的系統(tǒng)增加安全性。請(qǐng)注意,有一個(gè)在Cracklib本身長(zhǎng)度的限制,一“的方式太短“4極限是硬編碼和定義的限制(6),將不參考minlen檢查對(duì)。如果你想允許密碼短短5個(gè)字符,你不應(yīng)該使用這個(gè)模塊。
dcredit=N
限制新密碼中至少有多少個(gè)數(shù)字。
ucredit=N
限制新密碼中至少有多少個(gè)大寫(xiě)字符。
lcredit=N
限制新密碼中至少有多少個(gè)小寫(xiě)字符。
ocredit=N
限制新密碼中至少有多少個(gè)其它的字符。
此參數(shù)用于強(qiáng)制模塊不提示用戶的新密碼,但以前使用的堆疊模塊提供的密碼之一。
dictpath=/path/to/dict //注:密碼字典,這個(gè)是驗(yàn)證用戶的密碼是否是字典一部分的關(guān)鍵
cracklib密碼強(qiáng)度檢測(cè)過(guò)程:
首先檢查密碼是否是字典的一部分,如果不是,則進(jìn)行下面的檢查
密碼強(qiáng)度檢測(cè)過(guò)程–>
新密碼是否舊密碼的回文–>
新密碼是否只是就密碼改變了大小寫(xiě)–>
新密碼是否和舊密碼很相似–>
新密碼是否太短–>
新密碼的字符是否是舊密碼字符的一個(gè)循環(huán) 例如舊密碼:123 新密碼:231 –>
這個(gè)密碼以前是否使用過(guò)
/etc/pam.d/system-auth
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 \\復(fù)雜度驗(yàn)證
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
實(shí)例:
password required pam_cracklib.so \
difok=3 minlen=15 dcredit=2 ocredit=2
允許有3個(gè)新、舊密碼相同字符的
最小長(zhǎng)度15位 和至少包含2數(shù)字、至少包含2個(gè)特殊字符數(shù)
password required pam_cracklib.so \
dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0 minlen=8
最小長(zhǎng)度為8和至少1位數(shù)字,1位大寫(xiě)字母,和另外1個(gè)字符的密碼
注意這個(gè)設(shè)置對(duì)于root沒(méi)有作用,
只針對(duì)普通用戶修改自己密碼時(shí)起作用