插入式驗證模塊(Pluggable Authentication Module,PAM)API 將公開一組功能,應用程序程序員可以使用這些功能來實現與安全性相關的功能,例如用戶驗證、數據加密、LDAP 等。在本文中,獲得在 Linux 中使用 PAM 模塊的基本指南,了解如何配置 PAM,並了解如何通過 10 個簡單步驟設計樣例 PAM 登錄應用程序。
對於 Linux 用戶,安全地共享文件是一項麻煩的任務。例如,需要費力地回想多個密碼,並且重新設計系統訪問應用程序(如 login、su、password、ftp 等)十分耗費時間。增加這一複雜度的是驗證 過程,在該過程中,系統將識別用戶並為該用戶提供相應的訪問控制。
PAM 的使用歷史記錄
PAM 是關注如何為服務驗證用戶的 API。在使用 PAM 之前,諸如 login(和 rlogin、telnet、rsh)之類的應用程序在 /etc/passwd 中查找用戶名,然後將兩者相比較並驗證用戶輸入的名稱。所有應用程序使用了這些共享服務,但是並未共享實現細節和配置這些服務的許可權。
接下來,應用程序開發人員嘗試編寫自定義過程代碼。在此過程中,需要分離應用程序與安全模塊(通用安全模塊可以在應用程序之間共享並且可以根據需求進行配置)。
PAM 機制將把多個低級別驗證模式集成到高級別 API 中,該 API 將允許以獨立於底層驗證模式的方式編寫使用驗證的程序。PAM 的主要特徵表現為通過 /etc/pam.d 或 /etc/pam.conf 文件實現動態驗證配置。
PAM 可以被配置為拒絕某些程序對用戶進行驗證,或者在某些程序嘗試驗證時發出警告。PAM 程序將使用 PAM 模塊(驗證模塊):這些模塊在運行時與應用程序綁定在一起才能工作。
圖 1 顯示了 PAM 模塊的基本流程。
哪些操作系統支持 PAM?
PAM 最初是由 Sun Microsystems 於 1995 年開發的,並且以下操作系統版本(及更高版本)都提供支持:
最新版本的 Solaris™、AIX®、HP-UX 和 Mac OS® X 也支持 PAM。PAM 後來被標準化為 X/Open UNIX® 標準化流程(在 X/Open 單點登錄服務(XSSO)架構中)的一部分。
我可以獲得哪種 PAM?
雖然沒有進行嚴格劃分,但是可以認為有三種 PAM:
雖然這些是不同的 PAM,但是其主要功能仍然相同。
PAM 模塊是什麼樣子的?
安裝 PAM 是一個逐步的過程。要獲得安裝說明,請參閱 參考資料。
PAM 模塊是按模塊類型歸類的。任何給定的模塊至少要實現四種模塊類型功能之一:
PAM 將提供不同的功能,例如單點登錄驗證、訪問控制等。每個功能的實現都是由不同的模塊處理的。下面是一些主要模塊:
還有許多其他模塊(pam_userdb、pam_warn、pam_xauth),這些模塊將獲取返回的一組值(這些模塊的詳細信息可以在 參考資料 的 PAM 管理指南中找到)。
配置 PAM
PAM 配置通常是在 /etc/pam.d 或 /etc/pam.conf(用於舊版本)中的配置文件中實現的。
配置文件的結構
對於使用 PAM 的各項服務,目錄中都有一個對應的文件,其中包含應當如何獲取該服務的驗證及帳戶信息的規則或說明。通常每一行有一個規則。
PAM 配置文件中的欄位包括:
模塊將按照在配置文件中列出的順序被調用,這取決於每個條目允許的 Control_flag 的值。Control_flag 值包括:
PAM 配置文件示例
表 1 顯示了各種操作系統中的 PAM 配置文件的一些示例。
系統 | 配置文件所在位置 | 類型 | Control_flag | 模塊 |
---|---|---|---|---|
Red Hat | /etc/pam.d | auth | required | /lib/security/pam_unix.so |
Red Hat | /etc/pam.d | account | sufficient | /lib/security/pam_unix.so |
Red Hat | /etc/pam.d | session | required | /lib/security/pam_limit.so |
AIX | /etc/pam.conf | auth | required | /usr/lib/security/pam_aix |
AIX | /etc/pam.conf | account | required | /usr/lib/security/pam_aix |
AIX | /etc/pam.conf | password | required | /usr/lib/security/pam_aix |
zSUSE 64-bit | 32-bit | /etc/pam.conf | auth | required | /lib64/security/pam_unix.so | /lib/security/pam_unix.so |
zSUSE 64-bit | 32-bit | /etc/pam.conf | account | required | /lib64/security/pam_unix.so | /lib/security/pam_unix.so |
zSUSE 64-bit | 32-bit | /etc/pam.conf | session | required | /lib64/security/pam_unix.so | /lib/security/pam_unix.so |
Solaris | /etc/pam.conf | auth | required | /usr/lib/security/pam_unix.so.1 |
Solaris | /etc/pam.conf | account | required | /usr/lib/security/pam_unix.so.1 |
Solaris | /etc/pam.conf | password | required | /usr/lib/security/pam_unix.so.1 |
HP-UX | /etc/pam.conf | auth | required | libpam_unix.so.1 |
HP-UX | /etc/pam.conf | account | required | libpam_unix.so.1 |
HP-UX | /etc/pam.conf | password | required | libpam_unix.so.1 |
PAM 的 “other” 文件
默認的 PAM 配置文件 /etc/pam.d 用於沒有明確配置的所有其他服務,並且可能是 PAM 所依賴的最簡單而又最健壯的默認文件。該文件內部類似如下所示:
/etc/pam.d/other File auth required pam_warn.so auth required pam_deny.so account required pam_warn.so account required pam_deny.so password required pam_warn.so password required pam_deny.so session required pam_warn.so session required pam_deny.so |
此文件非常簡單。對於所有模塊類型,Control_flag 都是一樣的:required。調用兩個模塊:
因此,使用 PAM 的所有服務都必須被明確配置為允許驗證;否則,嘗試將失敗。
設計簡單 PAM 登錄應用程序的 10 個步驟
這 10 個步驟可以幫助您實現自己的 PAM 應用程序並幫助您了解 PAM 會話的工作方式:
結束語
依賴 PAM 來幫助把低級別驗證工作變為更具有管理性的整體,這大大簡化了這種安全機制。在本文中,您了解了:
[火星人 ] 了解和配置 PAM已經有716次圍觀