我的事件日誌中的 0x19 KDC_ERR_PREAUTH_REQUIRED
所以我有一台伺服器,每次使用者或服務賬戶登錄機器時,系統日誌中都會產生一個錯誤事件:
A Kerberos Error Message was received: on logon session DOMAIN\serviceaccount Client Time: Server Time: 12:44:21.0000 10/9/2012 Z Error Code: 0x19 KDC_ERR_PREAUTH_REQUIRED Extended Error: Client Realm: Client Name: Server Realm: DOMAIN Server Name: krbtgt/DOMAIN Target Name: krbtgt/DOMAIN@DOMAIN Error Text: File: e Line: 9fe Error Data is in record data.
所以當然我用Google搜尋了這個,我得到的唯一資訊是“它不一定表示有問題,你通常可以忽略它。”
好吧,天哪,那太好了,但是這些錯誤大約每分鐘一次向我的系統日誌發送垃圾郵件,我真的很想讓它們停止。有任何想法嗎?
來自 Microsoft AskDS 部落格:
KDC_ERR_PREAUTH_REQUIRED
如果您在跟踪中看到此錯誤,則根本不表示存在問題。客戶端請求了一張票,但沒有包含預認證數據。您通常會看到與數據和發出票證的域控制器再次發送相同的請求。Windows 使用此技術來確定支持的加密類型。
我不能幫你阻止他們;恐怕我是 Linux 人。我至少可以解釋他們。理解此消息需要稍微偏離一下 Kerberos 身份驗證的工作原理。
基本的 Kerberos 身份驗證過程是客戶端從 KDC 請求加密的 TGT,然後使用其本地密鑰對其進行解密。然而,天真地實現,這允許攻擊者為您領域中的每個使用者下載 TGT,然後在攻擊者空閒時嘗試通過暴力攻擊解密它們。因此,Kerberos 添加了一種稱為預身份驗證的機制。
預身份驗證的工作方式是,KDC 在收到 TGT 請求時,會發回預身份驗證質詢,而不僅僅是發回 TGT。預認證挑戰可以採取多種形式,但最常見的形式是要求客戶端發送以客戶端密鑰加密的目前時間。然後,KDC 在發送 TGT 之前確認客戶端可以執行此操作(這表明對客戶端密鑰有一定的了解)。
但是,部分是因為添加了預身份驗證,部分是因為客戶端不知道將發送什麼預身份驗證質詢,客戶端總是發送基本的 TGT 請求,然後 KDC 總是用預身份驗證質詢拒絕它。這些日誌消息是 Active Directory 記錄它在沒有預先身份驗證的情況下收到 TGT 請求並發回質詢的事實。
你的猜測和我的猜測一樣好,因為它是協議的正常部分,而且不是非常有趣,但所有基於 Linux 的 KDC 都做同樣的事情。