10/15 Linux PAM ( Pluggable Authentication Module,可插入式認證模組 )
相關檔案:
1.
PAM 認證模組設定檔:/etc/pam.d/ program_name
2.
PAM 模組全域設定檔:/etc/security/*
3.
PAM 函式:/lib/libpam*.so
4.
PAM 認證模組:/lib/security/*.so
( PAM 核心 )
在圖二的流程圖中,是說明應用程式會先去呼叫 PAM 函式,然後再由其去讀取 /etc/pam.d/ 目錄下的 PAM 模組設定檔,並依序載入檔案中所指定的 PAM 模組, 而這些模組是以在設定檔中所設定的順序依序被堆疊起來。
出處:http://www.suse.url.tw/sles10/lesson20.htm
Modules types: 1.
auth
帳號、密碼檢查
2.
account
帳號檢查 ( 權限是否符合 )
3.
session
建立連線前後,相關資源控制
4.
password
更新密碼資訊
Control
flags:
1.
required
成功、失敗 → 執行;有失敗就回傳失敗
2.
requisite
成功 → 執行,失敗 → 不執行;有失敗就回傳失敗
3.
sufficient
成功 → 不執行,失敗 → 執行,不回傳;
4.
optional
不一定執行;不回傳
#which login #ldd
/bin/login
#cat
/etc/pam.d/login
#man
pam_securetty
ldd 能夠顯示可執行模組的 dependency 透過模組設定檔知道 login 使用哪些模組 查詢模組手冊
( 若查詢不到手冊,還可以到 /usr/share/doc/packges/pam/modules 裡找 ) #cat #man
/etc/securetty pam_nologin
pam_securetty 會檢查此內容來允許或拒絕登入 若有 /etc/nologin 此檔案,則除 root 外,其他 人拒絕登入
限制 user1 不能在星期五 02:00am~04:00am 登入 tty4 #vi
/etc/pam.d/login account
#vi
required pam_time.conf
/etc/security/time.conf
login; tty4;user1;!fr0200-0400
更改密碼最小長度 PAM 模組設定檔的設定格式
#vi
/etc/pam.d/common-password
password
required
加入參數
/etc/security/pam_pwcheck.conf
password:
nullok
use_cracklib
no_obscure_checks
限制使用者開啟的檔案數量 ( 小於 12 則無法登入 ) #vi
/etc/security/limit.conf
user1
minlen=8
不檢查密碼強度 #vi
pam_pwcheck.so nullok
hard
nofile 10
sudo 的執行僅需要自己的密碼即可。由於 sudo 可以讓你以其他用戶的身份執行 指令 ( 通常是使用 root 的身份來執行指令 ) ,因此並非所有人都能夠執行 sudo, 而是僅有規範到 /etc/sudoers 內的用戶才能夠執行 sudo 這個指令。
#visudo
( = vi
/etc/sudoers )
# user1 使用者帳號
server1=/etc/init.d/apache2 來源主機名稱
>sudo /etc/init.d/apache2
status
測試 user1 是否可以用 sudo 執行
預設安全原則的存放位置:/etc/default/ #vi
/etc/default/useradd
INACTIVE = -1
帳號不停用 ( 密碼到期後 )
EXPIRE = 2012-01-01
帳號到期日
SKEL = /etc/skel
( skeleton,框架 )
CREATE_MAIL_SPOOL = yes #mkdir /etc/skel/uc103
建立使用者郵件存放位置
在框架下新增一個資料夾,看新增的使用者的家目錄 是否是套用此框架
#useradd #ll #cat #cd
#vi
-m user2
/home/user2
user2 家目錄內是否有多一個 uc103 資料夾
/etc/shadow /var/spool/mail
查看 user2 的帳號到期日 ( 第八個欄位會多一個值 ) 查看此路徑底下是否有多出 user2 的資料夾
/etc/login.defs
FAIL_DELAY
30
當登入帳號密碼錯誤時,需等 30 秒
PASS_MAX_DAYS #pwunconv
60
密碼需要重新變更的天數
將 /etc/shadow 內的密碼欄資料寫回 /etc/passwd 當中, 並 且刪除 /etc/shadow 檔案
#pwconv
#cat #vi
將 /etc/passwd 內的帳號與密碼,移動到 /etc/shadow 當中
/etc/shadow
可看到大家的第五個欄位都改成 60
/etc/hushlogins
設定指定帳號看不到登入後的訊息
user2
#wall #mesg
abc.txt n
#finger user1
發佈 abc.txt 2 的內容給大家看 不要收到其他人發的訊息,除了 root 外 查看其他使用者的資訊
ACLs ( Access Control Lists,存取控制清單 ) 主要的目的是在提供傳統的 owner、group、others 的 read、write、execute 權限 之外的細部權限設定。ACL 可以針對單一使用者,單一檔案或目錄來進行 rwx 的權限 規範,對於需要特殊權限的使用狀況非常有幫助。 如果依照 ACL 的設定來做區分的話,大致上有以下兩種:
access ACL: 使用者及群組對檔案目錄的存取權限,就依照該檔案目錄的存取控制清單來決定。
default ACL: 只能針對目錄來做設定。對於已設定預設存取控制清單的目錄而言,位於其下的檔 案目錄,將會繼承這個目錄的 ACL 設定。
目前像 ReiserFS、ext2、ext3、JFS、XFS 等檔案系統都可支援 ACL 噢 !
#getfacl
/pub
#setfacl
-m u:user1:rwx
#setfacl
-m -d
pub/
u:aman:rwx pub/
設定 pub 目錄使用 default ACL ( -d )