0x19 KDC_ERR_PREAUTH_REQUIRED 在我的事件日志中

Rya*_*ies 5 windows active-directory kerberos

所以我有一个服务器,每次用户或服务帐户登录机器时,系统日志中都会生成一个错误事件:

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.
Run Code Online (Sandbox Code Playgroud)

所以我当然在谷歌上搜索了这个,我得到的唯一信息是“它不一定表明有问题,你通常可以忽略它。”

好吧,太好了,但是这些错误大约每分钟向我的系统日志发送一次垃圾邮件,我真的想让它们停止。有任何想法吗?

来自 Microsoft AskDS 博客:

KDC_ERR_PREAUTH_REQUIRED

如果您在跟踪中看到此错误,则根本不表示存在问题。客户端请求了一张票,但没有在其中包含预身份验证数据。您通常会看到相同的请求与数据和发出票证的域控制器一起再次发送。Windows 使用此技术来确定支持的加密类型。

小智 9

我不能帮你阻止他们;恐怕我是一个 Linux 人。我至少可以解释它们。理解此消息需要对 Kerberos 身份验证的工作原理进行一些探讨。

基本的 Kerberos 身份验证过程是客户端向 KDC 请求加密的 TGT,然后使用其本地密钥对其进行解密。然而,天真地实施,这允许攻击者为您领域中的每个用户下载 TGT,然后在攻击者空闲时尝试通过蛮力攻击解密它们。因此,Kerberos 添加了一种称为预身份验证的机制。

预身份验证的工作方式是,KDC 在收到 TGT 请求时,会发送回预身份验证质询,而不是仅发送回 TGT。预认证质询可以采取多种形式,但最常见的要求客户端发送在客户端密钥中加密的当前时间。然后,KDC 在发送 TGT 之前确认客户端可以这样做(这表明对客户端密钥有一些了解)。

然而,部分是因为添加了预身份验证,部分是因为客户端不知道将发送什么预身份验证质询,客户端总是发送基本的 TGT 请求,然后 KDC 总是用预身份验证质询拒绝它。这些日志消息是 Active Directory 记录的事实,即它在未经预身份验证的情况下收到了 TGT 请求并发回了质询。

你的猜测和我的一样好,为什么要记录这个,因为它是协议的正常部分,并不是很有趣,但所有基于 Linux 的 KDC 都做同样的事情。