Linux中pam認證詳解(上)

Linuxpam認證詳解(上)

一、pam的簡介

PAM(Pluggable Authentication Modules)即可插拔式認證模塊,它是一種高效而且靈活便利的用戶級別的認證方式,它也是當前Linux服務器普遍使用的認證方式。當然,在不同版本的Linux統中部署PAM認證是有所不同的。 

它提供了對所有服務進行認證的中央機制,適用於login,遠程登錄(telnet,rlogin,fsh,ftp,點對點協議(PPP)),su等應用程序中。系統管理員通過PAM配置文件來制定不同應用程序的不同認證策略;應用程序開發者通過在服務程序中使用PAM API(pam_xxxx( ))來實現對認證方法的調用;而PAM服務模塊的開發者則利用PAM SPI來編寫模塊(主要是引出一些函數pam_sm_xxxx( )供PAM接口庫調用),將不同的認證機制加入到系統中;PAM接口庫(libpam)則讀取配置文件,將應用程序和相應的PAM服務模塊聯繫起來。PAM框架結構如圖所示。 

wKioL1O8rXvxQA8NAAF-Fq6C464335.jpg 

 

二、pam認證原理

PAM認證一般遵循這樣的順序:Service(服務)→PAM(配置文件)→pam_*.soPAM認證首先要確定那一項服務,然後加載相應的PAM的配置文件(位於/etc/pam.d下),最後調用認證文件(位於/lib/security下)進行安全認證。認證原理圖如下圖所示:

wKioL1O8rY-C0rOsAADFEPrJxgE391.jpg 

用戶訪問服務器的時候,服務器的某一個服務程序把用戶的誰請求發送到PAM模塊進行認證。對於不同的服務器應用程序所對應的PAM模塊也是不同的。如果想查看某個程序是否支持PAM認證,可以用ldd命令進行查看,例如查看查看sshd是不是支持PAM模塊認證如下圖所示:

wKioL1O8rafjqe11AAOW--_vknY241.jpg 

 

三、PAM認證的構成 

客觀地說PAM認證還是比較複雜的,這裏只簡單地介紹它包括四種常見認證類型(module type):

1、認證管理(authentication management)

接受用戶名和密碼,進而對該用戶的密碼進行認證,並負責設置用戶的一些祕密信息。

2、帳戶管理(account management)

檢查帳戶是否被允許登錄系統,帳號是否已經過期,帳號的登錄是否有時間段的限制等等。

3、密碼管理(password management)

主要是用來修改用戶的密碼。

4、會話管理(session management)

主要是提供對會話的管理和記賬(accounting)。

四、pam驗證控制類型(Control Values)

驗證控制類型也可以稱做Control Flags,用於PAM驗證類型的返回結果,具體有以下四種:

1、required驗證失敗時仍然繼續,但返回Fail(用戶不會知道哪裏失敗)

2、requisite驗證失敗則立即結束整個驗證過程,返回Fail

3、sufficient驗證成功則立即返回,不再繼續,否則忽略結果並繼續

4、optional無論驗證結果如何,均不會影響(通常用於session類型)

PAM驗證類型返回結果如下所示:

wKioL1O8rb2zaxXqAAEUlXRlfMk934.jpg 

爲了方便大家理解舉兩個例子,如下圖所示:

wKioL1O8rczBg2EFAADgmbEnOKA947.jpg 

wKioL1O8rd3idhFdAADjDU7b4ao203.jpg 

從上面兩個圖可以看出當required失敗後續還要繼續,但最後仍是失敗。requisite驗證失敗則立即結束。而sufficient則是驗證成功則立即結束。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章