介紹如何在 Linux 中使用 pam_pwquality
模組強制設定使用者的密碼最低複雜度,增加系統安全性。
相關文章:
Linux 停用使用者帳號、設定使用期限教學與範例
Linux 強制使用者下次登入修改密碼教學
Linux 設定使用者密碼使用期限教學與範例
Ubuntu Linux 不重複使用前三次密碼 PAM 設定教學與範例
Linux 停用使用者帳號、設定使用期限教學與範例
Linux 強制使用者下次登入修改密碼教學
Linux 設定使用者密碼使用期限教學與範例
Ubuntu Linux 不重複使用前三次密碼 PAM 設定教學與範例
安裝 pam_pwquality
密碼品質檢查模組
若要在 Ubuntu Linux 中使用 pam_pwquality
密碼品質檢查模組,可使用 apt
安裝 libpam-pwquality
套件:
# 安裝 libpam-pwquality 套件
sudo apt install libpam-pwquality
pam_pwquality
密碼品質設定
開啟 /etc/pam.d/common-password
這個 PAM 的設定檔,找到以下這一行 pam_pwquality.so
的設定值:
password requisite pam_pwquality.so retry=3
在這一行的最後面可以加上多個參數設定,可用的參數與意義如下:
debug
- 啟用除錯功能,將除錯資訊輸出至
syslog
。 retry=N
- 設定使用者輸入密碼的最高嘗試次數,當密碼輸入超過
N
次就會產生錯誤。 difok=N
- 設定新密碼中必須有
N
個字元要與舊密碼不同,預設值為1
。若設定為0
則代表停用相似度檢測,只要新密碼與舊密碼不要完全一樣即可。 minlen=N
- 設定最短的密碼長度為
N
。 dcredit=N
- 若
N
大於或等於0
,則此數值代表密碼中的數字對密碼長度minlen
的最大額外貢獻值。預設值為0
,代表數字沒有任何額外貢獻值。若
N
小於0
,則此數值代表密碼中至少要包含多少個數字。 ucredit=N
- 若
N
大於或等於0
,則此數值代表密碼中的大寫英文字母對密碼長度minlen
的最大額外貢獻值。預設值為0
,代表大寫英文字母沒有任何額外貢獻值。若
N
小於0
,則此數值代表密碼中至少要包含多少個大寫英文字母。 lcredit=N
- 若
N
大於或等於0
,則此數值代表密碼中的小寫英文字母對密碼長度minlen
的最大額外貢獻值。預設值為0
,代表小寫英文字母沒有任何額外貢獻值。若
N
小於0
,則此數值代表密碼中至少要包含多少個小寫英文字母。 ocredit=N
- 若
N
大於或等於0
,則此數值代表密碼中的特殊字元(除了數字、英文字母之外的字元)對密碼長度minlen
的最大額外貢獻值。預設值為0
,代表特殊字元沒有任何額外貢獻值。若
N
小於0
,則此數值代表密碼中至少要包含多少個特殊字元。 minclass=N
- 密碼中至少須包含 N 類型的字元,可用的字元類型有小寫英文字母、大寫英文字母、數字與特殊字元四類。
maxrepeat=N
- 密碼中相同的字元最多只能連續出現
N
個,若一個字元連續出現超過N
次,則密碼就會被拒絕使用。 maxsequence=N
- 密碼中有規則的單調(monotonic)字元最多只能連續出現
N
個,若單調字元連續出現超過N
次,則密碼就會被拒絕使用。常見的單調字元有12345
、fedcb
。 maxclassrepeat=N
- 密碼中有相同類型的字元(大小寫字母、數字、特殊字元)最多只能連續出現
N
個,若相同類型字元連續出現超過N
次,則密碼就會被拒絕使用。 gecoscheck=N
- 若
N
為非0
的數值,則檢查/etc/passwd
的各 GECOS 欄位中,長度超過三的單字是否有被包含在密碼中。預設值為0
,代表不檢查。 dictcheck=N
- 若
N
為非0
的數值,則檢查密碼是否包含於字典檔中,目前使用cracklib
所提供的字典檔進行檢測。預設值為1
,代表進行本項檢測。 usercheck=N
- 若
N
為非0
的數值,則檢查密碼是否包含使用者名稱。預設值為1
,代表進行本項檢測。 enforcing=N
- 若
N
為非0
的數值,則當密碼不合格時,就強制退回密碼,讓使用者重設,若設定為0
,則當密碼不合格時就只會顯示警告訊息。預設值為1
。 badwords=word1 word2 word3 ...
- 指定密碼中不可以包含的字串。
dictpath=/path/to/dict
- 自訂
cracklib
字典檔路徑。 enforce_for_root
- 設定
root
管理者亦需遵守密碼檢查的各種規定。此功能預設為關閉,代表root
管理者輸入不符合規定的密碼時,只會顯示警告訊息,但是依然可以使用指定的密碼。 local_users_only
- 指定
pam_pwquality
模組只針對存在於/etc/passwd
的使用者進行密碼品質檢查。
實際設定範例
在實務上,我們可以依照自己的需求進行設定:
# 允許 3 次輸入密碼 # 密碼至少包含 1 個數字 # 密碼至少包含 1 個大寫字母 # 密碼至少包含 1 個特殊字元 # 密碼長度至少為 8 password requisite pam_pwquality.so retry=3 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0 minlen=8
若一行設定很長,可以用反斜線跳脫行尾,分成多行來寫:
# 允許 3 次輸入密碼 # 密碼至少包含大寫英文、小寫英文、數字、特殊字元四類中的三類 # 密碼長度至少為 12 # 密碼中相同的字元最多只能連續出現 2 個 password requisite pam_pwquality.so \ retry=3 minclass=3 minlen=12 maxrepeat=2