歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> Linux的基於PAM的用戶認證

Linux的基於PAM的用戶認證

日期:2017/2/27 9:41:27   编辑:更多Linux
  任何要授予用戶特權的程序都要能夠進行用戶認證。當您登入系統時,您需要提供用戶名和口令,而後登入進程據此以檢驗登入的合法性---確認您就是該用戶。還有除口令認證之外的其他認證形式,而且口令的存儲方式也是各不相同的。PAM(可插拔認證模塊)方式允許系統管理員設置多種認證措施而無須重新編譯要進行認證的程序。使用PAM,您通過編輯一個配置文件來決定認證模塊如何插入到程序之中。大多數紅帽子Linux用戶無須改動這個配置文件。因為如果使用RPM來安裝程序的話,系統會自動做有關改動。但是,如果您想定制認證模塊的話,就需要理解配置文件內容。 PAM 模塊PAM定義了四種類型的模塊。auth模塊提供實際的認證過程,可能是提示口令輸入並檢查輸入的口令,設置保密字如用戶組或KERBEROS通行證。account模塊負責檢查並確認是否可以進行認證(比如,帳戶是否到期,用戶此時此刻是否可以登入,等等)。 passWord模塊被用來設置口令。一旦用戶認證通過,session模塊將被用來做使用戶使用其帳戶前的初始化工作,如安裝用戶的HOME目錄啦,使能用戶的電子郵箱啦,等等。這些模塊可以堆疊,多次使用。比如:rlogin通常使用至少兩種認證方法,如果“rhosts” 認證成功了,就允許建立連接,否則還要進行標准的口令認證。隨時可以加入新的模塊,而PAM感知的程序可以被配置來使用它。舉個例子,如果您有一個一次性口令計算系統,可以寫出一個模塊來(系統中包含有如何書寫模塊的文檔資料),PAM感知的程序無須重新編譯就可以使用這個新的一次性口令計算器。 服務每個使用PAM的程序定義它自己的服務名稱。login程序定義其服務類型為login,FTPd程序定義其服務類型為ftp,等等。一般來說,服務類型就是存取該服務的程序的名字,而不是提供服務的程序。 配置文件目錄/etc/pam.d被用來配置所有的PAM應用程序。(在早期的PAM版本中用的是 /etc/pam.conf;但是若/etc/pam.d不存在的話,仍舊會找/etc/pam.conf,不過記住,這是一個過時的文件。)。每一個應用程序(確切的說是服務)都有它自己的配置文件。 一個真實的文件可能如下:

#%PAM-1.0 auth required /lib/security/pam_securetty.so auth required /lib/security/pam_pwdb.so shadow nullok auth required /lib/security/pam_nologin.so account required /lib/security/pam_pwdb.so password required /lib/security/pam_cracklib.so password required /lib/security/pam_pwdb.so shadow nullok use_authtok session required /lib/security/pam_pwdb.so 第一行是注釋。任何以#開頭的行都是注釋。以下的三行排列著用於login認證的三個模塊其中第一行用以確認用戶是否以root登入,允許登入的tty被列在文件/etc/securetty 中(如果文件存在的話)第二行將會使用戶被提示輸入口令並校驗口令。第三行表示查文件/etc/nologin是否存在,如果存在就顯示其內容,而且如果用戶不是root,則禁止其登入。即便第一個模塊失敗了,也要完成三個模塊的校驗。這是一種安全上的考慮 ---這種設計永遠不要讓用戶知道他或她們為什麼會被拒絕,否則會讓其更容易突破認證。您可以將“required”改成“requisite”來修改這種認證方式。也就是說,如果有任何“requisite”模塊以失敗返回,整個PAM認證將終止再調用其它模塊也以失敗返回。第五行表示任何必要的記帳信息要被記載。例如,如果設置使用影子口令,pam_db.so 模塊將被執行以檢查該帳戶是否失效或者用戶口令是否超期而需要修改。第六行(該行需要折行來寫)用以指定如果login程序改變用戶的口令,它應當使用 pam_pwdb.so來完成。(這僅在auth模塊檢測到口令需要被改變時,例如一個影子口令已經過期時才使用)最後一行表示pam_pwdb.so模塊將被用來管理當前的會話過程。而目前該模塊什麼也不做;它可以被替換為別的所需的模塊。要注意配置文件中每一行的順序不是任意的。盡管required模塊以什麼順序被調用並沒有多大關系,但是還有其它一些控制符,其中optional很少在紅帽子LINUX中使用,而 sufficient 和requisite就要求行的順序不能顛倒。讓我們來看一下rlogin的認證配置:

auth required /lib/security/pam_securetty.so


auth sufficient /lib/security/pam_rhosts_auth.so auth required /lib/security/pam_pwdb.so shadow nullok auth required /lib/security/pam_nologin.so這和login的描述極為相似,但是其中比login的多一行模塊描述,而且模塊的順序也不同。首先,pam_securetty.so模塊將禁止以root從不安全的終端登入。這將有效的阻止任何root方式的遠程登入。如果您不想禁止的話(在這種情況下,我們建議您的機器要麼沒和Internet 相連,要麼呆在一個配置良好的防火牆後面),把這一行刪掉就是了。其次,pam_nologin.so 模塊將檢查/etc/nologin,如上所述。第三點,如果pam_rhosts_auth.so模塊認證通過,PAM就立即以成功返回而不再做任何口令校驗。如果pam_rhosts_auth.so認證失敗,該失敗將被忽略,繼續調用pam_pwdb.so模塊進行正常的口令認證。如果您在securetty認證失敗後不想讓系統繼續以口令詢問的話,您可以把pam_securetty.so模塊的required 改為 requisite。



Copyright © Linux教程網 All Rights Reserved