Linux

為什麼 sshd 仍然在使用 PAM?

  • February 13, 2015

背景/行為是:如果您 ssh 到 box via 並且 GSSAPI/Kerberos 成功並且您在**/etc/passwd**中有一個本地使用者,那麼您可以按照下面的 PAM 配置正常登錄。那裡一切都好。

但是,如果您在/etc/passwd中沒有本地使用者,但您可以獲得主機/XXXXXX 服務票證(GSSAPI 有效),則 sshd 登錄失敗並且永遠不會收到 SecurID 提示(我們的 pam 半徑指向 SecurID)。我明白那個。由於伺服器對使用者進行了“身份驗證”,並且 pam_unix知道該使用者不在 /etc/passwd 中,因此無需使用任何其他身份驗證方法。

但是,我的問題是,如果我第一次執行 kdestroy(故意讓 GSSAPI 失敗),(並且 /etc/passwd 中仍然不存在),為什麼我會突然得到一個 Securid 提示(即 PAM 已啟用)?

使用調試執行 sshd 顯示:為無效使用者“使用者”推遲鍵盤互動。首先,為什麼它不會簡單地失敗?二、為什麼要拖延?pam_radius 是“必需的”,而不是“必需的”。

我希望也能簡單地失敗,因為即使我沒有進行身份驗證,我也永遠不會通過 pam_unix。

文件:

/etc/ssh/sshd_config

....  
ChallengeResponseAuthentication yes  
GSSAPIAuthentication            yes  
HostbasedAuthentication         no  
KerberosAuthentication          no  
PasswordAuthentication          no  
PubkeyAuthentication            yes  
RhostsRSAAuthentication         no  
RSAAuthentication               yes  
UsePAM                          yes      
....

/etc/pam.d/sshd

auth       requisite        pam_radius_auth.so conf=pam_radius_auth.conf debug retry=3  
auth       required     pam_nologin.so  
auth     required     pam_krb5.so.1  
account  sufficient      pam_radius_auth.so conf=pam_radius_auth.conf  
account    required     pam_stack.so service=system-auth  
password   required     pam_stack.so service=system-auth  
session    required     pam_stack.so service=system-auth  
session    required     pam_limits.so  
session    optional     pam_console.so  

/etc/pam.d/system-auth

auth        required      pam_env.so  
auth        sufficient    pam_krb5.so.1  
auth        sufficient    pam_unix.so  
auth        required      pam_deny.so  
account     required      pam_unix.so  
password    required      pam_cracklib.so retry=3  
password    sufficient    pam_unix.so use_authtok md5 shadow  
password    required      pam_deny.so  
session     required      pam_limits.so  
session     required      pam_unix.so  

PAM 不處理 GSSAPI 身份驗證。kerberos 的 PAM 模組用於對使用者進行密碼認證,使用 kerberos 協議獲取有效票據。

GSSAPI 認證有 3 個結果。

  1. 身份驗證失敗,因為已發送憑據但憑據無效。
  2. 使用提供的憑據成功進行身份驗證。
  3. 身份驗證被忽略,因為沒有提供憑據。

如果結果為 1,則請求被徹底拒絕,因為令牌已發送但失敗。SSHD 不會嘗試其他身份驗證方法。

如果結果為 3,sshd接下來將嘗試其他身份驗證方法,其中包括 PAMauth部分。

我不熟悉,pam_radius但我認為無論出於安全原因使用者是否存在,它都會請求身份驗證令牌。讓它立即失敗向使用者/攻擊者表明這樣的使用者不存在,因此您可以從消除過程中列舉使用者。

至於“必備”選項,在堆棧設置中給出“必備”和“必備”具有相同的影響。pam_krb無論如何都無法在沒有有效使用者的情況下請求票證,因此最終會立即失敗。

對於給定的配置pam_unix不是用於身份驗證而是用於授權,這是在身份驗證之後發生的一個步驟。澄清; 身份驗證涉及證明您是您所說的人,而授權涉及您擁有正確的權限來做您想做的事情(在這種情況下是登錄)。

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