安全加密之-PAM

時間:2018.1.16
作者:李強
參考:man,info,magedu講義,萬能的internet
實驗環境:VMware® Workstation 12 Pro ,Centos 6.9,Centos 7.4,SecureCRT Version 8.1.4
聲明:以下英文純屬個人翻譯,英文B級,歡迎糾正,以下內容純屬個人理解,並沒有對錯,只是參考,盜版不糾,纔能有限,希望不誤人子弟爲好。

Pluggable Authentication Modules

  • 原由;

我們在系統中經常要用到各種認證,login登錄需要認證,ssh,telnet ,ftp等需要認證,snmp,smtp等也需要認證,總之既然大家都需要認證,那麼找個人統一管理下好不好。PAM有個各個認證模塊,關於資源限制的,關於用戶賬號的,關於登錄時間的,各個模塊,當你的服務需要認證時,你只要把你的需求告訴PAM,它就會根據/etc/pam.d/下你指定的認證機制來去調用/etc/security下各個庫。
各種應用服務只需要提供服務就好,驗證的事情就交給系統和PAM來處理,然後告訴你是提供還是拒絕服務。
只要ldd 調用了libpam.so 庫文件的都可以受其控制

  • 認證過程:
graph LR

A[application]-->B[libpam.so]
B[/etc/pam.d/application]-->C[/lib*/secure/*.so]
C[/lib*/secure/*.so]-->D[/lib*/secure/*.conf]

1.使用者執行/usr/bin/passwd 程序,並輸入密碼

2.passwd開始調用PAM模塊,PAM模塊會搜尋passwd程序的PAM相關設置文件,這個設置文件一般是在/etc/pam.d/裏邊的與程序同名的文件,即PAM會搜尋/etc/pam.d/passwd此設置文件

3.經由/etc/pam.d/passwd設定文件的數據,取用PAM所提供的相關模塊來進行驗證

4.將驗證結果回傳給passwd這個程序,而passwd這個程序會根據PAM回傳的結果決定下一個動作(重新輸入密碼或者通過驗證)

配置文件格式

man -k pam

查看各個pam中模塊的使用幫助

man pam.conf

/etc/pam.d/下的配置文件格式

因爲其子系統太多,因此默認不存在/etc/pam.conf配置文件。而是放在各個子配置文件中。各個應用的pam認證規則配置存放在/etc/pam.d中

迴歸正題格式爲:
type control module-path module-arguments

type control module-path module-arguments
auth require /lib64/secure xxx
account x
password x
-type x
  • type

    auth:賬號的認證或授權
    account:與賬號管理的非認證的功能:如用來限制/允許用戶對某個服務的訪問時間,當前有效的系統資源(最多可以登錄多少賬戶),限制用戶的位置(root用戶只能通過tty終端登錄)等
    password:用戶修改密碼時密碼複雜度檢查機制等功能
    session:用戶獲得服務之前或者使用服務之後需要進行的一些附加操作,比如記錄打開或關閉數據的信息,監控目錄等
    -type:表示因爲缺失而不能加載的模塊將不記錄到系統日誌,對那些不總是安裝在系統上的模塊有用
  • control(PAM庫如何處理與該服務相關的PAM模塊成功或失敗情況,兩種方式實現:簡單和複雜)
簡單方式實現:一個關鍵字實現
require:一票否決,表示本模塊必須成功才能通過
requisite:一票否決,同上
sufficient:一票通過,表示本模塊返回成功則通過身份認證
optional:可選,它的成功與否不會對身份認證起關鍵作用,參考用
include:調用其他配置文件中定義的配置信息

複雜方式實現: 使用一個或多個"status=action"
[status1=action1 status2=action2....]
Status:檢查結果的返回狀態,success ,default
Action:ok,done,bad,die,ignore,reset
ok 模塊通過繼續檢查
done 模塊通過,返回最後結果給應用
bad 結果失敗,繼續檢查
die 結果失敗,返回失敗結果給應用
ignore 結果忽略,不影響最後結果
reset 忽略已經得到的結果
  • module-path(模塊路徑,一般相對路徑/lib64/security下模塊)
pam_nologin.so 普通用戶允許登錄,如果/etc/nologin文件存在,非root用戶不能登錄,如果用shell是/sbin.nologin 登錄時會顯示/etc/nologin文件內容,並拒絕登錄
pam_shells.so 控制登錄終端類型,檢查登錄用戶shell類型爲 /etc/shells中的類型,方可登錄
pam_securetty.so 只允許root登錄在/etc/securetty列出的安全終端上
pam_limits.so 在用戶級別實現對其可用的資源限制,例如:可打開的文件數量,可運行的進程數量,可使用的內存空間等。
修改限制的方式
1、ulimit命令,立即生效,單無法保存,只在當前會話有效
2、配置文件/etc/scurity/limits.conf,/etc/scurity/limits.d/*.conf
  • module-arguments (用來傳遞給該模塊的參數,配置少時用參數,多時可以考慮/etc/security下的各個模塊的配置文件)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章