PAM - 可插拔認證模塊

来源:http://www.cnblogs.com/cjh-notes/archive/2017/11/27/7905472.html
-Advertisement-
Play Games

1、為什麼要使用PAM 為了讓用戶更合理地使用系統,應用程式或服務(如sshd、login、su、password、ftp等)不可避免地需要對用戶進行安全認證,若按照各自的規則去配置非常耗費時間和精力且不能重用。 而PAM提供了統一的API,使應用程式的訪問控制變得簡單方便。 2、介紹 官網:htt ...


1、為什麼要使用PAM

為了讓用戶更合理地使用系統,應用程式或服務(如sshd、login、su、password、ftp等)不可避免地需要對用戶進行安全認證,若按照各自的規則去配置非常耗費時間和精力且不能重用。

而PAM提供了統一的API,使應用程式的訪問控制變得簡單方便。

 

2、介紹

官網:

2.1 流程說明

當某個應用程式或服務需要使用PAM來進行認證時,只要它支持PAM,就可以通過修改其相應的PAM配置文件,加放所需要的認證方式。當重新訪問時,PAM就會讀取相應的配置文件來提供認證功能。

 

2.2 PAM配置文件

PAM配置文件可能是/etc/pam.conf,或者是 /etc/pam.d/目錄下對應服務名稱的文件(本文以此形式進行介紹)。

PAM配置文件是由一系列規則組成,一個規則對應一行。

(1)規則語法

service type control module-path module-arguments

(2)欄位說明

service (服務名稱)
註:在/etc/pam.d/目錄下的配置文件,是不包含service部分的,而文件的名字就是service,且文件名必須是小寫。

type(account/auth/password/session)

  • account
    帳戶管理,它主要用來限制/允許用戶對某個服務的訪問時間、當前可用的系統資源(用戶的最大數量)或者用戶的位置訪問服務(例如:root用戶只能從控制台登錄)
  • auth
    識別用戶身份,比如:提示用戶輸入密碼
  • password
    升級用戶的認證標記,比如:密碼強度性檢測
  • session
    處理為用戶提供服務之前/後需要做的一些事情,比如:記錄登錄連接信息,掛載目錄等

control(required/requisite/sufficient/optional/include/substack)

  • required
    若當前行認證失敗,認證過程仍舊繼續,整個棧運行完畢之後返回認證失敗;若成功,繼續下一個認證。
  • requisite
    若當前行認證失敗,則立即中止並返回認證失敗;若成功,繼續下一個認證。
  • sufficient
    若當前行認證成功,並且之前沒有任何required認證失敗,則立即返回認證成功;若失敗,不對結果造成影響併進行下一個認證。
  • optional
    僅當整個棧中只有這一個認證時才有決定性作用,否則當前行的認證跟最終結果無關。
  • include
    將其他配置文件中的所有行包含在當前的位置並運行。
  • substack
    類似include,但substack所包含的行將作為一個子棧,其運行過程不會影響到母棧,子棧的運行結果將作為當前行認證的結果輸出。

module-path(模塊路徑)

如果以“/”開頭,則表示模塊的全路徑,否則表示相對於/lib/security/或/lib64/security/的相對路徑。

[root@iZwz9catu2mrq92b07d1d0Z ~]# ls -l /lib64/security/
total 732
-rwxr-xr-x  1 root root 18552 Mar 22  2017 pam_access.so
-rwxr-xr-x. 1 root root  7504 Dec  8  2011 pam_cap.so
-rwxr-xr-x  1 root root 10272 Mar 22  2017 pam_chroot.so
-rwxr-xr-x  1 root root 27080 Mar 22  2017 pam_console.so
-rwxr-xr-x  1 root root 14432 Mar 22  2017 pam_cracklib.so
-rwxr-xr-x  1 root root 10168 Mar 22  2017 pam_debug.so
-rwxr-xr-x  1 root root  5952 Mar 22  2017 pam_deny.so
... 

 

module-arguments(模塊參數)

 

3、可用模塊

官方介紹:

pam_access - 日誌監控風格的訪問控制

pam_access.so [ debug ] [ nodefgroup ] [ noaudit ] [ accessfile=file ] [ fieldsep=sep ] [ listsep=sep ]

(1)使用介紹

當用戶要訪問應用程式時,accessfile(預設是/etc/security/access.conf)就會被掃描來檢測用戶是否具有訪問許可權並返回結果。

accessfile中的每一行都包括三個域,以冒號隔開,如下所示:

permission:users/groups:origins

  • 第一個域,permission,值為+或-,+表示允許訪問,-表示拒絕訪問;
  • 第二個域,users/groups,列出一個或多個用戶名/組名,或者直接使用ALL(代表所有用戶和組)。為了區分用戶名和組名,組名應加上括弧,例如:(group);
  • 第三個域,origins,列出一種或多種登錄方式,如:tty名稱(tty是本地虛擬終端,比如:在阿裡雲CentOS實例的遠程連接中可以切換到不同的虛擬終端,CTRL+ALT+F1代表切換到tty1,CTRL+ALT+F2代表切換到tty2,如此類推),IP地址,ALL(代表所有登錄方式)等

(2)參數說明

  • debug
    大量的調試信息會被syslog記錄下來
  • nodefgroup
    只有寫在括弧內的名稱才會去匹配組文件,例如:(wheel),若沒有設置該參數,則先匹配用戶文件再匹配組文件
  • noaudit
    當有用戶從未被允許的主機或終端登錄時,事件不會被報告
  • accessfile=/path/to/access.conf
    設置配置文件路徑,主要用於不同的服務對應不同的配置
  • fieldsep=separators
    配置文件的域分隔符,預設的域分隔符是英文冒號,如果fieldsep=|,那麼|將作為域分隔符,而英文冒號則被看作普通字元
  • listsep=separators
    每個域都是一個列表,該選項改變配置文件的列表分隔符,預設的列表分隔符是空格,如果listsep=,,那麼逗號將作為列表分隔符,而空格則被看作普通字元,這可能用於用戶名或組名含有空格的情況,但必須要註意的是此時欄位值與分隔符之間也不能存在空格!

(3)應用場景

例1:限制用戶的SSH登錄

[root@iZwz9catu2mrq92b07d1d0Z ~]# cp /etc/pam.d/sshd /etc/pam.d/sshd_backup

//修改SSH對應的PAM配置文件,新增pam_access模塊認證
[root@iZwz9catu2mrq92b07d1d0Z ~]# vi /etc/pam.d/sshd

#%PAM-1.0
account    requisite     pam_access.so nodefgroup accessfile=/etc/mypam/access_ssh.conf fieldsep=| listsep=,

[root@iZwz9catu2mrq92b07d1d0Z ~]# mkdir /etc/mypam

//編輯accessfile(註:匹配的順序從第一行開始)
[root@iZwz9catu2mrq92b07d1d0Z ~]# vi /etc/mypam/access_ssh.conf

#允許root和組mygroup1的成員登錄
+|root (mygroup1)|ALL

#拒絕root和組mygroup1的成員以外的用戶登錄
-|ALL EXCEPT root (mygroup1)|ALL

#拒絕指定用戶從非指定的ip進行登錄
-|cjh|ALL EXCEPT 120.231.146.242

 

pam_nologin - 防止非root用戶登錄

 

pam_tally2 - 登錄計數器


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 虛擬主機需要備案嗎?我們在購買功能變數名稱空間的時候,有時會遇到虛擬主機備案的問題,有些虛擬主機需要備案,有些虛擬主機不需要備案,這就讓一些站長們困惑了。虛擬主機需要備案後才能訪問嗎? 網站備案是工信部要求的,主要是為了規範網路安全化,維護網站經營者的合法權益,保障網民的合法利益。凡是使用國內空間的網站功能變數名稱 ...
  • 1.條件選擇 1.1.if 語句 語法十分簡單 語句體,以fi結束。 利用選擇語句判斷變數獲取成功與否 1.2.case 語句 雙分號不能少;跟if一樣,語句體也需要結束符。 找工作時,根據應聘崗位不同,給出不同應徵者相應的聯繫人信息。 在輸出交互信息時,使用了echo命令。當要格式化輸出時,需要來 ...
  • state域能夠取5個互為排斥的值(通俗一點就是這五個值任意兩個不能一起使用,只能單獨使用)。系統中的每個進程都必然處於以上所列進程狀態中的一種。 ...
  • shutdown -s -t 30 指定在30秒之後自動關閉電腦。 + L 返回登錄頁面 netstat 最近訪問IP Regedit 打開註冊表 ...
  • 局部變數:函數內部聲明的變數,只在函數內部有效。 全部變數:在函數外部聲明的變數,全局都有效,直到程式執行完畢。 全局變數負作用: 1.降低函數的獨立性 2.降低函數的通用性,不利於函數的重覆調用。 3.降低程式的清晰度,每個函數執行有可能改變全局值,無法清晰判斷全局變數的值。 4.全局變數永久占用 ...
  • 操作系統自帶的截圖工具無法保存問題,出現這種原因一般是對電腦的操作進行不當刪除所致,一般來說很容易解決。 雙擊我的電腦,打開資源管理器。 在左側找到庫,選中並右擊,點擊還原預設庫(R)。 進入win7安裝盤下的“用戶目錄”文件夾。 新建文件夾,命名為 “我的圖片”。 修複完成,打開截圖工具,嘗試保存... ...
  • 1.menu(space key)2.space (08307009 U) 按鍵2次)->(EXT)3.BLUE(按鍵4次)->PAL4.enter5.0校準(0對準CAL(按住探頭)出現數字後按校準鍵 校準後探頭返回原位置)6.選擇通道上鍵 ...
  • 本文以SSH為例進行PAM配置來實現相應的認證功能,其它的登錄方式配置相似,詳情可參考文章《PAM - 可插拔認證模塊》。 1、限制用戶的登錄(SSH) (1)使用pam_access自定義限制規則 //新增pam_access模塊認證 [root@iZwz9catu2mrq92b07d1d0Z ~ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...