如何从客户端计算机(在全局组中)(也是本地管理员)检查域控制器是否使用 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>
答案3
您可以强制您的客户端仅使用其中一个,以确保您使用的是 Kerberos(或者如果您出于某种原因更喜欢使用 NTLM)。
Microsoft 有一个指南,您可能会觉得有用。它告诉您如何评估和限制 NTLM 的使用。 审计和限制 NTLM 使用指南