密碼策略之centos密碼長度


  在使用Linux的過程中,使用一個復雜的口令是十分有必要的,口令的安全性作為等保的一部分也是需要被嚴格審計的,今天我們就來聊聊有關密碼長度的問題.

  網上非常多的教程都把對於密碼長度的設置指向了配置文件 /etc/login.defs中的PASS_MIN_LEN參數和配置文件 /etc/pam.d/system-auth文件中pam_cracklib.so模塊的min_len參數,首先我們來看一看配置文件 /etc/login.defs

 

 

  本人實驗的操作系統是centos6,如圖所示,簡單明了,對新密碼長度的最小值作出限制,不過,這個值是無效的!!!至少我所實驗的centos6、7版本都是無效的!!不信的話大家可以自己實驗一下,把PASS_MIN_LEN這個參數改成一個你想實驗的值,再使用非root用戶來更改密碼測試一下,測試后都會發現,這個參數是不生效的.至於實際原因,我查閱了很多資料也是沒有找到答案,可能這個參數在centos6之前的版本是有效的,但是隨着centos的更新,使用了PAM驗證后,這個參數僅僅是一個擺設罷了.

  接下來我們聊一聊 /etc/pam.d/system-auth文件中pam_cracklib.so,實際上對密碼長度起到作用的是pam機制里的pam_cracklib.so模塊!修改密碼時,通過命令passwd去調用,那具體是怎么調用的呢?通過查閱資料,是通過 /etc/pam.d/passwd這個配置文件做到的,配置文件是可以互相調用的,passwd文件里的第三行password substack system-auth就調用了system-auth配置文件,其中主要調用的就是system-auth配置文件中的pam_cracklib.so模塊,平時主要用的有如下參數:

  • minlen=數字
  • ucredit=數字
  • lcredit=數字
  • dcredit=數字
  • ocredit=數字

  minlen為最小密碼的長度;

  ucredit<0時,最少包含n個大寫字母,ucredit>0時,最多包含n個大寫字母;

  lcredit同理,只不過代表的是小寫字母;

  dcredit同理,只不過代表的是數字;

  ocredit同理,只不過代表的是特殊符號;

  如上都是網上資料和某安全廠商講課時給出的解釋,但是通過實驗得出,這些答案並不准確!再經過長時間的資料搜索,終於找到了一個准確的解釋,來自https://linux.die.net/man/8/pam_cracklib(man命令的說明文檔),得出:

  minlen確實是最小密碼長度的意思,但是當/etc/pam.d/system-auth配置文件中pam_cracklib.so模塊中有參數ucredit、lcredit、dcredit、ocredit大於0時沒有這些參數只有minlen時,完全不是上面所說那樣“最多要包含多少個數字或最少包含多少個數字”,而是minlen的長度的變化,比如ocredit=2時,就代表有2個特殊字符的長度額外能加1,當你設置密碼@#$$,它的長度被算作6而不是4,因為有2個特殊字符的長度被看做是2(額外加了個1),而從第3個特殊字符開始沒有此類變化,長度仍被視作是1,所以長度被算作6而不是4,其余的大小寫字母和數字的值大於零時,也是這個意思,而他們的默認值都是1(不設置時),也就是會有1個字符的長度額外加1,所以如果你什么都不設置,就設置minlen=8的話,理論上你的新密碼只要4類字符都包含,那么4個字符就夠了,比如:1Qq!,理論上是可以的,但是!!!!會提示是密碼過短,因為除了minlen參數對長度有限制,還有個優先級大於minlen參數的存在,那就是cracklib內部代碼對其有限制!代碼就不貼了,代碼寫的是:當長度小於4,會輸出it’s WAY too short,如果大於4小於6,會輸出it is too short.所以當密碼小於6時,實際是由cracklib內部代碼控制,超過6之后,就由minlen控制了!這次大家終於明白了吧!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM