检查 Active Directory 的主要身份验证协议(NTLM 还是 Kerberos?)

检查 Active Directory 的主要身份验证协议(NTLM 还是 Kerberos?)

如何从客户端计算机(在全局组中)(也是本地管理员)检查域控制器是否使用 NTLM 或 Kerberos 验证我对域的登录请求?

我知道 Kerberos 默认启用,但域管理员始终可以强制客户端使用其他协议进行身份验证。所以我只想确定他们使用的是哪种协议。有什么方法可以检查吗?

任何帮助,将不胜感激

答案1

Greg 的回答还不错,但您的问题明确指出您希望从客户端而不是域控制器检查这一点。所以我会尝试一下。

第一种方法,在客户端上启用 Kerberos 日志记录:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
    LogLevel DWORD 0x1

一旦启用 Kerberos 日志记录,就可以登录并查看事件日志。如果您使用的是 Kerberos,那么您将在事件日志中看到活动。如果您正在传递凭据,但在事件日志中没有看到任何 Kerberos 活动,那么您正在使用 NTLM。

第二种方法,您可以使用 klist.exe 实用程序查看您当前的 Kerberos 票证。如果您是第一次对服务进行身份验证,这肯定会对您有所帮助,因为您将获得一张新票证……但是对于对同一服务的后续身份验证,您可以重复使用同一张票证,因此 klist.exe 对您来说可能用处不大。

第三种方法,使用 Wireshark 观察身份验证的发生。

答案2

一种方法是检查域控制器安全事件日志中的事件 ID 4624(登录)事件,其中 AuthenticationPackageName 是 NTLM 或 Kerberos。您还应该验证您的域控制器是否已启用审核,并且正在捕获所需的审核事件。

您可以创建自定义事件查看器过滤器以简化此操作,并过滤其他字段,如用户名或工作站名称:

<QueryList>  
  <Query Id="0" Path="Security">
    <Select Path="Security">*[EventData[Data[@Name="AuthenticationPackageName"] = "NTLM"] and System[(EventID=4624)]]</Select>
  </Query> 
</QueryList>  


<QueryList>  
  <Query Id="0" Path="Security">
    <Select Path="Security">*[EventData[Data[@Name="AuthenticationPackageName"] = "Kerberos"] and System[(EventID=4624)]]</Select>
  </Query> 
</QueryList> 

NTLM

凯尔伯罗斯

答案3

您可以强制您的客户端仅使用其中一个,以确保您使用的是 Kerberos(或者如果您出于某种原因更喜欢使用 NTLM)。

Microsoft 有一个指南,您可能会觉得有用。它告诉您如何评估和限制 NTLM 的使用。 审计和限制 NTLM 使用指南

相关内容