1. 程式人生 > >pam密碼策略

pam密碼策略

exp 密碼 phrase 生成 用戶 9.png 接下來 臨時 識別

PAM 的使用歷史

PAM 是關註如何為服務驗證用戶的 API。在使用 PAM 之前,諸如 login(和 rlogintelnetrsh)之類的應用程序在 /etc/passwd 中查找用戶名,然後將兩者相比較並驗證用戶輸入的名稱。所有應用程序使用了這些共享服務,但是並未共享實現細節和配置這些服務的權限。

接下來,應用程序開發人員嘗試編寫自定義過程代碼。在此過程中,需要分離應用程序與安全模塊(通用安全模塊可以在應用程序之間共享並且可以根據需求進行配置)。

PAM 機制將把多個低級別驗證模式集成到高級別 API 中,該 API 將允許以獨立於底層驗證模式的方式編寫使用驗證的程序。PAM 的主要特征表現為通過 /etc/pam.d 或 /etc/pam.conf 文件實現動態驗證配置。

PAM 可以被配置為拒絕某些程序對用戶進行驗證,或者在某些程序嘗試驗證時發出警告。PAM 程序將使用 PAM 模塊(驗證模塊):這些模塊在運行時與應用程序綁定在一起才能工作。

基於PAM實現的密碼策略

需要使用pam_passwdqc.so模塊控制權限

修改 vi /etc/pam.d/system-auth

啟用 pam_passwdqc.so 驗證模塊

上傳到 /lib64/security/ 目錄下

修改

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

規則解釋如下:
1)只包含一種字符的密碼,拒絕(大小寫,數字,特殊字符分別為4種字符)
2)只包含兩種字符的密碼,拒絕
3)如果密碼中被識別出了常用的單詞,那麽最小長度就必須為18位。常用單詞的最小識別長度為3.(由passphrase=3制定)
4)包含三種字符的密碼,最小長度為12位
5) 包含四種字符的密碼,最小長度為12位
6)如果發現本次修改的密碼跟老密碼有4個substring的長度類似,就認為是弱密碼。(match=4 similar=deny)
7) 這個策略對所有用戶都生效。(enforce=everyone )
8)默認情況下,對於輸入的密碼,如果第一個字母是大寫字母,或者最後一個字母為數字,則不會計入密碼字符的種類。比如:Fuck1234,由於第一個F是大寫字母,所以會被認為,該密碼只有小寫字母和數字兩種字符。用disable_firstupper_lastdigit_check 禁止了這種識別。

修改完成後實現 如下

技術分享

生成密碼

可以采用linux自帶的系統密碼工具

如果未安裝

yum install expect.x86_64

參數使用

-l # (length of password, default = 7)
指定密碼的長度,默認是7位數
-d # (min # of digits, default = 2)
指定密碼中數字最少位數,默認是2
-c # (min # of lowercase chars, default = 2)
指定密碼中小寫字母最少位數,默認是2位
-C # (min # of uppercase chars, default = 2)
指定密碼中大寫字母最少位數,默認是2位

-s # (min # of special chars, default = 1)
指定密碼中特殊字符最少位數,默認是1位
-v (verbose, show passwd interaction)

安裝後可以使用 mkpasswd -l 18 -s 4 -c 4 -C 4

普通修改密碼報錯

passwd: Authentication token manipulation error

技術分享

要先輸入舊密碼

臨時處理方式:
可以通過passwd -d test清空test密碼,然後用戶可以自行修改密碼

pam密碼策略