徐紅梅
摘要:隨著計算機網絡的大范圍普及,人們開發了許多新的驗證方法,如何靈活地運用這些新的驗證方法是可拔插模塊(PAM)項目應運而生的重要原因。PAM將系統提供的服務和該服務的認證方式分開,使系統管理員可以根據需要給服務配置不同的認證方式。本文通過配置實例介紹了PAM在linux系統下如何對用戶加強安全訪問與控制。具有較強的使用價值。
關鍵詞:PAM 安全訪問 配置文件
中圖分類號:TP316.81 文獻標識碼:A 文章編號:1007-9416(2014)12-0178-02
1 PAM簡介
一般的,一個應用程序需要對用戶進行驗證,通常要連同實現驗證方法的代碼作為應用程序的一部分一起編譯到應用程序中,例如javascript等。這種方式帶來的問題是:如果發現所用算法存在某些缺陷或想采用另一種驗證方法時,用戶需重新修改或替換應用程序并重新編譯程序。為了讓驗證方法更具靈活性,人們開發了許多新的驗證方法,例如可拔插驗證模塊(Pluggable Authentication Modules)簡稱PAM。引入PAM后,一方面將驗證機制從應用程序中獨立出來,單獨進行模塊化設計,便于實現和維護,另一方面,也為這些認證模塊建立了標準API,以便個應用程序能方便的使用PAM提供的各種功能;同時,驗證機制對其上層的應用程序和最終用戶都是透明的。
2 PAM組成和運行機制
PAM由PAM核心和PAM模塊組成。負責調用PAM模塊核心庫/lib/libpam.so。
PAM有4種模塊類型,分別代表4種不同的任務:驗證管理,賬戶管理,會話管理和口令管理分別表示為auth、 account、 session、 password。
每個使用PAM功能的應用程序都必須連接PAM核心庫文件才能要求PAM實施驗證。要檢查一個應用程序是否使用了PAM驗證,可以使用ldd命令檢查是否連接PAM的核心庫,通常,將要使用PAM驗證功能的應用程序稱為PAM客戶端。
一個應用程序調用PAM時過程如圖1所示:
3 PAM客戶端配置文件和常用的PAM模塊說明
PAM的目標就是為系統管理提供最大限度的靈活性。系統管理者可以通過/etc/pam.d目錄下的配置文件來設置應用程序驗證。可在/etc/pam.d/login來查看配置文件內容。下面如表1列出本文中使用的PAM模塊并對其簡要說明,更多的模塊說明需查閱PAM文檔。
4 PAM認證模塊在賬戶安全訪問與控制
針對用戶賬號和密碼的攻擊是黑客入侵系統的主要手段之一,一個使用弱密碼或設置不適當權限的用戶賬號,將給系統留下重大的安全隱患,入侵者可以通過這些用戶賬號進入系統并進行權限擴張。所以管理員應必須用必要的技術手段強制用戶使用強壯密碼并定期更改定期檢查系統中的所有賬號,保證系統用戶賬號和密碼安全。下面使用PAM認證模塊對用戶賬戶安全進行一些配置。
4.1 限制用戶口令的重復使用
驗證類口令的PAM模塊是由pam_unix.so提供,此模塊可用于auth,account,password,session驗證類型。作為auth類型使用時,其主要功能是驗證用戶密碼的有效性。在缺省情況下其功能是禁止密碼 為空的用戶提供服務;作為account類型使用時,其主要功能是執行建立用戶賬號和密碼狀態的任務,然后執行提示用戶修改密碼,用戶采用新密碼后才提出供服務類的任務;作為password類型使用時,其主要功能是完成讓用戶更改密碼的任務;作為session類型使用時,其主要功能是僅僅完成記錄用戶名和服務名到日志文件的工作。
限制用戶口令重復時,pam_unix.so模塊可作為password類型使用,其下參數remember=n,會將n個使用過的舊密碼,以MD5的方式加密后保存到/etc/security/opasswd文件中。
配置實例:可修改system-auth配置文件,避免用戶重復是哦那個最近4次設置的口令。
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
添加參數remember =4.
4.2 用戶登錄訪問控制
此類訪問控制由pam_acccess.so模塊提供,主要用于對訪問進行管理,提供基于登錄名、主機名或域名、公網IP地址或網絡,以及非網絡登錄時的tty名稱的訪問控制。該模塊默認的配置文件為/etc/security/access.conf,也可以使用模塊參數accessfile=
配置實例:禁止root用戶從tty2上登錄,用戶xhm97可以在除tty5本地終端之外的所有終端登錄系統。
首先,修改login的PAM配置文件/etc/pam.d/login ,增加配置行
account required pam_access.so
其次,修改配置文件/etc/security/access.conf ,增加配置行
-:root:tty2 #第一個冒號前“-”代表拒絕,冒號后代表用戶,第二個冒號后代表來源,可以是主機名域名等
-:xhm97:LOCAL EXCEPT tty5#第一個冒號前“-”代表拒絕,冒號后代表用戶,第二個冒號后代表來源,可以是主機名域名等
4.3 用戶登錄失敗后的賬戶鎖定
為了避免用戶口令被暴力破解,應設置在登錄失敗若干次之后鎖定賬戶,這可以通過設置pam_tally2.so模塊實現。
配置實例:設置在登錄失敗5次之后禁止登錄。
首先修改system-auth配置文件,在代碼行增加配置行
auth required pam_tally2.so deny=5 onerr=fail
其次在account 類型配置段后增加配置行
account required pam_tally2.so
pam_tally2模塊將用戶失敗的登錄次數記錄于二進制文件/var/log/tallylog中,可使用/sbin/pam_tally2命令查看。
以上配置實例是PAM認證模塊在賬戶安全和訪問控制配置的個例,在用戶安全和訪問控制中還要考慮到用戶口令強壯性,限制用戶或組同時登錄,限制用戶使用su命令,禁止或允許列表實現訪問控制等等一系列安全問題均可以用PAM模塊解決。
5 PAM認證模塊的其他應用
PAM認證模塊在服務器配置可實現服務的認證,如rsh服務,ftpd服務等。以ftpd服務為例,通過/etc/pam.conf配置ftpd的認證方式。
(1)使用配置文件/etc/pam.conf說明。PAM的配置的主配置文件/etc/pam.conf,該文件是由如下的行所組成的:
service-name module-type control-flag module-path arguments
service-name 服務的名字,比如telnet、login、ftp等,服務名字“OTHER”代表所有沒有在該文件中明確配置的其它服務。
(2)用/etc/pam.conf配置默認的認證方式。通過OTHER拒絕所有沒有在/etc/pam.conf中明確配置的服務。下面例子顯示拒絕了所用在/etc/pam.conf沒有明顯配置的服務,其中pam_deny模塊的作用是拒絕通過認證。
配置實例
OTHER auth required /usr/lib/security/pam_deny.so
OTHER account required /usr/lib/security/pam_deny.so
OTHER password required /usr/lib/security/pam_deny.so
OTHER session required /usr/lib/security/pam_deny.so
(3)通過/etc/pam.conf配置ftpd的認證方式。首先用pam_ftp模塊檢查當前用戶是否為匿名用戶,如果是匿名用戶,則 sufficient控制標志表明無需再進行后面的認證步驟,直接通過認證;否則繼續使用pam_unix_auth模塊來進行標準的unix認證,即用/etc/ passwd和/etc/shadow進行認證;通過了pam_unix_auth模塊的認證之后,還要繼續用pam_listfile模塊來檢查該用戶是否出現在文件/etc/ ftpusers中,如果是則該用戶被deny掉
ftpd auth sufficient /usr/lib/security/pam_ftp.so
ftpd auth required /usr/lib/security/pam_unix_auth.so use_first_pass
ftpd auth required /usr/lib/security/pam_listfile.so \
onerr=succeed item=user sense=deny file=/etc/ftpusers
6 結語
PAM模塊的引入使驗證方法更具有靈活性,若對加強系統管理的安全性有更高要求時,需查閱PAM文檔,配置PAM模塊的參數來滿足系統用戶安全防范。
參考文獻
[1]余柏山.Linux系統管理與網絡管理[M].清華大學出版社,2010(1).
[2]梁如軍等.Linux應用基礎教程:Red Hat Enterprise Linux/CentOS 5[M].機械工業出版社,2012(1).
[3]趙岸,吳曉平,歐慶于.一種基于Linux-PAM模塊的身份驗證方法[J].計算機與數字工程,2007(11):57-58+110+5.endprint