Linux的基于PAM的用戶認證
任何要授予用戶特權的程序都要能夠進行用戶認證。當您登入系統時,您需要提供用戶名和口令,而后登入進程據此以檢驗登入的合法性---確認您就是該用戶。還有除口令認證之外的其他認證形式,而且口令的存儲方式也是各不相同的。
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 相連,要么呆在一個配置良好的防火墻后面),把這一行刪掉就是了<
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解