問題現象
啟用或修改Linux系統的PAM(Pluggable Authentication Modules)模組配置後,在系統日誌/var/log/secure中,出現以下任一錯誤會導致無法登入:
requirement "uid >= 1000" not met by user "xxxx"user xxxx (0) has 5 failed attempts, failed attempts threshold is 3Refused user xxxx for service sshd
解決方案
請確保至少有一個管理員賬戶(root使用者或其他擁有sudo許可權的普通使用者)可以登入執行個體,否則無法修改設定檔。
問題定位
使用管理員賬戶通過VNC串連登入ECS執行個體。
訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。
進入目標執行個體詳情頁,單擊遠端連線,選擇通過VNC遠端連線。輸入帳號和密碼,登入ECS執行個體。
檢查認證日誌,定位嚴重錯誤資訊。
賬戶因失敗嘗試被鎖定:若日誌包含
Maximum amount of failed attempts was reached,說明配置了連續密碼錯誤後鎖定使用者賬戶,需解除賬戶鎖定。sudo grep -i "Maximum amount of failed attempts" /var/log/secure使用者登入許可權被限制:若日誌包含
requirement "uid >= 1000" not met by user,說明配置了禁止UID小於1000的使用者登入,需解除UID限制。sudo grep -i "not met by user" /var/log/secure使用者被列入黑名單:若日誌包含
Refused user,說明配置了黑白名單檔案控制使用者訪問,目標使用者可能被顯式拒絕或未被列入白名單,需解除使用者黑白名單限制。sudo grep -i "Refused user" /var/log/secure
解除賬戶鎖定
檢查使用者的失敗登入次數。
將<username>替換為登入失敗的使用者名稱。
sudo sudo pam_tally2 -u <username>若輸出的失敗次數大於0,則表示賬戶被鎖定。
解鎖賬戶。
sudo pam_tally2 -u <username> -r永久修複(可選)。
如需禁用鎖定策略,可編輯
/etc/pam.d/system-auth檔案,注釋包含pam_tally2.so的規則。sudo vim /etc/pam.d/system-auth如下配置,表示普通使用者和root使用者連續三次輸入錯誤密碼會被鎖定,50秒後解鎖。
auth required pam_tally2.so deny=3 unlock_time=50上述使用的是
pam_tally2模組,不同的PAM版本,設定模組有所不同,請參見Linux PAM SAG。重新登入執行個體,驗證登入是否正常。
解除UID限制
定位設定檔。
尋找包含
pam_succeed_if的設定檔,如/etc/pam.d/sshd、/etc/pam.d/login或/etc/pam.d/system-auth。sudo grep -r "pam_succeed_if" /etc/pam.d/檢查並修改配置。
sudo vim /etc/pam.d/sshd對每個包含
auth required pam_succeed_if.so uid >= 1000的檔案,在其前面添加 # 號注釋對應行。# auth required pam_succeed_if.so uid >= 1000重新登入執行個體,驗證登入是否正常。
解除使用者黑白名單限制
定位設定檔。
尋找包含
pam_listfile的設定檔,如/etc/pam.d/sshd、/etc/pam.d/login或/etc/pam.d/system-auth。sudo grep -r "pam_listfile" /etc/pam.d/檢查配置。
sudo vim /etc/pam.d/sshd查看匹配的配置行,確認是白名單 (
sense=allow) 還是黑名單 (sense=deny),並找到名單檔案路徑(如/etc/ssh/whitelist或/etc/ssh/blacklist)。# 設定了訪問白名單,僅允許白名單使用者允許登入 auth required pam_listfile.so item=user sense=allow file=/etc/ssh/whitelist onerr=fail # 設定了訪問黑名單,禁止黑名單使用者登入 auth required pam_listfile.so item=user sense=deny file=/etc/ssh/blacklist onerr=fail根據配置類型修改設定檔。
白名單:在檔案末尾添加使用者名稱,每行一個使用者,儲存退出。
sudo vim /etc/ssh/whitelist黑名單:刪除包含目標使用者名稱的行,儲存退出。
sudo vim /etc/ssh/blacklist
重新登入執行個體,驗證登入是否正常。