Linux

TGT 驗證失敗,但僅限於一位使用者

  • October 14, 2010

我在這裡看到了最奇怪的事情。我有幾台 RHEL3、4 和 5 機器,它們通過 Kerberos 驗證使用者憑據,並將 Active Directory 域控制器作為其 KDC。

這適用於我的所有使用者,保存一個。有一個帳戶無法登錄到 RHEL3 Linux 機器並在那裡生成以下錯誤:

May 31 13:53:19 mybox sshd(pam_unix)[7186]: authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.0.0.1  user=user
May 31 13:53:20 mybox sshd[7186]: pam_krb5: TGT verification failed for `user'
May 31 13:53:20 mybox sshd[7186]: pam_krb5: authentication fails for `user'

其他賬戶,比如我自己的,都很好:

May 31 17:25:30 mybox sshd(pam_unix)[12913]: authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.0.0.1  user=myuser
May 31 17:25:31 mybox sshd[12913]: pam_krb5: TGT for myuser successfully verified
May 31 17:25:31 mybox sshd[12913]: pam_krb5: authentication succeeds for `myuser'
May 31 17:25:31 mybox sshd(pam_unix)[12915]: session opened for user myuser by (uid=0)

如您所見,TGT 驗證失敗。這只發生在這個特定帳戶上,不會發生在任何其他帳戶上。

失敗的使用者帳戶的密碼已被重置,我檢查了 Active Directory 中的兩個使用者對象,但沒有發現任何異常。

如果我將失敗的使用者帳戶登錄到 RHEL4 或 5 框,則沒有問題,因此它必須是 RHEL3 特定的,但只有一個帳戶受此影響的事實暗示了我。也許有人以前見過這個?

我會無恥地回答我自己的問題,因為我們找到了答案。未能通過身份驗證的使用者對像中包含某種證書,這使得該對象與其他使用者對象相比相當大。

Kerberos 是 Active Directory 的一個組件,它有一個名為“MaxTokenSize”的屬性。預設情況下,它設置為 12.000 字節。在舊版本的 Active Directory 中,它是 8.000 字節。大多數情況下,您會看到人們遇到麻煩,是因為他們將使用者放在太多組中(大約 70 到 100 個組)。根據這篇 TechNet 文章,擁有這麼大的使用者對象會導致 MaxTokenSize 對於身份驗證所需的緩衝區來說太小了。

我無法找到任何與執行 Linux 的客戶端有關的討論這個問題的消息來源,但我確實找到了這個關於 OpenAFS(使用 Kerberos)的站點,該站點討論了使用 AD 的 Kerberos 時票證過大。

長話短說,我遇到問題的使用者並不在很多組中,但如前所述,他的 LDAP 對像中確實有一個巨大的 ass 證書,這使得它非常大。

刪除證書會使使用者對象縮小到足以在 RHEL3 上重新啟用 Kerberos 身份驗證。

你可以kinit作為一個工作和非工作使用者,從 Unix 盒子嗎?如果是這樣,klist每個人說什麼?

完成此操作後,請嘗試使用其中一張票,然後查看 klist 顯示的每張票。

如果kinit有效,並且您獲得的票有效(例如,再次嘗試 ssh’ing 回到盒子中),那麼確實有些奇怪,如果無法觸摸盒子,我不確定下一步該去哪裡。

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