PAM 拒絕規則不適用於 Google Cloud 中的 Ubuntu
我添加了
auth requisite pam_deny.so
/etc/pam.d/
作為(包括)中每個文件的第一行sshd
,但 SSH 連接仍然成功,沒有問題。這是在預設的 Google Cloud Ubuntu 實例上,因此它設置了某種神秘的身份驗證。如何讓我的拒絕命令被應用?基本檢查
/etc/ssh/sshd_config
有線UsePAM yes
/etc/ssh/sshd_config
禁用了其他身份驗證方法:HostbasedAuthentication no IgnoreUserKnownHosts yes IgnoreRhosts yes PasswordAuthentication no ChallengeResponseAuthentication no KerberosAuthentication no GSSAPIAuthentication no UseLogin no
/etc/nsswitch.conf
沒有自定義passwd
條目:passwd: compat group: compat shadow: compat gshadow: files hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files
- 重新啟動
sshd
服務- 停止
journalctl -f
通過 SSH 登錄時沒有關於身份驗證機制的提示- 已為 Google Cloud 項目停用 OS Login,並
google_oslogin_control
顯示其狀態為deactivated
我使用在 Google Cloud 項目元數據中配置的項目範圍的 SSH 密鑰登錄。該實例用於
cloud-init
設置 SSH 密鑰等,但我找不到任何關於可能配置哪些內容來覆蓋 PAM 的身份驗證機制的提示。任何關於什麼可能覆蓋 PAM 的身份驗證機制的提示將不勝感激!
NB 這樣做的目的是最終啟用 PAM 模組進行雙重身份驗證。
忽略拒絕命令有兩個不同的原因,它們對應於繞過 PAM 身份驗證的兩個系統。
- 執行時忽略它
sudo
,因為使用者配置了NOPASSWD
標誌。此標誌在/etc/sudoers.d
具有該行的文件中啟用%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL
我的使用者屬於該
google-sudoers
組。正如手冊所說:預設情況下,sudo 要求使用者在執行命令之前對其進行身份驗證。可以通過 NOPASSWD 標記修改此行為。
因此,使用
sudo
完全繞過身份驗證(包括 PAM)。 2. 當使用公鑰通過 SSH 登錄時,它會被忽略,因為 SSH 公鑰身份驗證會繞過 PAM。通過man sshd_config
Ubuntu 18.04 訪問的手冊說如果設置為 yes,這將啟用使用 ChallengeResponseAuthentication 和 PasswordAuthentication 的 PAM 身份驗證以及所有身份驗證類型的 PAM 帳戶和會話模組處理。
因此 PAM 身份驗證僅適用於兩種類型的身份驗證:質詢響應和密碼。PAM 不用於公鑰認證。
AuthenticationMethods publickey,keyboard-interactive
您可以通過添加來強制拒絕應用/etc/sshd_config
。這要求使用者使用兩種方法進行身份驗證:首先通過公鑰(這將不使用 PAM),然後通過質詢響應(這將使用 PAM)。