如何在 Linux 上設置密碼策略
假設你已經在你的 Linux 系統上使用了 PAM (Pluggable Authentication Modules,插入式驗證模塊),因為這些年所有的 Linux 發行版都在使用它。
準備工作
安裝 PAM 的 cracklib 模塊,cracklib 能提供額外的密碼檢查能力。
Debian、Ubuntu 或 Linux Mint 系統上:
$ sudo apt-get install libpam-cracklib
CentOS、Fedora、RHEL 系統已經默認安裝了 cracklib PAM 模塊,所以在這些系統上無需執行上面的操作。
為了強制實施密碼策略,我們需要修改 /etc/pam.d 目錄下的 PAM 配置文件。一旦修改,策略會馬上生效。
注意:此教程中的密碼策略只對非 root 用戶有效,對 root 用戶無效。
禁止使用舊密碼
找到同時有 「password」 和 「pam_unix.so」 欄位並且附加有 「remember=5」 的那行,它表示禁止使用最近用過的5個密碼(己使用過的密碼會被保存在 /etc/security/opasswd 下面)。
Debian、Ubuntu 或 Linux Mint 系統上:
$ sudo vi /etc/pam.d/common-password
password [success=1 default=ignore] pam_unix.so obscure sha512 remember=5
$ sudo vi /etc/pam.d/system-auth
password sufficient pamunix.so sha512 shadow nullok tryfirstpass useauthtok remember=5
設置最短密碼長度
找到同時有 「password」 和 「pam_cracklib.so」 欄位並且附加有 「minlen=10」 的那行,它表示最小密碼長度為(10 - 類型數量)。這裡的 「類型數量」 表示不同的字元類型數量。PAM 提供4種類型符號作為密碼(大寫字母、小寫字母、數字和標點符號)。如果你的密碼同時用上了這4種類型的符號,並且你的 minlen 設為10,那麼最短的密碼長度允許是6個字元。
Debian、Ubuntu 或 Linux Mint 系統上:
$ sudo vi /etc/pam.d/common-password
password requisite pam_cracklib.so retry=3 minlen=10 difok=3
CentOS、Fedora、RHEL 系統上:
$ sudo vi /etc/pam.d/system-auth
password requisite pam_cracklib.so retry=3 difok=3 minlen=10
設置密碼複雜度
找到同時有 「password」 和 「pam_cracklib.so」 欄位並且附加有 「ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1」 的那行,它表示密碼必須至少包含一個大寫字母(ucredit),兩個小寫字母(lcredit),一個數字(dcredit)和一個標點符號(ocredit)。
Debian、Ubuntu 或 Linux Mint 系統上:
$ sudo vi /etc/pam.d/common-password
password requisite pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
CentOS、Fedora、RHEL 系統上:
$ sudo vi /etc/pam.d/system-auth
password requisite pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
設置密碼過期期限
編輯 /etc/login.defs 文件,可以設置當前密碼的有效期限,具體變數如下所示:
$ sudo vi /etc/login.defs
PASSMAXDAYS 150 PASSMINDAYS 0 PASSWARNAGE 7
這些設置要求用戶每6個月改變他們的密碼,並且會提前7天提醒用戶密碼快到期了。
如果你想為每個用戶設置不同的密碼期限,使用 chage 命令。下面的命令可以查看某個用戶的密碼限期:
$ sudo chage -l xmodulo
Last password change : Dec 30, 2013 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
默認情況下,用戶的密碼永不過期。
下面的命令用於修改 xmodulo 用戶的密碼期限:
$ sudo chage -E 6/30/2014 -m 5 -M 90 -I 30 -W 14 xmodulo
上面的命令將密碼期限設為2014年6月3日。另外,修改密碼的最短周期為5天,最長周期為90天。密碼過期前14天會發送消息提醒用戶,過期後帳號會被鎖住30天。
via: http://xmodulo.com/2013/12/set-password-policy-linux.html
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive