在我们networking的某个地方,ldap客户端正在查询我们的AD服务器而没有正确的CA信息。 这引起域控制器事件日志中的(在我看来无用的)系统关键(源:schannel)事件ID 36887:
收到以下致命警报:46。
我如何find错误configuration的客户端?
内置的你找不到消息的来源。
您需要tcpdump,microsoft network monitor或wireshark才能find导致错误的机器。 (许multithreading告诉相同的, 那里 , 那里或那里 (请参阅乔治关于tcpdump的回答)
如果您能够捕获stream向DC的stream量进行分析,那么您可以使用Wireshark的数据包search来查找正在呈现的证书。
这wiresharkfilter查找证书交换和筛选出“LDAP SSLtesting”发出的任何东西,这将允许您find不是由您的域颁发的证书。
(ssl.handshake.type == 11) && !(x509sat.uTF8String == "LDAP SSL test")
我没有一个AD示例来处理这个问题,以便在wireshark示例页面上使用TLS pcap上的标准LDAP。
我很less有Windows / ADpipe理的经验,但是我对Linux很满意。 我想我会做跟踪和/或数据包捕获,在debugging模式下运行程序等…在类似的Linux情况下…所以我发现这一点:
如何跟踪/debugging针对Active Directory的LDAP连接?
和这个:
https://technet.microsoft.com/en-us/library/cc961809.aspx
增加级别会增加消息的细节和发出的消息的数量。 将诊断子项中的项值设置为大于3会降低服务器性能,因此不推荐使用。 日志logging级别增加时,应用程序事件日志会快速填满。
这也许是:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd815339(v=vs.85).aspx
跟踪使用Windows事件跟踪(ETW)。 要利用Windows Server 2008 R2提供的跟踪工具,请从MSDN下载站点安装Microsoft Windows SDK。
谷歌search也显示了在Windows服务上执行痕迹等的结果,但是我再一次不熟悉它。 我可以想象,单独看networkingstream量可能会非常困难,因为您只能看到stream量,可能不知道要查找什么,而且您也没有真正看到服务中发生了什么。
我不知道在ldap上执行跟踪或者使用任何提及的工具/方法可以得到什么样的输出结果,但似乎值得一试。
祝你好运
如果你不想要数据包嗅探,我会build议所有计算机上的PowerShell脚本testing一个安全的LDAP连接,并logging谁失败。 您可以从域控制器远程连接到客户端,也可以创build在文件服务器上logging故障的客户端脚本。
脚本的想法是模拟一个安全的ldap连接。 它使用.net框架本身在Windows 7 SP1或更高版本。
如果你想从DC远程运行,脚本看起来像这样(需要远程PowerShell的权限,这可以实现本文后面https://www.briantist.com/how-to/powershell-remoting-group-政策/ ):
Import-Module ActiveDirectory $domain = "contoso.com" $user = "Administrator" $password = "P@ssw0rd" $IPFilter = "192.168.1.*" $scriptblock = { write-host "$(hostname) - " -NoNewLine try { $LDAPS = New-Object adsi ("LDAP://$($args[0]):636",$args[1],$args[2],'SecureSocketsLayer') Write-Host "Secure LDAP Connection succeeded." } Catch { Write-Host "Secure LDAP Connection failed." -foregroundcolor red } } $Computers = Get-ADComputer -filter * -Properties IPv4Address | Where{ $_.IPv4Address -like $IPFilter} foreach($Computer in $Computers) { try { $session = New-PSSession $Computer.Name -ErrorAction Stop Invoke-Command -Session $session -ScriptBlock $scriptblock -ArgumentList $domain,$user,$password }catch{ Write-Host "Connection to $($Computer.Name) failed." -foregroundcolor red } }
或者,如果您想要一个login到远程服务器的本地脚本:
$domain = "contoso.com" $user = "Administrator" $password = "P@ssw0rd" $LogFile = "\\fileserver\logs\ldapconnection.log" try { $LDAPS = New-Object adsi ("LDAP://$domain:636",$user,$password,'SecureSocketsLayer') "$(hostname) - Secure LDAP Connection succeeded." | Out-File $LogFile -Append } Catch { "$(hostname) - Secure LDAP Connection failed." | Out-File $LogFile -Append }
远程版本执行的输出(红色是离线客户端):