啟用PAM認(rèn)證模塊后,無(wú)法登錄Linux實(shí)例的解決方案
本文介紹在Linux操作系統(tǒng)內(nèi)啟用PAM認(rèn)證模塊后,出現(xiàn)無(wú)法登錄Linux實(shí)例問(wèn)題的解決方案。
什么是PAM
PAM (Pluggable Authentication Modules)是一個(gè)身份認(rèn)證機(jī)制,可用于Linux系統(tǒng)中來(lái)實(shí)現(xiàn)用戶身份驗(yàn)證,加強(qiáng)系統(tǒng)的安全。
如果PAM模塊配置錯(cuò)誤,可能會(huì)導(dǎo)致用戶無(wú)法通過(guò)身份認(rèn)證,即使輸入了正確的密碼也無(wú)法登錄Linux實(shí)例。這種情況下,建議您聯(lián)系管理員檢查PAM模塊的配置,并根據(jù)需要進(jìn)行相應(yīng)的調(diào)整,以確保能夠成功登錄Linux實(shí)例。常見(jiàn)的與遠(yuǎn)程登錄實(shí)例的服務(wù)有ssh和login,這兩個(gè)服務(wù)在pam對(duì)應(yīng)的配置文件如下:
/etc/pam.d/login
:控制臺(tái)(管理終端)對(duì)應(yīng)的配置文件。例如密碼驗(yàn)證、賬戶鎖定和限制登錄IP等。/etc/pam.d/sshd
:SSH遠(yuǎn)程登錄的認(rèn)證信息。/etc/pam.d/system-auth
:系統(tǒng)級(jí)別的認(rèn)證信息,例如密碼策略、用戶信息和訪問(wèn)控制等。
如何修改PAM配置
僅root用戶(管理員)支持修改PAM配置,若您為非root用戶,請(qǐng)聯(lián)系管理員檢查并修改PAM配置。
PAM配置通常是為了加強(qiáng)系統(tǒng)安全,在修改PAM配置之前,請(qǐng)謹(jǐn)慎評(píng)估是否需要修改,以及所做的更改不會(huì)破壞系統(tǒng)的正常功能或?qū)е掳踩┒础?/p>
(可選)若root用戶輸入正確密碼也無(wú)法登錄,請(qǐng)先解鎖root用戶。否則,請(qǐng)?zhí)^(guò)該步驟。
使用單用戶模式登錄實(shí)例。
具體操作,請(qǐng)參見(jiàn)Linux系統(tǒng)進(jìn)入單用戶模式。
依次執(zhí)行如下命令,解鎖root用戶。
pam_tally2 -u root #查看root用戶登錄密碼連續(xù)輸入錯(cuò)誤次數(shù)。 pam_tally2 -u root -r #清除root用戶密碼連續(xù)輸入錯(cuò)誤次數(shù)。 authconfig --disableldap --update #更新PAM安全認(rèn)證記錄。
重啟ECS實(shí)例,使修改生效。
具體操作,請(qǐng)參見(jiàn)重啟實(shí)例。
使用root用戶登錄Linux實(shí)例。
具體操作,請(qǐng)參見(jiàn)使用VNC登錄實(shí)例。
執(zhí)行以下命令,打開(kāi)secure日志,查找包含pam字段的行,并確定與PAM設(shè)置相關(guān)聯(lián)的模塊名稱。
cat /var/log/secure
例如以下示例,模塊名稱為pam_succeed_if。
pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root".
根據(jù)獲取的模塊名稱,查找PAM配置文件是否存在相關(guān)配置。如存在,參考步驟5修改。
執(zhí)行以下命令,獲取以下3個(gè)PAM配置文件的配置信息。
cat /etc/pam.d/login cat /etc/pam.d/sshd cat /etc/pam.d/system-auth
使用grep命令,查找各配置文件中是否存在與secure日志相關(guān)的配置行。
grep "模塊名稱" /etc/pam.d/login grep "模塊名稱" /etc/pam.d/sshd grep "模塊名稱" /etc/pam.d/system-auth
例如,查找包含模塊名稱pam_succeed_if的行,執(zhí)行以下命令:
grep "pam_succeed_if" /etc/pam.d/login grep "pam_succeed_if" /etc/pam.d/sshd grep "pam_succeed_if" /etc/pam.d/system-auth
若PAM配置文件存在相關(guān)配置,您將看到類(lèi)似輸出:
/etc/pam.d/login:auth requisite pam_succeed_if.so uid >= 1000 quiet_success /etc/pam.d/system-auth:auth requisite pam_succeed_if.so uid >= 1000 quiet_success
若PAM配置文件存在相關(guān)配置,打開(kāi)對(duì)應(yīng)的配置文件,根據(jù)實(shí)際需求修改與secure日志中相關(guān)的配置,解除限制。
重要所有包含secure中模塊名稱的PAM配置文件,均需要修改。
執(zhí)行以下命令,打開(kāi)某一個(gè)對(duì)應(yīng)配置文件。
vim <配置文件名稱>
按
i
鍵,根據(jù)實(shí)際需求,注釋或更改對(duì)應(yīng)配置。PAM配置文件的語(yǔ)法信息,請(qǐng)參見(jiàn)PAM 配置(參考)。完成配置后,按
Esc
鍵,輸入:wq
保存。(可選)重復(fù)步驟a~c,修改其他配置文件。
重新登錄ECS實(shí)例,如果可以正常登錄,說(shuō)明問(wèn)題已修復(fù)。
因PAM配置不當(dāng)導(dǎo)致登錄失敗的常見(jiàn)錯(cuò)誤日志和對(duì)應(yīng)解決方案
secure日志提示:“requirement "uid >= 1000" not met by user "root"”
問(wèn)題原因
PAM配置文件中,設(shè)置了禁止UID小于1000的用戶登錄。
說(shuō)明系統(tǒng)用戶(包括root)UID為0~999,該限制一般是禁止系統(tǒng)用戶登錄系統(tǒng),增強(qiáng)系統(tǒng)的安全性。
解決方法
secure日志提示:Refused user xxx(用戶名)for service sshd
問(wèn)題原因
PAM配置文件中,設(shè)置了禁止xxx用戶登錄ECS實(shí)例。
解決方法
方法一:使用其他用戶登錄ECS實(shí)例。
方法二:查看PAM配置文件中是否存在相關(guān)配置并修改,來(lái)解除限制。具體操作,請(qǐng)參見(jiàn)步驟3~4。
配置文件中,存在類(lèi)似如下配置表示有該限制:
# 設(shè)置了訪問(wèn)白名單,僅允許白名單用戶允許登錄 auth required pam_listfile.so item=user sense=allow file=/etc/ssh/whitelist onerr=fail # 設(shè)置了訪問(wèn)黑名單,禁止黑名單用戶登錄 auth required pam_listfile.so item=user sense=deny file=/etc/ssh/blacklist onerr=fail
如何修改
將允許登錄的用戶添加到白名單或移除黑名單,或注釋該配置。
執(zhí)行如下命令,打開(kāi)
/etc/ssh/whitelist
配置文件。vim /etc/ssh/whitelist
按
i
進(jìn)入編輯模式。將允許的登錄的用戶添加到白名單中。
以下示例表示僅允許以下三個(gè)用戶登錄。
root ecs-user test
按
Esc
鍵,輸入:wq
退出并保存配置文件。
登錄Linux系統(tǒng)的ECS實(shí)例時(shí),提示“Maximum amount of failed attempts was reached”
問(wèn)題原因
連續(xù)多次輸入錯(cuò)誤密碼,觸發(fā)系統(tǒng)PAM認(rèn)證模塊策略限制,導(dǎo)致用戶被鎖定,無(wú)法登錄Linux實(shí)例。
解決方法
若root用戶被鎖定,請(qǐng)先解鎖root用戶。否則跳過(guò)該步驟。
使用單用戶模式登錄實(shí)例。
具體操作,請(qǐng)參見(jiàn)Linux系統(tǒng)進(jìn)入單用戶模式。
依次執(zhí)行如下命令,解鎖root用戶。
pam_tally2 -u root #查看root用戶登錄密碼連續(xù)輸入錯(cuò)誤次數(shù)。 pam_tally2 -u root -r #清除root用戶密碼連續(xù)輸入錯(cuò)誤次數(shù)。 authconfig --disableldap --update #更新PAM安全認(rèn)證記錄。
重啟ECS實(shí)例,使修改生效。
具體操作,請(qǐng)參見(jiàn)重啟實(shí)例。
使用root用戶登錄Linux實(shí)例。
具體操作,請(qǐng)參見(jiàn)使用VNC登錄實(shí)例。
執(zhí)行如下命令,查看PAM配置文件中是否存在認(rèn)證限制。
cat /etc/pam.d/system-auth
例如,系統(tǒng)返回如下時(shí),表示普通用戶和root用戶連續(xù)三次輸入錯(cuò)誤密碼,50秒后才能再次登錄Linux實(shí)例。
解決問(wèn)題。
方法一:等待PAM設(shè)置的凍結(jié)時(shí)長(zhǎng)(例如50秒),待系統(tǒng)解凍賬戶后,再重新登錄實(shí)例。
方法二:修改配置文件(下文
/etc/pam.d/system-auth
為例進(jìn)行說(shuō)明,其他配置文件修改方法類(lèi)似)。執(zhí)行如下命令,打開(kāi)
/etc/pam.d/system-auth
配置文件。vim /etc/pam.d/system-auth
按
i
進(jìn)入編輯模式。根據(jù)業(yè)務(wù)需要,注釋、修改或刪除該配置。
本文以注釋配置為例進(jìn)行說(shuō)明。
auth required pam_tally2.so deny=3 unlock_time=50 #原文代碼:普通用戶和root用戶連續(xù)三次輸入錯(cuò)誤密碼會(huì)被鎖定,50秒后才能解鎖。 #auth required pam_tally2.so deny=3 unlock_time=50 #注釋后
說(shuō)明此處使用的是
pam_tally2
模塊,不同的PAM版本,設(shè)置可能有所不同,詳情請(qǐng)參見(jiàn)Linux PAM SAG。