您如何确定Active Directory使用的是Kerberos还是NTLM?


15

有没有可以使用的命令行程序?


我无权访问域控制器,只有其他客户端。
LeWoody

下载Thunderbird邮件客户端并输入您的登录信息,如果Active Directory使用Kerberos或NTLM,Thunderbird将自动发现。
Eric Leschinski 2013年

Answers:


9

我认为问题应该被扭转。Active Directory支持Kerberos和NTLM。Windows将首先尝试Kerberos,如果不满足所有要求,它将回退到NTLM。

我将举一个例子,通过\ server1 \ share之类的名称访问文件共享将调用Kerberos,并且在适当的渗透下应会成功。但是使用IP地址访问相同的文件共享将首先调用Kerberos并失败(因为IP地址没有SPN),然后再故障转移到NTLM。

因此,请确定您的程序如何尝试针对AD进行身份验证,并应告诉您所使用的协议。

我很想知道,是什么促使您问这个问题的。


6

您可以查看活动的Kerberos票证列表,以查看是否有感兴趣的服务票证,例如,通过运行klist.exe

如果您入侵注册表,还有一种记录Kerberos事件的方法。


2

无论计算机是服务器还是工作站,您实际上都应该在审核登录事件。找出哪些用户正在访问您的系统,并对与安全相关的问题进行故障排除很有帮助。

您可以使用组策略来修改审核策略:开始...运行... gpedit.msc ...计算机配置,Windows设置,安全设置,本地策略,审核策略,“审核登录事件”。选中“成功”和“失败”复选框。尝试注销并登录,以查看Windows安全事件日志中的一些典型540个事件。


0

Netstat显示所有侦听的TCP和UDP连接。使用-na选项可用于所有连接,而不能解析名称或端口。'b'选项是显示与之关联的程序。如果DNS正在运行,则它可能会显示许多其他连接,因此您可能还需要指定TCP。

如果Kerberos部署了Active Directory域控制器,则它肯定会运行。

netstat -nab


The requested operation requires elevation.
阿米特·奈杜

0

假设您正在审核登录事件,请检查安全事件日志并查找540个事件。他们将告诉您是否使用Kerberos或NTLM进行了特定的身份验证。


我没有任何540个活动:(
LeWoody

0
 public string FindAllUsers()
        {
            string strReturn="";
            try
            {
                DirectoryEntry directoryEntry = new DirectoryEntry("WinNT://" + Environment.UserDomainName);
                string userNames = "";
                string authenticationType = "";
                foreach (DirectoryEntry child in directoryEntry.Children)
                {
                    if (child.SchemaClassName == "User")
                    {
                        userNames += child.Name + Environment.NewLine; //Iterates and binds all user using a newline
                        authenticationType += child.Username + Environment.NewLine;
                    }
                }

                strReturn = userNames + "\n\n" + authenticationType;
                //Console.WriteLine("************************Users************************");
                //Console.WriteLine(userNames);
                //Console.WriteLine("*****************Authentication Type*****************");
                //Console.WriteLine(authenticationType);
            }
            catch (Exception)
            {
                Console.WriteLine("Network error occured.");
                strReturn = "";
            }
            return strReturn;
        }

4
这需要更多的解释才能有用。
Sven

0

您可以尝试使用此工具。 http://blog.michelbarneveld.nl/media/p/33.aspx

这是在网站上测试身份验证的工具。它将显示使用的身份验证类型:Kerberos,NTLM,基本,无。但是它还显示其他信息,例如:使用的SPN,HTTP标头,解密的NTLM和Kerberos授权标头。它也可以显示和删除您的Kerberos票证。


-1

取决于所涉及的客户端/服务器。例如,有一个网页(很抱歉,现在没有时间搜索它),您可以将其放在可以告诉您是否使用kerberos或NTLM的网站上。但是,我无法得知SQL Server使用了哪种身份验证方法。尽管如前所述,安全日志可能会告诉您。
您为什么要找出答案?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.