2008年1月13日 星期日

Security: The Pluggable Authentication Module (PAM) system

I.Module type

  1. auth

  2. account

  3. passwd

  4. session

II.Control flag

  1. required

  2. requested

  3. sufficient

  4. 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


沒有留言: