原文地址:http://xmodulo.com/2013/12/set-password-policy-linux.html
由於本人水平有限,如有疑問,可以留言討論或者發郵件給我,謝謝!
對於用戶賬戶的管理是系統管理員最重要的工作之一。尤其是,對於任何自稱安全的linux系統,最受關心的應該是密碼安全問題。在本教程中,我將介紹如何在linux上設置嚴密的密碼策略。
我假設你的linux系統是最近的linux發行版,那麼你正在使用的應該是PAM(可插拔認證模塊)。
1.准備
安裝一個PAM模塊來啟用cracklib支持,這可以提供額外的密碼檢查功能。
在Debin,Ubuntu或者Linux Mint使用命令:
sudo apt-get install libpam-cracklib
這個模塊在CentOS,Fedora或者RHEL默認安裝了。所以在這些系統上就沒有必要安裝了。
如要強制執行密碼策略,我們需要修改/etc/pam.d這個與身份驗證相關的文件。這個文件會在修改後立即生效。
請注意,本教程中的密碼規則只有在非root用戶更改密碼時強制執行。
2.避免重復使用舊密碼
尋找同時包含“password”和"pam_unix.so"的行,然後再這行後面加上“remember=5”。這將防止5個最近使用過的密碼被用來設置為新密碼(通過將它們存放在/etc/security/opasswd文件中)。
在Debin,Ubuntu或者Linux Mint使用命令:
sudo vi /etc/pam.d/common-password
修改內容:
password [success=1 default=ignore] pam_unix.so obscure sha512 remember=5
在Fedora,CentOS或RHEL使用命令:
sudo vi /etc/pam.d/system-auth
修改內容:
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
3.設置最小密碼長度
尋找同時包含“password”和“pam_cracklib.so”的一行,並在後面加上“minlen=10”。這將強行設置密碼的最小密碼長度為10位,其中<# of types>多少個不同類型的字符在密碼中使用。有四種符號類型(大寫、小寫、數字和符號)。所以如果使用所有四種類型的組合,並指定最小長度為10,所允許的簡單密碼部分將是6位。
在Debin,Ubuntu或者Linux Mint使用命令:
sudo vi /etc/pam.d/common-password
修改內容:
password requisite pam_cracklib.so retry=3 minlen=10 difok=3
在Fedora,CentOS或RHEL使用命令:
sudo vi /etc/pam.d/system-auth
修改內容:
password requisite pam_cracklib.so retry=3 difok=3 minlen=10
4.設置密碼復雜度
尋找同時包含“password”和“pam_cracklib.so”的一行,並在後面加上“ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1”。這將迫使你在密碼中至少包括一個大寫字母、兩個小寫字母、一個數字和一個符號。
在Debin,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
在Fedora,CentOS或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
5.設置密碼的有效期
要設置當前密碼的最大有效期,就修改/etc/login.defs文件的下列變量:
sudo vi /etc/login.def
修改內容:
PASS_MAX_DAYS 150
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
這將迫使每一位用戶每半年更改一次他們的密碼,並且在密碼過期之前七天發送密碼過期還有幾天到等等的警告信息給用戶(到最後甚至在用戶開機登錄時強制用戶更改密碼,不然無法進入系統(個人在linux程序設計中看到的知識,非原作者觀點))。如果你想基於不同的用戶使用密碼期限功能,那就使用chage命令。要查看針對特別用戶的密碼過期策略使用的命令如下:
sudo chage -l xmodulo
注意:xmodule是原作者在linux系統中使用的用戶名。
顯示如下:
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月30日過期。並且,密碼更改時間間隔的最大/最小數量分別為5和90。在一個密碼過期後,這個賬號將被鎖30天。在密碼過期前14天,警告信息就會發送到對應的賬戶。
下面是例子: