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

And*_*son 5 active-directory kerberos authentication ntlm

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

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

任何帮助,将不胜感激

Rya*_*ies 6

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

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
    LogLevel DWORD 0x1
Run Code Online (Sandbox Code Playgroud)

启用 Kerberos 日志记录后,登录到 stuff 并查看事件日志。如果您使用的是 Kerberos,那么您将在事件日志中看到活动。如果您正在传递您的凭据并且在事件日志中看不到任何 Kerberos 活动,那么您正在使用 NTLM。

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

第三种方式,使用 Wireshark 观察身份验证。


Gre*_*kew 5

一种方法是检查域控制器安全事件日志中的事件 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> 
Run Code Online (Sandbox Code Playgroud)

NTLM

Kerberos