• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Linux 強制密碼最低複雜度 pam_pwquality 設定教學與範例

介紹如何在 Linux 中使用 pam_pwquality 模組強制設定使用者的密碼最低複雜度,增加系統安全性。

相關文章:
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

參考資料

  • LinuxTechi:How to Enforce Password Policies in Linux (Ubuntu / CentOS)
  • 2 Day Geek:How to set password complexity on Linux
  • Red Hat:How to configure password complexity for all users including root using pam_passwdqc.so
  • 笑傲紅塵路:使用PAM模組管理使者帳戶安全性 (Managing the account security with PAM)

分類:Linux 標籤:資訊安全

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide