PAM認證模組使用例項 (zt)
概述:本文給出幾個透過自定義配置PAM提高網路服務安全性的例子,希望對試圖進一步瞭解PAM的朋友起到拋磚引玉的作用。
例項一:系統使用proftpd提供ftp服務,但是不希望任何使用者都可以訪問ftp服務,希望可以定義一個檔案,只有在該檔案中定義的使用者可以使用ftp服務。
透過分析需求,我們可以知道,也就是要實現基於使用者名稱的ftp服務的訪問控制。透過閱讀proftpd的文件,我們可以發現,proftpd是完全支援PAM的。所以我們的實現的思路和步驟是這樣的:
首先,開啟proftpd的PAM支援,也就是說,告訴proftpd使用者認證讓PAM去完成。這一點可以透過幾個proftpd的配置選項來實現,以下是我們的proftpd.conf配置檔案的內容:
#/etc/proftpd.conf
ServerName "proftpd for real user"
ServerType standalone
DefaultServer on
ServerIdent off
Port 21
Umask 022
MaxInstances 3
User nobody
Group nobody
UseReverseDNS off
AuthPAM on
AuthPAMAuthoritative on
AuthPAMConfig ftp
DefaultRoot ~
AllowOverwrite on
我們對關於PAM的幾個選項作個說明:
AuthPAM:設定是否採用PAM使用者認證模組進行使用者認證。
AuthPAMAuthoritative:是否使用PAM作為最終的使用者認證方法。
AuthPAMConfig:指定進行PAM認證時使用的配置檔名稱,PAM配置檔案位於
/etc/pam.d/目錄下。
這樣設定以後,我們的proftpd就可以支援PAM認證方法了。
我們這樣定義/etc/pam.d/ftp檔案:
[root@test /root]# more /etc/pam.d/ftp
#%PAM-1.0
auth required /lib/security/pam_listfile.so item=user sense=allow file
=/etc/ftpwho onerr=fail
auth required /lib/security/pam_pwdb.so shadow nullok
account required /lib/security/pam_pwdb.so
session required /lib/security/pam_pwdb.so
其中的pam_listfile.so模組就是用來實現基於使用者的ftp控制。Item=user就表明是透過使用者名稱進行控制,sense=allow表示如果使用者名稱出現在/etc/ftpwho檔案中就返回認證成功資訊,file=/etc/ftpwho指定配置檔案,onerr=fail表示如果出現某些錯誤(比如無法開啟配置檔案等)時返回的結果,這裡是失敗資訊。關於pam_listfile模組的詳細資料,可以參考解決方案中的“常見的PAM認證模組簡介”系列文章。
然後,我們在/etc下建立ftpwho檔案,並在其中加入可以進行ftp訪問的使用者名稱,要注意每個使用者佔一行,之後重啟動proftpd,就可以根據這個配置檔案透過使用者名稱來對ftp訪問進行控制了。
例項二:控制可以登入系統的使用者,只有root可以從本地登入,bye2000以及tom使用者可以從192.168.1.0網段登入,其他使用者均不可以登入系統。
修改/etc/pam.d/login檔案如下所示:
root@test /root]# more /etc/pam.d/login
#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_stack.so service=system-auth
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_access.so accessfile=/etc/login.conf
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session optional /lib/security/pam_console.so
即,我們在原來的基礎上加入了以下這一條規則:
account required /lib/security/pam_access.so accessfile=/etc/login.conf
這條規則的意思時,我們使用pam_access模組,透過配置檔案/etc/login.conf來對使用者訪問進行控制,accessfile引數即指明瞭配置檔案的完整路徑。
根據需求,我們的/etc/login.conf檔案內容如下:
[root@test /root]# more /etc/login.conf
+:root:LOCAL
+:bye2000 tom:192.168.1.
-:ALL:ALL
該配置檔案說明:
該檔案的每一行由如下三個欄位構成,中間使用冒號分割:
許可權 : 使用者 : 來源
許可權欄位可以是”+”(即允許訪問),”-”(禁止訪問);
使用者欄位可以是使用者名稱、組名以及諸如user@host格式的使用者名稱,ALL表示任何人,
具有多個值時,可以用空格分開。
來源欄位可以是tty名稱(本地登入時)、主機名、域名(以”.”開始),主機ip地址,網路號(以”.”結束)。ALL表示任何主機,LOCAL表示本地登入。
可以使用EXCEPT運算子來表示除了…之外。
所以:
+:root:LOCAL---表示root使用者可以從本地登入。
+:bye2000 tom:192.168.1.---表示bye2000和tom可以從192.168.1.0/24網段telnet登入。
-:ALL:ALL---表示拒絕其他任何人登入。
關於pam_access模組的詳細資料,可以參考解決方案中的“常見的PAM認證模組簡介”系列文章。
例項一:系統使用proftpd提供ftp服務,但是不希望任何使用者都可以訪問ftp服務,希望可以定義一個檔案,只有在該檔案中定義的使用者可以使用ftp服務。
透過分析需求,我們可以知道,也就是要實現基於使用者名稱的ftp服務的訪問控制。透過閱讀proftpd的文件,我們可以發現,proftpd是完全支援PAM的。所以我們的實現的思路和步驟是這樣的:
首先,開啟proftpd的PAM支援,也就是說,告訴proftpd使用者認證讓PAM去完成。這一點可以透過幾個proftpd的配置選項來實現,以下是我們的proftpd.conf配置檔案的內容:
#/etc/proftpd.conf
ServerName "proftpd for real user"
ServerType standalone
DefaultServer on
ServerIdent off
Port 21
Umask 022
MaxInstances 3
User nobody
Group nobody
UseReverseDNS off
AuthPAM on
AuthPAMAuthoritative on
AuthPAMConfig ftp
DefaultRoot ~
AllowOverwrite on
我們對關於PAM的幾個選項作個說明:
AuthPAM:設定是否採用PAM使用者認證模組進行使用者認證。
AuthPAMAuthoritative:是否使用PAM作為最終的使用者認證方法。
AuthPAMConfig:指定進行PAM認證時使用的配置檔名稱,PAM配置檔案位於
/etc/pam.d/目錄下。
這樣設定以後,我們的proftpd就可以支援PAM認證方法了。
我們這樣定義/etc/pam.d/ftp檔案:
[root@test /root]# more /etc/pam.d/ftp
#%PAM-1.0
auth required /lib/security/pam_listfile.so item=user sense=allow file
=/etc/ftpwho onerr=fail
auth required /lib/security/pam_pwdb.so shadow nullok
account required /lib/security/pam_pwdb.so
session required /lib/security/pam_pwdb.so
其中的pam_listfile.so模組就是用來實現基於使用者的ftp控制。Item=user就表明是透過使用者名稱進行控制,sense=allow表示如果使用者名稱出現在/etc/ftpwho檔案中就返回認證成功資訊,file=/etc/ftpwho指定配置檔案,onerr=fail表示如果出現某些錯誤(比如無法開啟配置檔案等)時返回的結果,這裡是失敗資訊。關於pam_listfile模組的詳細資料,可以參考解決方案中的“常見的PAM認證模組簡介”系列文章。
然後,我們在/etc下建立ftpwho檔案,並在其中加入可以進行ftp訪問的使用者名稱,要注意每個使用者佔一行,之後重啟動proftpd,就可以根據這個配置檔案透過使用者名稱來對ftp訪問進行控制了。
例項二:控制可以登入系統的使用者,只有root可以從本地登入,bye2000以及tom使用者可以從192.168.1.0網段登入,其他使用者均不可以登入系統。
修改/etc/pam.d/login檔案如下所示:
root@test /root]# more /etc/pam.d/login
#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_stack.so service=system-auth
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_access.so accessfile=/etc/login.conf
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session optional /lib/security/pam_console.so
即,我們在原來的基礎上加入了以下這一條規則:
account required /lib/security/pam_access.so accessfile=/etc/login.conf
這條規則的意思時,我們使用pam_access模組,透過配置檔案/etc/login.conf來對使用者訪問進行控制,accessfile引數即指明瞭配置檔案的完整路徑。
根據需求,我們的/etc/login.conf檔案內容如下:
[root@test /root]# more /etc/login.conf
+:root:LOCAL
+:bye2000 tom:192.168.1.
-:ALL:ALL
該配置檔案說明:
該檔案的每一行由如下三個欄位構成,中間使用冒號分割:
許可權 : 使用者 : 來源
許可權欄位可以是”+”(即允許訪問),”-”(禁止訪問);
使用者欄位可以是使用者名稱、組名以及諸如user@host格式的使用者名稱,ALL表示任何人,
具有多個值時,可以用空格分開。
來源欄位可以是tty名稱(本地登入時)、主機名、域名(以”.”開始),主機ip地址,網路號(以”.”結束)。ALL表示任何主機,LOCAL表示本地登入。
可以使用EXCEPT運算子來表示除了…之外。
所以:
+:root:LOCAL---表示root使用者可以從本地登入。
+:bye2000 tom:192.168.1.---表示bye2000和tom可以從192.168.1.0/24網段telnet登入。
-:ALL:ALL---表示拒絕其他任何人登入。
關於pam_access模組的詳細資料,可以參考解決方案中的“常見的PAM認證模組簡介”系列文章。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245563/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PAM認證模組使用例項(zt)
- PAM認證模組使用例項(轉)
- 常見的PAM認證模組簡介(3) (zt)
- 常見的PAM認證模組簡介(2)(zt)
- 常見的PAM認證模組簡介(1) (zt)
- 常用的Linux可插拔認證模組(PAM)應用舉例Linux
- 使用 ESQL/C 的 PAM 認證方法(轉)SQL
- ssh、PAM模組
- 基於MySQL的Apache使用者認證例項(轉)MySqlApache
- JWT實現登入認證例項JWT
- vsftpd實現mysql-pam認證登入薦FTPMySql
- [譯]使用JavaScript建立WebAssembly模組例項JavaScriptWeb
- Django之使用者認證模組詳解Django
- 例項認識GuiceGUI
- Linux-PAM系統管理指南(zt)Linux
- 深入 Linux PAM 體系結構(zt)Linux
- oracle兩種認證方式總結(ZT)Oracle
- 【資訊保安】PAM模組的研究(二)
- 【資訊保安】PAM模組的研究(一)
- 叢集的應用例項(zt)
- Flask Session 登入認證模組FlaskSession
- DBA筆試試題-考試認證(zt)筆試
- drf JWT認證模組與自定製JWT
- 使用OpenSSH證書認證
- python傳送郵件例項 - 使用smtplib模組Python
- 【例項】使用GD庫生成圖片驗證碼
- angular模組庫開發例項Angular
- 登入模組 使用者認證 SpringSecurity +Oauth2+JwtSpringGseOAuthJWT
- Linux下PAM模組學習總結Linux
- Django基礎八之認證模組---authDjango
- python使用ctypes呼叫擴充套件模組的例項方法Python套件
- 一文讀懂Https的安全性原理、數字證書、單項認證、雙項認證等HTTP
- 什麼是WHQL微軟徽標認證?為什麼需要這項認證?微軟
- pinctrl使用例項
- ThinkJS入門+例項(實現認證許可權等基本功能)JS
- [譯]在JavaScript中建立WebAssembly模組例項JavaScriptWeb
- ZT - RFT ScriptAssure 技術解析及應用例項(4)
- laravel使用者認證Laravel