為什麼 sshd 仍然在使用 PAM?
背景/行為是:如果您 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,則請求被徹底拒絕,因為令牌已發送但失敗。SSHD 不會嘗試其他身份驗證方法。
如果結果為 3,
sshd
接下來將嘗試其他身份驗證方法,其中包括 PAMauth
部分。我不熟悉,
pam_radius
但我認為無論出於安全原因使用者是否存在,它都會請求身份驗證令牌。讓它立即失敗向使用者/攻擊者表明這樣的使用者不存在,因此您可以從消除過程中列舉使用者。至於“必備”選項,在堆棧設置中給出“必備”和“必備”具有相同的影響。
pam_krb
無論如何都無法在沒有有效使用者的情況下請求票證,因此最終會立即失敗。對於給定的配置
pam_unix
不是用於身份驗證而是用於授權,這是在身份驗證之後發生的一個步驟。澄清; 身份驗證涉及證明您是您所說的人,而授權涉及您擁有正確的權限來做您想做的事情(在這種情況下是登錄)。