CentOS系統之pam模組

來源:互聯網
上載者:User

一、pam簡介

Linux-PAM(linux可插入認證模組)是一套共用庫,使本地系統管理員可以隨意選擇程式的認證方式. 換句話說,不用(重新編寫)重新編譯一個包含PAM功能的應用程式,就可以改變它使用的認證機制. 這種方式下,就算升級本地認證機制,也不用修改程式.
PAM使用配置/etc/pam.d/下的檔案,來管理對程式的認證方式.應用程式 調用相應的設定檔,從而調用本地的認證模組.模組放置在/lib/security下,以載入動態庫的形式進,像我們使用su命令時,系統會提示你輸入root使用者的密碼.這就是su命令通過調用PAM模組實現的.

二、PAM的設定檔介紹

PAM設定檔有兩種寫法:

一種是寫在/etc/pam.conf檔案中,但centos6之後的系統中,這個檔案就沒有了。
另一種寫法是,將PAM設定檔放到/etc/pam.d/目錄下,其規則內容都是不包含 service 部分的,即不包含服務名稱,而/etc/pam.d 目錄下檔案的名字就是服務名稱。如: vsftpd,login等.,只是少了最左邊的服務名列.如:/etc/pam.d/sshd

由可以將設定檔分為四列,

第一列代表模組類型

第二列代表控制標記

第三列代表模組路徑

第四列代表模組參數

1.PAM的模組類型

Linux-PAM有四種模組類型,分別代表四種不同的任務

它們是:認證管理(auth),帳號管理(account),會話管理(session)和密碼(password)管理,一個類型可能有多行,它們按順序依次由PAM模組調用.

管理方式說明auth用來對使用者的身份進行識別.如:提示使用者輸入密碼,或判斷使用者是否為root等.account

對帳號的各項屬性進行檢查.如:是否允許登入,是否達到最大使用者數,或是root使用者是否允許在這個終端登入等.

session

這個模組用來定義使用者登入前的,及使用者退出後所要進行的操作.如:登入串連資訊,使用者資料的開啟與關閉,掛載檔案系統等.

password使用使用者資訊來更新.如:修改使用者密碼.

2.PAM的控制標記

PAM使用控制標記來處理和判斷各個模組的傳回值.(在此只說明簡單的認證標記)

控制標記說明required

表示即使某個模組對使用者的驗證失敗,也要等所有的模組都執行完畢後,PAM 才返回錯誤資訊。這樣做是為了不讓使用者知道被哪個模組拒絕。如果對使用者驗證成功,所有的模組都會返回成功資訊。

requisite

與required相似,但是如果這個模組返回失敗,則立刻嚮應用程式返回失敗,表示此類型失敗.不再進行同類型後面的操作.

sufficient表示如果一個使用者通過這個模組的驗證,PAM結構就立刻返回驗證成功資訊(即使前面有模組fail了,也會把 fail結果忽略掉),把控制權交回應用程式。後面的層疊模組即使使用requisite或者required 控制標誌,也不再執行。如果驗證失敗,sufficient 的作用和 optional 相同optional表示即使本行指定的模組驗證失敗,也允許使用者接受應用程式提供的服務,一般返回PAM_IGNORE(忽略).

3.模組路徑

模組路徑.即要調用模組的位置. 如果是64位系統,一般儲存在/lib64/security,如: pam_unix.so

同一個模組,可以出現在不同的類型中.它在不同的類型中所執行的操作都不相同.這是由於每個模組

針對不同的模組類型,編製了不同的執行函數.

4.模組參數

模組參數,即傳遞給模組的參數.參數可以有多個,之間用空格分隔開,如:

password required pam_unix.so nullok obscure min=4 max=8 md5

三、常用的PAM模組介紹

PAM模組結合管理類型說明pam_unix.so

auth

提示使用者輸入密碼,並與/etc/shadow檔案相比對.匹配返回0

account檢查使用者的帳號資訊(包括是否到期等).帳號可用時,返回0.password修改使用者的密碼. 將使用者輸入的密碼,作為使用者的新密碼更新shadow檔案pam_shells.so

auth

account

如果使用者想登入系統,那麼它的shell必須是在/etc/shells檔案中之一的shellpam_deny.so

account

auth

password

session

該模組可用於拒絕訪問pam_permit.so

auth

account

password

session

模組任何時候都返回成功.pam_securetty.soauth如果使用者要以root登入時,則登入的tty必須在/etc/securetty之中.pam_listfile.so

auth

account

password session

訪問應用程的控制開關pam_cracklib.sopassword

這個模組可以插入到一個程式的密碼棧中,用於檢查密碼的強度.

pam_limits.sosession定義使用系統資源的上限,root使用者也會受此限制,可以通過/etc/security/limits.conf或/etc/security/limits.d/*.conf來設定

四、執行個體

1、pam_securetty.so

限制root從tty1,tty2,tty5登入(無實際意義,只是示範pam_securetty的用法)

在/etc/pam.d/login中添加如下一行

1auth required pam_securetty.so

在/etc/pam.d/securetty中將tty1,tty2,tty5注釋即可

之後使用root使用者再次登入,就會出現

這麼做其實並不是只限制root使用者,也可以將其它使用者用此方法來限定,當系統安裝完成後,使用此方法來增強一下安全性。

2、pam_listfile.so

僅essun使用者可以通過ssh遠程登入

在/etc/pam.d/sshd檔案中添加一條

1auth required pam_listfile.so item=user sense=allowfile=/etc/sshdusersonerr=succeed

添加兩個使用者essun和tom

編輯file指定的檔案,添加上一個使用者essun

1#echo "essun" >/etc/sshdusers

使用tom使用者登入

可以看到提示輸入密碼,當輸入正確的密碼後會提示

就像輸入了錯誤的密碼一樣。而在使用essun使用者登入則不會出現拒絕登入的提示

註:此處如果root也使用ssh遠端連線,也會受到pam_listfile.so限制的。

其實pam模組的使用方法套路都差不多

如想瞭解更多的PAM模組的用法請man modules

溫馨提示:

如果發生錯誤,Linux-PAM 可能會改變系統的安全性。這取決於你自己的選擇,你可以選擇不安全(開放系統)和絕對安全(拒絕任何訪問)。通常,Linux-PAM 在發生錯誤時,傾向於後者。任何的配置錯誤都可能導致系統整個或者部分無法訪問。

配置 Linux-PAM 時,可能遇到最大的問題可能就是 Linux-PAM 的設定檔/etc/pam.d/*被刪除了。如果發生這種事情,你的系統就會被鎖住。

有辦法可以進行恢複,最好的方法就是用一個備份的鏡像來恢複系統,或者登入進單用

戶模式然後進行正確的配置。

=====================================完========================================

本文出自 “和風細雨” 部落格,請務必保留此出處http://essun.blog.51cto.com/721033/1391133

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.