Linux用戶密碼的有效期,是否可以修改密碼可以通過login.defs文件控制.對login.defs文件修只影響后續建立的用戶,如果要改變以前建立的用戶的有效期等可以使用chage命令.
Linux用戶密碼的復雜度可以通過pam pam_cracklib module或pam_passwdqc module控制,兩者不能同時使用. 個人感覺pam_passwdqc更好用.
/etc/login.defs密碼策略
PASS_MAX_DAYS 99999 #密碼的最大有效期, 99999:永久有期
PASS_MIN_DAYS 0 #是否可修改密碼,0可修改,非0多少天后可修改
PASS_MIN_LEN 5 #密碼最小長度,使用pam_cracklib module,該參數不再有效
PASS_WARN_AGE 7 #密碼失效前多少天在用戶登錄時通知用戶修改密碼
pam_cracklib主要參數說明:
tretry=N:重試多少次后返回密碼修改錯誤
difok=N:新密碼必需與舊密碼不同的位數
dcredit=N: N >= 0:密碼中最多有多少個數字;N < 0密碼中最少有多少個數字.
lcredit=N:小寶字母的個數
ucredit=N大寶字母的個數
credit=N:特殊字母的個數
minclass=N:密碼組成(大/小字母,數字,特殊字符)
pam_passwdqc主要參數說明:
mix:設置口令字最小長度,默認值是mix=disabled。
max:設置口令字的最大長度,默認值是max=40。
passphrase:設置口令短語中單詞的最少個數,默認值是passphrase=3,如果為0則禁用口令短語。
atch:設置密碼串的常見程序,默認值是match=4。
similar:設置當我們重設口令時,重新設置的新口令能否與舊口令相似,它可以是similar=permit允許相似或similar=deny不允許相似。
random:設置隨機生成口令字的默認長度。默認值是random=42。設為0則禁止該功能。
enforce:設置約束范圍,enforce=none表示只警告弱口令字,但不禁止它們使用;enforce=users將對系統上的全體非根用戶實行這一限制;enforce=everyone將對包括根用戶在內的全體用戶實行這一限制。
non-unix:它告訴這個模塊不要使用傳統的getpwnam函數調用獲得用戶信息,
retry:設置用戶輸入口令字時允許重試的次數,默認值是retry=3
密碼復雜度通過/etc/pam.d/system-auth實施
如:
要使用pam_cracklib將注釋去掉,把pam_passwdqc.so注釋掉即可.
#password requisite /lib/security/$ISA/pam_cracklib.so retry=3 difok=1
password requisite /lib/security/$ISA/pam_passwdqc.so min=disabled,24,12,8,7 passphrase=3
password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow
#password requisite /lib/security/$ISA/pam_cracklib.so retry=3 difok=1
新密碼至少有一位與原來的不同
PASS_MIN_DAYS參數則設定了在本次密碼修改后,下次允許更改密碼之前所需的最少天數。PASS_WARN_AGE的設定則指明了在口令失效前多少天開始通知用戶更改密碼(一般在用戶剛剛登陸系統時就會收到警告通知)。
你也會編輯/etc/default/useradd文件,尋找INACTIVE和EXPIRE兩個關鍵詞:
INACTIVE=14
EXPIRE=
這會指明在口令失效后多久時間內,如果口令沒有進行更改,則將賬戶更改為失效狀態。在本例中,這個時間是14天。而EXPIRE的設置則用於為所有新用戶設定一個密碼失效的明確時間(具體格式為“年份-月份-日期”)。
顯然,上述這些設定更改之后,只能影響到新建立的用戶。要想修改目前已存在的用戶具體設置,需要使用chage工具。
# chage -M 60 joe
這條命令將設置用戶joe的PASS_MAX_DAYS為60,並修改對應的shadow文件。
你可以使用chage -l的選項,列出當前的賬戶時效情況,而使用-m選項是設置PASS_MIN_DAYS,用-W則是設置PASS_WARN_AGE,等等。chage工具可以讓你修改特定賬戶的所有密碼時效狀態。
注意,chage僅僅適用於本地系統的賬戶,如果你在使用一個類似LDAP這樣的認證系統時,該工具會失效。如果你在使用LDAP作為認證,而你又打算使用chage,那么,哪怕僅僅是試圖列出用戶密碼的時效信息,你也會發現chage根本不起作用。
制定一項策略,定義多長時間一個密碼必須進行更改,然后強制執行該策略,是非常不錯的一個做法。在解雇了某個雇員后,口令時效策略會保證該雇員不可能在被解雇3個月后發現他的口令依然可用。即使系統管理員忽略了刪除他的帳號,該帳號也會因密碼時效策略而被自動鎖定。當然,這一點並不能成為不及時刪除該雇員帳號的理由,但是這個策略的確提供了一層額外的安全防護,尤其是在過去常常忽視及時清理帳號的情況下。