Security: The Pluggable Authentication Module (PAM) system
I.Module type
auth
account
passwd
session
II.Control flag
required
requested
sufficient
optional
實際範例 /etc/pam.d/login
[root@server1 pam.d]# cat /etc/pam.d/login
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session include system-auth
session required pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session optional pam_keyinit.so force revoke
實際範例 – 自訂PAM (限制特定的使用者存取檔案)
模組檔存放位置:/lib/security/pam_listfile.so
模組檔說明位置:/usr/share/doc/pam-0.99.6.2/txts
模組用途:限制使用者存取
模組形式:auth,
範例:
auth required pam_listfile.so oneer=succeed item=user sense=allow file=/etc/special
當加入此項於PAM時,任何列名於/etc/special中的使用者,會無法存取。
例如在 /etc/pam.d/vsftpd中的設定便會檢查 /etc/vsftpd/ftpuser中所列的使用者,並限制列名其中的使用者其使用權。
[root@server1 pam.d]# cat vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
實際範例 – tally.so模組 (追蹤錯誤的登入行為)
首先我們要了解登入時所帶入的PAM模組的位置,/etc/pam.d/login再其第一行中定義了root的登入僅能藉由secure tty(/etc/securetty)中,而第二行中定義了一般user在登入時的身分驗證行為,故在以下的實際操作中利用在system-auth中加入tally.so模組來追蹤使用者錯誤的登入行為。
# cd /etc/pam.d
# vi /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_tally.so no_magic_root 加入
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
存檔之後進行驗證:
利用其他的tty以一般user進行登入(以下以student做介紹),並故意輸入錯誤的密碼直到出現”Permission denied (publickey,gssapi-with-mic,password).”再進入系統輸入faillog –u student.
[root@server1 pam.d]# faillog -u student
Login Failures Maximum Latest On
student 6 0 01/12/08 09:47:49 +0800 192.168.1.1
沒有留言:
張貼留言