Ssh

PAM 拒絕規則不適用於 Google Cloud 中的 Ubuntu

  • October 4, 2018

我添加了

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服務
  • 停止google名稱中的所有服務
  • journalctl -f通過 SSH 登錄時沒有關於身份驗證機制的提示
  • 已為 Google Cloud 項目停用 OS Login,並google_oslogin_control顯示其狀態為deactivated

我使用在 Google Cloud 項目元數據中配置的項目範圍的 SSH 密鑰登錄。該實例用於cloud-init設置 SSH 密鑰等,但我找不到任何關於可能配置哪些內容來覆蓋 PAM 的身份驗證機制的提示。

任何關於什麼可能覆蓋 PAM 的身份驗證機制的提示將不勝感激!

NB 這樣做的目的是最終啟用 PAM 模組進行雙重身份驗證。

忽略拒絕命令有兩個不同的原因,它們對應於繞過 PAM 身份驗證的兩個系統。

  1. 執行時忽略它sudo,因為使用者配置了NOPASSWD標誌。此標誌在/etc/sudoers.d具有該行的文件中啟用
%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL

我的使用者屬於該google-sudoers組。正如手冊所說:

預設情況下,sudo 要求使用者在執行命令之前對其進行身份驗證。可以通過 NOPASSWD 標記修改此行為。

因此,使用sudo完全繞過身份驗證(包括 PAM)。 2. 當使用公鑰通過 SSH 登錄時,它會被忽略,因為 SSH 公鑰身份驗證會繞過 PAM。通過man sshd_configUbuntu 18.04 訪問的手冊說

如果設置為 yes,這將啟用使用 ChallengeResponseAuthentication 和 PasswordAuthentication 的 PAM 身份驗證以及所有身份驗證類型的 PAM 帳戶和會話模組處理。

因此 PAM 身份驗證僅適用於兩種類型的身份驗證:質詢響應和密碼。PAM 不用於公鑰認證。

AuthenticationMethods publickey,keyboard-interactive您可以通過添加來強制拒絕應用/etc/sshd_config。這要求使用者使用兩種方法進行身份驗證:首先通過公鑰(這將不使用 PAM),然後通過質詢響應(這將使用 PAM)。

引用自:https://serverfault.com/questions/933720