pam(pluggable authentication modules)即可插拔式認證模組,它是一種高效而且靈活便利的使用者級別的認證方式,它也是當前linux伺服器普遍使用的認證方式
1.部署pam認證的必要性
我們知道一台linux伺服器會開許多不同的服務,這些服務中很多服務本身並沒有認證功能,只是把認證交給使用者名稱及密碼。如果這樣的話,那麼所有服務都用linux系統的使用者名稱及密碼來認證,對於伺服器來說是很危險的。比如一台伺服器開著ftp、smtp、ssh等服務,那麼新建乙個使用者預設就享有對以上的服務的操作許可權,那麼如果乙個使用者的帳號密碼洩露會涉及到多個服務。因此,不管是pc還是伺服器在類linux系統中部署pam認證是非常必要的。通過新型的認證模組——pam就能解決認證方面的不足,加強linux系統安全。
2.pam認證的方式
pam認證一般遵循這樣的順序:service(服務)→pam(配置檔案)→pam_*.so。pam認證首先要確定那一項服務,然後載入相應的pam的配置檔案(位於/etc/pam.d下),最後呼叫認證檔案(位於/lib/security下)進行安全認證。通常情況下,在linux系統安裝完成後會在/etc/pam.d路徑下為我們提供了一些預設的配置檔案。另外,大家要知道/lib/security目錄是認證檔案的預設存放位置。/etc/pam.d路徑下的預設配置檔案是我們進行pam配置的模板,通常情況下我們根據安全需要對於進行修改或者新增相應的項即可。
3.pam認證的構成
客觀地說pam認證還是比較複雜的,簡單地講它包括四種常見認證型別(module type):即auth認證管理、account使用者管理、password密碼認證管理、session會話管理。以/etc/pam.d/login為例,我們可以看到它的配置檔案,區域1中的auth、account、password、session等都是認證型別。區域2中的required、 requisite 、sufficient 、optional是認證的流程控制。最後面的區域3就是認證的pam檔案了。
八、常用的pam服務模組
下面是linux提供的pam模組列表(只是其中一部分):
模組檔案 模組功能描述 相關配置檔案
pam_access 提供logdaemon風格的登入控制 /etc/security/access.conf
pam_chroot 提供類似chroot命令的功能
pam_cracklib 對密碼的強度進行一定的檢查庫檔案libcrack和字典檔案 /usr/lib/cracklib_dict
pam_deny 總是無條件地使認證失敗
pam_env 設定或取消環境變數 /etc/security/pam_env.conf
pam_filter 對輸入輸出流進行過濾 filters
pam_ftp.so 對匿名ftp使用者進行認證
pam_group 當使用者在指定的終端上請求指定的服務時賦予該使用者相應的組許可權 /etc/security/group.conf
pam_issue 在提示使用者輸入使用者名稱之前顯示/etc/issue檔案的內容 /etc/issue
pam_krb4 對使用者密碼進行kerberos認證 相應的kerberos庫檔案
pam_lastlog 在使用者登入成功後顯示關於使用者上次登入的資訊,並維護/var/log/lastlog檔案 /var/log/lastlog
pam_limits 限制使用者會話所能使用的系統資源 /etc/security/limits.conf
pam_listfile 根據指定的某個檔案決定是否允許或禁止提供服務 例如/etc/ftpusers
pam_mail 檢查使用者的郵箱中是否有新郵件 /var/spool/mail/***x
pam_mkhomedir 為使用者建立主目錄 /etc/skel/
pam_motd 顯示/etc/motd檔案的內容 /etc/motd
pam_nologin 根據/etc/nologin檔案的存在與否來決定使用者認證是否成功 /etc/nologin
pam_permit 總是無條件地使認證成功
pam_pwdb 作為pam_unix_***x模組的乙個替代使用password database通用介面進行認證 /etc/pwdb.conf
pam_radius 提供遠端身份驗證撥入使用者服務(radius)的認證
pam_rhosts_auth 利用檔案~/.rhosts和 /etc/hosts.equiv對使用者進行認證。
pam_rootok 檢查使用者是否為超級使用者,如果是超級使用者則無條件地通過認證。
pam_securetty 提供標準的unix securetty檢查 /etc/securetty
pam_time 提供基於時間的控制,比如限制使用者只能在某個時間段內才能登入 /etc/security/time.conf
pam_unix 提供標準的unix認證pam_userdb 利用berkeley db資料庫來檢查berkeley db使用者/密碼 /etc/passwd和 /etc/shadow
pam_warn 利用syslog( )記錄一條告警資訊
pam_wheel 只允許wheel組的使用者有超級使用者的訪問許可權
pluggable authentication modules for linux 可插撥認證模組
當使用者訪問伺服器,服務程式將請求傳送到pam模組,pam模組根據服務名稱在/etc/pam.d目錄下選擇乙個對應的服務檔案,最後根據服務檔案的內容選擇具體的pam模組進行處理。
通過ldd檢視服務程式在編譯時是否使用了libpam.so,決定服務程式是否支援pam認證。
具體的pam檔案放在/lib/security目錄下,服務檔案放在/etc/pam.d目錄下
pam服務檔案格式
eg:auth required pam_security.so
auth required pam_stack.so service=system-auth
service表示呼叫子服務檔案
module-type:
auth 檢查使用者和密碼,分配許可權
account 檢查賬號是否過期,是否有權登入
session 從使用者登入成功到退出的會話控制
password 控制使用者改密碼的過程
control-flag:
required 要求矣須通過,否則結束退出
requisite 如果不通過還可繼續向下認證,後面有一通過即可。
sufficient 通過則不需要向下認證
optional 可選項
linux中pam認證解析
摘自 首先了解一下,什麼是linux的pam認證呢?pam認證機制 簡單來說就是linux系統採取的這一種對不同使用者以及系統中的不同服務進行的安全認證機制。認證流程 linux系統首先確定所需認證的服務,然後載入相應的pam的配置檔案 位於 etc pam.d下 最後呼叫認證檔案 位於 lib s...
Linux使用PAM鎖定多次登陸失敗的使用者
如何在linux環境中使用pam鎖定多次登入失敗使用者 修改如下檔案 etc pam.d sshd 遠端ssh etc pam.d login 終端 內容如下 1 2 3 4 5 6 pam 1.0 auth required pam tally2.so deny 3 unlock time 120...
用FinalShell連線linux伺服器
參考 主要特性 1.多平台支援windows,macos,linux 2.多標籤,批量伺服器管理.3.支援登入ssh和windows遠端桌面.4.漂亮的平滑字型顯示,內建100多個配色方案.5.終端,sftp同屏顯示,同步切換目錄.6.命令自動提示,智慧型匹配,輸入更快捷,方便.7.sftp支援,通...