用PAM認(rèn)證加強(qiáng)Linux服務(wù)器的安全 |
發(fā)布時(shí)間: 2012/5/24 19:55:28 |
本文摘要PAM(PluggableAuthenticationModules)即可插拔式認(rèn)證模塊,它是一種高效而且靈活便利的用戶級別的認(rèn)證方式,它也是當(dāng)前Linux服務(wù)器普遍使用的認(rèn)證方式。當(dāng)然,在不同版本的Linux統(tǒng)中部署PAM認(rèn)證是有所不同的,本文將以RHEL4版本為例進(jìn)行解析。 PAM(PluggableAuthenticationModules)即可插拔式認(rèn)證模塊,它是一種高效而且靈活便利的用戶級別的認(rèn)證方式,它也是當(dāng)前Linux服務(wù)器普遍使用的認(rèn)證方式。當(dāng)然,在不同版本的Linux統(tǒng)中部署PAM認(rèn)證是有所不同的,本文將以RHEL4版本為例進(jìn)行解析。 1.部署PAM認(rèn)證的必要性 我們知道一臺Linux服務(wù)器會開許多不同的服務(wù),這些服務(wù)中很多服務(wù)本身并沒有認(rèn)證功能,只是把認(rèn)證交給用戶名及密碼。如果這樣的話,那么所有服務(wù)都用Linux系統(tǒng)的用戶名及密碼來認(rèn)證,對于服務(wù)器來說是很的。比如一臺服務(wù)器開著FTP、SMTP、SSH等服務(wù),那么新建一個(gè)用戶默認(rèn)就享有對以上的服務(wù)的操作權(quán)限,那么如果一個(gè)用戶的帳號密碼泄露會涉及到多個(gè)服務(wù)。因此,不管是PC還是服務(wù)器在類Linux系統(tǒng)中部署PAM認(rèn)證常必要的。通過新型的認(rèn)證模塊——PAM就能解決認(rèn)證方面的不足,加強(qiáng)Linux系統(tǒng)安全。 2.PAM認(rèn)證的方式 PAM認(rèn)證一般遵循這樣的順序:Service(服務(wù))→PAM(配置文件)→pam_.so。PAM認(rèn)證首先要確定那一項(xiàng)服務(wù),然后加載相應(yīng)的PAM的配置文件(位于/etc/pam.d下),最后調(diào)用認(rèn)證文件(位于/lib/security下)進(jìn)行安全認(rèn)證。通常情況下,在Linux系統(tǒng)安裝完成后會在/etc/pam.d徑下為我們提供了一些默認(rèn)的配置文件。另外,大家要知道/lib/security目錄是認(rèn)證文件的默認(rèn)存放。/etc/pam.d徑下的默認(rèn)配置文件是我們進(jìn)行PAM配置的模板,通常情況下我們根據(jù)安全需要對于進(jìn)行修改或者添加相應(yīng)的項(xiàng)即可。 linux服務(wù)器安全3.PAM認(rèn)證的構(gòu)成 客觀地說PAM認(rèn)證還是比較復(fù)雜的,簡單地講它包括四種常見認(rèn)證類型(moduletype):即auth認(rèn)證管理、account用戶管理、password密碼認(rèn)證管理、session會話管理。以/etc/pam.d/login為例,我們可以看到它的配置文件,區(qū)域1中的auth、account、password、session等都是認(rèn)證類型。區(qū)域2中的required、requisite、sufficient、optional是認(rèn)證的流程控制。最后面的區(qū)域3就是認(rèn)證的PAM文件了。 4.PAM認(rèn)證的流程 為了便于大家深入了解PAM認(rèn)證的流程,我們以驗(yàn)證用戶登錄的PAM-login為例進(jìn)行說明。PAM認(rèn)證流程是從行首驗(yàn)證到行尾,逐條認(rèn)證。比如用戶登錄服務(wù)器,共有十條auth類型認(rèn)證,假設(shè)第一條認(rèn)證失敗,一般情況后九條也必須要認(rèn)證。為什么就一般情況呢?其實(shí)還有非一般情況。那么這個(gè)用戶動作成功與否是要看auth認(rèn)證后面的區(qū)域2是怎么處理的。在圖2中看到處理字段有required和optional,其中required代表認(rèn)證必須通過,也就是說,無論成功多少條語句,只要失敗一條,那么認(rèn)證就失敗。在圖2中看到的區(qū)域3就是認(rèn)證的模塊了,第二行中的“pam_securetty.so”就是這個(gè)文件。在RHEL中,認(rèn)證多是用相對徑。 5.PAM認(rèn)證測試 pam_securetty.so是一個(gè)認(rèn)證模塊文件,該認(rèn)證模塊只對root用戶有效,當(dāng)root登錄系統(tǒng)時(shí),會查看有沒有安全終端,安全終端就是/etc/securetty文件里的東西,比如你運(yùn)行“W”命令看到TTY下面的東西就是安全終端。如果有安全終端就通過認(rèn)證,否則失敗。有些管理員為了安全,不讓root用戶直接登錄,他會把/etc/securetty文件清代空,這就了在有root密碼時(shí),也不能夠在本地登錄。 為了以下的實(shí)驗(yàn)方便,能看出效果來,我們把“authrequiredpam_securetty.so”這條認(rèn)證加入SSH服務(wù)的PAM模塊誰文件里(/etc/pam.d/sshd)的第一行,目的就是讓SSH服務(wù)應(yīng)用這條認(rèn)證。大家可在控制臺窗口中執(zhí)行“vietc/pam.d/sshd”然后添加這條認(rèn)證語句。同樣的道理,如果把這條語句加到login文件(默認(rèn)這條認(rèn)證是被注銷掉的,我們?nèi)∠懊娴?就可以了),控制的是從本地控制臺登錄,同樣的話如果把這條語句加入到sshd文件內(nèi),那么它將控制的是從遠(yuǎn)程登錄服務(wù)器22端口的過程。 下面我們試著SSH登錄系統(tǒng)看看效果,在控制臺中執(zhí)行命令“ssh-lrootlocalhost”,可以看到無論我們的root用戶的密碼正確與否都無法通過SSH遠(yuǎn)程登錄到系統(tǒng),可見的認(rèn)證已經(jīng)生效。在一般情況下,為了服務(wù)器的安全,大家通過PAM認(rèn)證root遠(yuǎn)程登錄系統(tǒng)。 6.PAM認(rèn)證的處理方式 了解了認(rèn)證類型的工作方式,我們還應(yīng)該深入的理解認(rèn)證的處理方式,在圖2中看到,它的認(rèn)證處理方式是required,表示這一模塊的認(rèn)證是必須成功的,但如果失敗,認(rèn)證過程不會即刻終止,PAM將繼續(xù)下一個(gè)同類型認(rèn)證。“pam_securetty.so”認(rèn)證失敗了,但認(rèn)證并沒有結(jié)束,認(rèn)證的“指針”還在向下走。如圖4中所示,在root用戶SSH登錄認(rèn)證失敗的前提下還提示用戶輸入密碼,雖然認(rèn)證不可能成功。 處理過程中除了required,還有requisite、sufficient和optional,我們再來看看requisite的效果。還用SSH服務(wù)為例,把/etc/pam.d/sshd文件第一行中的“authrequiredpam_securetty.so”改成“authrequisitepam_securetty.so”。再次嘗試登錄,發(fā)現(xiàn)和圖4沒有什么差別,也是輸入3次密碼后被了。但是細(xì)心的讀者如果一邊看文章一邊嘗試著實(shí)驗(yàn)的話,你會發(fā)現(xiàn)當(dāng)你在輸入密碼時(shí),用required反應(yīng)的速度要慢一些,并且在系統(tǒng)日志中是沒有記錄的,認(rèn)證同樣是失敗的。這說明required和requisite類似的地方是認(rèn)證必須通過,而不同的是如果失敗,認(rèn)證過程將立即終止,不會去認(rèn)證下面的條目。 7.root登錄控制臺 我們修改用/etc/pam.d/login來root登錄控制臺,打開login文件刪除第二行中的#,取消對“authrequiredpam_securetty.so”的注銷。然后我們本地登錄服務(wù)器,通過測試我們發(fā)現(xiàn)當(dāng)用required時(shí),你在輸入root及密碼后,你得到了一個(gè)信息,用requisite時(shí),當(dāng)你輸入root回車時(shí)同樣會得到信息登錄失敗,這是由剛才的認(rèn)證方式觸發(fā)的。 8.PAM認(rèn)證可選模塊 在PAM認(rèn)證中,sufficient表示如果認(rèn)證成功,那么對這一類型的模塊認(rèn)證是充足的了,其他的同類模塊將不會再檢驗(yàn),當(dāng)認(rèn)證失敗,它會進(jìn)行下一條認(rèn)證,如果下面同類型的認(rèn)證成功,結(jié)果依然成功。optional表示這一模塊認(rèn)證是可選的,也不會對認(rèn)證成功或失敗產(chǎn)生影響,這個(gè)就比較了。比如我們在/etc/pam.d/sshd文件內(nèi)加入“authrequired/lib/security/pam_listfile.soitem=usersense=allowfile=/etc/sshusersonerr=succeed”其含義是只允許出現(xiàn)在/etc/sshuser文件內(nèi)的用戶遠(yuǎn)程登錄。然后我們執(zhí)行命令“ssh-lrootlocalhost”,當(dāng)sshusers文件沒有root用戶時(shí)候,登錄失敗,很明顯他被PAM模塊了。那么我們改一下認(rèn)證文件,將required改成sufficient,嘗試再次登錄,結(jié)果成功登錄。 億恩科技地址(ADD):鄭州市黃河路129號天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |