如何从客户端机器(在全局组)(也是本地pipe理员)中检查域控制器是否使用NTLM或Kerberosvalidation了对域的login请求?
我知道默认情况下启用了Kerberos,但域Admin始终可以强制客户端使用其他协议进行authentication。 所以我只是想确定他们正在使用哪个协议。 有什么方法可以检查吗?
任何帮助,将不胜感激
格雷格的答案是正确的,但是你的问题明确指出,你想从客户端,而不是从域控制器检查。 所以我会采取一些措施。
第一种方法,启用客户端上的Kerberos日志logging:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters LogLevel DWORD 0x1
一旦启用了Kerberos日志logging,那么login到内容并观察事件日志。 如果您使用的是Kerberos,那么您将在事件日志中看到该活动。 如果您正在传递您的凭据,并且您没有在事件日志中看到任何Kerberos活动,那么您正在使用NTLM。
第二种方法是,您可以使用klist.exe实用程序查看当前的Kerberos票据。 如果您是第一次对服务进行身份validation,这肯定会对您有所帮助,因为您将获得新的票证…但是对于随后对同一服务的身份validation,您可以重复使用相同的票证,因此klist.exe可能会对你的使用有限。
第三种方法,用Wireshark观察authentication。
一种方法是检查域控制器安全事件日志中的事件Id 4264(login)事件,其中AuthenticationPackageName是NTLM或Kerberos。 您还应该validation您的域控制器是否已启用审计,并且正在捕获所需的审计事件。
您可以创build自定义事件查看器filter,以使其更容易,并过滤其他字段,如用户名或工作站名称:
<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>


您可以强制您的客户端只使用其中一种,以确保您使用的是Kerberos(如果出于某种原因,您更喜欢使用NTLM)。
微软有一个指导,你可能会发现有帮助。 它说明如何评估和限制NTLM的使用。 审核和限制NTLM使用指南