


Linux的基于PAM的用戶認(rèn)證
任何要授予用戶特權(quán)的程序都要能夠進(jìn)行用戶認(rèn)證。當(dāng)您登入系統(tǒng)時(shí),您需要提供用戶名和口令,而后登入進(jìn)程據(jù)此以檢驗(yàn)登入的合法性---確認(rèn)您就是該用戶。還有除口令認(rèn)證之外的其他認(rèn)證形式,而且口令的存儲(chǔ)方式也是各不相同的。
PAM(可 插拔認(rèn)證模塊)方式允許系統(tǒng)管理員設(shè)置多種認(rèn)證措施而無須重新編譯要進(jìn)行認(rèn)證的程序。使用PAM,您通過編輯一個(gè)配置文件來決定認(rèn)證模塊如何插入到程序之 中。大多數(shù)紅帽子LINUX用戶無須改動(dòng)這個(gè)配置文件。因?yàn)槿绻褂肦PM來安裝程序的話,系統(tǒng)會(huì)自動(dòng)做有關(guān)改動(dòng)。但是,如果您想定制認(rèn)證模塊的話,就需 要理解配置文件內(nèi)容。
PAM 模塊
PAM定義了四種類型的模塊。auth模塊提供實(shí)際的認(rèn)證過程, 可能是提示口令輸入并檢查輸入的口令,設(shè)置保密字如用戶組或KERBEROS通行證。account模塊負(fù)責(zé)檢查并確認(rèn)是否可以進(jìn)行認(rèn)證(比如,帳戶是否 到期,用戶此時(shí)此刻是否可以登入,等等)。 password模塊被用來設(shè)置口令。一旦用戶認(rèn)證通過,session模塊將被用來做使用戶使用其帳戶前的初始化工作,如安裝用戶的HOME目錄啦,使 能用戶的電子郵箱啦,等等。這些模塊可以堆疊,多次使用。比如:rlogin通常使用至少兩種認(rèn)證方法,如果“rhosts” 認(rèn)證成功了,就允許建立連接,否則還要進(jìn)行標(biāo)準(zhǔn)的口令認(rèn)證。隨時(shí)可以加入新的模塊,而PAM感知的程序可以被配置來使用它。舉個(gè)例子,如果您有一個(gè)一次性 口令計(jì)算系統(tǒng),可以寫出一個(gè)模塊來(系統(tǒng)中包含有如何書寫模塊的文檔資料),PAM感知的程序無須重新編譯就可以使用這個(gè)新的一次性口令計(jì)算器。
服務(wù)
每個(gè)使用PAM的程序定義它自己的服務(wù)名稱。login程序定義其服務(wù)類型為login,ftpd程序定義其服務(wù)類型為ftp,等等。一般來說,服務(wù)類型就是存取該服務(wù)的程序的名字,而不是提供服務(wù)的程序。
配置文件
目 錄/etc/pam.d被用來配置所有的PAM應(yīng)用程序。(在早期的PAM版本中用的是 /etc/pam.conf;但是若/etc/pam.d不存在的話,仍舊會(huì)找/etc/pam.conf,不過記住,這是一個(gè)過時(shí)的文件。)。每一個(gè)應(yīng) 用程序(確切的說是服務(wù))都有它自己的配置文件。
一個(gè)真實(shí)的文件可能如下:
#%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認(rèn)證的三個(gè)模塊其中第一行用以確認(rèn)用戶是否以root登入,允許登 入的tty被列在文件/etc/securetty 中(如果文件存在的話)第二行將會(huì)使用戶被提示輸入口令并校驗(yàn)口令。第三行表示查文件/etc/nologin是否存在,如果存在就顯示其內(nèi)容,而且如果 用戶不是root,則禁止其登入。即便第一個(gè)模塊失敗了,也要完成三個(gè)模塊的校驗(yàn)。這是一種安全上的考慮 ---這種設(shè)計(jì)永遠(yuǎn)不要讓用戶知道他或她們?yōu)槭裁磿?huì)被拒絕,否則會(huì)讓其更容易突破認(rèn)證。您可以將“required”改成“requisite”來修改這 種認(rèn)證方式。也就是說,如果有任何“requisite”模塊以失敗返回,整個(gè)PAM認(rèn)證將終止再調(diào)用其它模塊也以失敗返回。第五行表示任何必要的記帳信 息要被記載。例如,如果設(shè)置使用影子口令,pam_db.so 模塊將被執(zhí)行以檢查該帳戶是否失效或者用戶口令是否超期而需要修改。第六行(該行需要折行來寫)用以指定如果login程序改變用戶的口令,它應(yīng)當(dāng)使用 pam_pwdb.so來完成。(這僅在auth模塊檢測(cè)到口令需要被改變時(shí),例如一個(gè)影子口令已經(jīng)過期時(shí)才使用)最后一行表示pam_pwdb.so模 塊將被用來管理當(dāng)前的會(huì)話過程。而目前該模塊什么也不做;它可以被替換為別的所需的模塊。要注意配置文件中每一行的順序不是任意的。盡管required 模塊以什么順序被調(diào)用并沒有多大關(guān)系,但是還有其它一些控制符,其中optional很少在紅帽子LINUX中使用,而 sufficient 和requisite就要求行的順序不能顛倒。
讓我們來看一下rlogin的認(rèn)證配置:
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方式的遠(yuǎn)程登入。如果您不想禁止的話(在這種情況下,我們建議您的機(jī)器要么沒和Internet 相連,要么呆在一個(gè)配置良好的防火墻后面),把這一行刪掉就是了<
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解