1. 程式人生 > >CentOS-pam認證機制簡介

CentOS-pam認證機制簡介

前言

CentOS-pam認證機制簡介

 

linux下PAM模組全稱是Pluggable Authentication Module for linux(可插入式授權管理模組),該由Sun公司提供,在Linux中,PAM是可動態配置的,本地系統管理員可以自由選擇應用程式如何對使用者進行身份驗證。PAM應用在許多程式與服務上,比如登入程式(login、su)的PAM身份驗證(口令認證、限制登入),passwd強制密碼,使用者程序實時管理,向用戶分配系統資源等。


配置檔案

PAM的配置檔案位置 /etc/pam.conf,也可以在/etc/pam.d/資料夾下配置單獨的檔案,當存在/etc/pam.d資料夾時,Linux-PAM將會使用/etc/pam.d資料夾下的配置檔案而忽略/etc/pam.conf配置檔案。

pam.conf配置檔案中,配置內容寫在一行內,也可以以""作為連線符將配置內容寫在多行;pam.conf以空格作為分割標記,#代表標註資訊;“-”如果在配置語句前面加上該符號,在系統登入時如果該模組未被正確載入,不會將該事件記錄到系統日誌中,即“-”表示可選項。

如果配置檔案放置在/etc/pam.d資料夾下,則配置檔案中沒有service選項,且配置檔案的名字為service名字,檔名必須小寫,配置語法區分大小寫,配置規則格式為:

service type control module-path module-arguments

服務名稱 型別 控制 模組路徑 模組引數

type型別

account manager(account):提供賬戶服務驗證,如賬戶密碼是否過期,是否對該賬戶提供服務

authentication manager(auth):負責對使用者進行認證並建立使用者憑證;通常該模組通過互動式方法進行認證,比如你應當輸入密碼證明你是你,但並非所有的認證都是該型別

password manager(password):進授權認證機制進行更新,如更改密碼

session manager(session):當開啟一個新會話時,該模組負責處理會話的準備任務,而當關閉某一個會話時,該模組負責善後工作,如解除安裝該使用者home目錄。

CentOS-pam認證機制簡介

 

control控制

control分為簡單和複雜兩種語法結構,簡單語法中僅有一個關鍵字,而複雜語法通過[ ]引入[value=action]選項

1、control簡單語法包含以下值:

required:當使用此關鍵字的PAM模組驗證失敗,最終會導致PAM-API返回失敗,但是會等到後續模組全部被驗證後才會返回失敗

requisite:該關鍵字與required使用方法類似,但是當PAM驗證失敗時,requisite會立刻向呼叫程式或父PAM桟返回失敗值;該關鍵字可以防止攻擊者獲得系統已存在使用者資訊,通常該關鍵字用在重要的系統環境中

sufficient:如果該模組驗證成功,而且該模組前無required模組驗證失敗,sufficient關鍵字將會向呼叫程式或者父PAM棧返回成功值而不會再呼叫後續的驗證模組;當呼叫sufficient模組失敗,PAM模組不會受sufficient模組失敗影響,將會繼續執行驗證。

optional:當配置檔案中僅有service+optional這一條規則時,optional模組才會起作用

include:將指定配置檔案中所有的type型別作為引數包含在此控制語句中

substack:將指定配置檔案中type作為引數包含在此控制語句中,和Include不同的是,在substack中完成任務或者die,只會影響substack內控制命令,不會影響完整的stack桟

CentOS-pam認證機制簡介

 

2、control複雜語法

[value1=action1 value2=action2 ...]

valueN代表對應模組中控制語句的返回值,可以是下面的值:success,open_err,symbol_err,service_err,system_err,buf_err,perm_denied,deault等,其中default表示所有未被顯式提到的所有值

PAM所有的錯誤資訊列表在 /usr/include/security/_pam_types.h資料夾中

actionN可以使下列值中的某一個:

ignore:當在模組桟中使用該引數時,該模組桟的返回值不會影響應用程式獲得返回值

bad:當使用bad關鍵字,證明模組桟的返回值代表失敗;當該模組式PAM桟中第一個模組時,該模組的狀態將會在整個PAM桟中使用

die:和bad關鍵字作用相同,當使用該動作關鍵時,會立刻終止模組桟,PAM會立刻返回到呼叫的應用程式中

ok:該動作指示將PAM的返回值直接用於所有的模組桟中,即如果前一個桟返回的狀態是PAM_SUCCESS,'OK‘中的值會重寫返回值;如果返回的是失敗,則此'OK'的值不會重寫返回值。

done:和'OK'動作基本相同,但是PAM會立刻返回到應用程式當中

reset:清空所有模組桟的狀態值並以下一個模組進行驗證

N:和'OK'副作用相同,但是會跳過接下來的N個模組桟,不允許使用'0'(在某些情況是使用'0'和'OK'作用類似)

四個關鍵字required;requisite;sufficient;optional和以下語句有相同作用

required

[success=ok new_authtok_reqd=ok ignore=ignore default=bad]

requisite

[success=ok new_authtok_reqd=ok ignore=ignore default=die]

sufficient

[success=done new_authtok_reqd=done default=ignore]

optional

[success=ok new_authtok_reqd=ok default=ignore]

module-path

模組路徑可以使應用程式使用的PAM模組的檔名,也可是是預設模組的相對路徑名:/lib/security 或者/lib64/security

CentOS-pam認證機制簡介

 

module-arguments

模組引數是以空格作為分隔符的列表,可以用來指定PAM特殊的動作,如果需要在引數中包含空格,需要使用"[ ]",當需要在語法中使用[]時,需使用"",如 [..[..]..]->..[..]..;語法中的任何一個錯誤都會導致驗證失敗,而且會被記錄到系統日誌中


CentOS-pam認證機制簡介

 

總結

pam認證機制還是挺好用了,OpenVPN就可以呼叫這個目錄,去資料庫取使用者使用者名稱密碼進行驗證,方便管理。