# 實驗環境Centos 6.5 64位系統
1、配置文件在/etc/pam.d/ 目錄下
2、使用ldd命令查看程序是否支持PAM
ldd `which sshd` | grep -i "pam"
3、以sshd服務爲例:
語法格式爲:service type control module-path module-arguments
<可以通過 man pam.d 查看詳細信息>
service:
auth: 主要是接受用戶名和密碼,進而對用戶的密碼進行認證
account: 主要是檢查賬戶是否被允許登陸系統
password: 主要是更新密碼
session: 主要是記錄一些信息:opening/closing some data exchange with a user, mounting dir, etc.
type:
required: 必須通過此認證,但是如果失敗,失敗的結果也不會立即通知用戶,而是要等到同一stack中的所有模塊全部執行完畢再將失敗結果返回給應用程序。<例如,用戶在登陸時,使用的用戶名不存在,也不會立即提示用戶名錯誤,而是要等輸完密碼後才提示,起到一定的防破解作用。>
requisite: 與required類似,但是不同之處在於,如果返回失敗,將不會再執行同一stack內的任何模塊,而是直接將控制權返回給應用程序。
sufficient: 表明本模塊返回成功已經足以通過身份認證的要求,不必再執行同一stack內的其他模塊,但是如果本模塊返回失敗的話可以忽略。
optional:表明本模塊是可選的,它的成功與否一般不會對身份認證起關鍵作用,其返回值一般被忽略。
include: 包括指定的配置文件中的所有行。
module-path: 用來指定模塊的路徑,默認路徑在 /lib64/security/ 目錄 <系統不同,位置可能不同,可以通過 `rpm -ql pam` 查看pam包將模塊裝到了什麼地方。>
module_arguments: 模塊執行時候的參數,可以使用[man 模塊名] 來查看詳細參數。
4、常用模塊<可以使用 man module_name 查看模塊的具體使用方法和應用的位置>:
pam_nologin.so: 如果存在/etc/nologin文件,則不允許除root外的所有普通用戶登陸。
pam_tally2.so: 用戶在登陸系統時,輸錯密碼多少次,鎖定用戶多長時間 (通過 man pam_tally2 查看詳細信息),例如: 輸錯兩次密碼鎖定用戶,也包括root,鎖定時間爲100s
<auth required pam_tally2.so deny=2 even_deny_root unlock_time=100>
查看當前鎖定的用戶: pam_tally2 手動解鎖被鎖定用戶: pam_tally2 -u username -r
pam_time.so: 指定用戶在指定終端的指定時間訪問指定程序。配置文件爲 /etc/security/time.conf。例如:
sshd;*;bloke;!Al0000-0800 & Al1800-2400
#在每天的零點到八點和每天的18點到24點之間不允許在任何終端登錄系統。
pam_timestamp: 和使用sudo類似,在認證成功後指定時間內不需要再次認證,默認是300s。
5、在設置時,需要注意順序和type