найти клиента, ответственного за ошибку schannel ldap

8

где-то в нашей сети клиент ldap запрашивает наши серверы AD без надлежащей информации CA Это вызывает (на мой взгляд, бесполезный) системный критический (source: schannel) идентификатор события 36887 в журнале событий контроллеров домена:

Было получено следующее смертельное предупреждение: 46.

Как я могу найти неправильно настроенный клиент?

natxo asenjo
источник
Эта ошибка продолжает происходить? Или это случилось однажды?
Фелипе Донда
1
это происходит с серверами ldap на первом сайте по умолчанию, поэтому клиент содержится в этих диапазонах ip.
natxo asenjo 19.09.16

Ответы:

8

Встроенный вы не можете легко найти источник сообщения.

Вам нужен tcpdump, монитор сети Microsoft или wireshark, чтобы найти машину, вызывающую ошибку. (многие ветки говорили одно и то же, там , там или там (см. в комментарии ответ Джорджу о tcpdump))

yagmoth555
источник
2
Я склонен согласиться, и это отстой ;-) (не ваш комментарий, ситуация). Другим решением может быть отключение регистрации в канале, но это может иметь неожиданные последствия.
Natxo Asenjo
@natxoasenjo, еще одна вещь, которую я видел, для ldap. Я вижу ссылку, что регистрация ведется через iis, может быть, чтобы проверить каталог журнала iis, чтобы найти выполненный ip / запрос, чтобы быстрее найти ip. (это позволит сравнить временную
метку
это было хорошее предложение, но роль веб-сервера не установлена ​​в этих контроллерах домена (2008r2).
Natxo Asenjo
3

Если вы можете захватывать трафик, поступающий в DC для анализа, вы можете использовать поиск пакетов Wireshark, чтобы найти сертификаты, которые будут представлены.

Этот фильтр Wireshark ищет обмен сертификатами и отфильтровывает все, что выдано «LDAP SSL test», это позволит вам найти сертификаты, не выданные вашим доменом.

(ssl.handshake.type == 11) && !(x509sat.uTF8String == "LDAP SSL test")

У меня нет примера AD для работы, который использует стандартный LDAP через TLS pcap со страницы примеров wireshark.

Тим Флетчер
источник
0

У меня очень мало опыта администрирования Windows / AD, но я чувствую себя комфортно с Linux. Я думал, что я сделаю трассировку и / или захват пакета, запустим программу в режиме отладки и т. Д. ... в аналогичной ситуации Linux ... так что я нашел это:

Как вы отслеживаете / отлаживаете соединения LDAP с Active Directory?

И это:

https://technet.microsoft.com/en-us/library/cc961809.aspx

Увеличение уровня увеличивает детализацию сообщений и количество отправляемых сообщений. Установка значения записей в подразделе «Диагностика» больше 3 может снизить производительность сервера и не рекомендуется. Журнал событий приложения быстро заполняется при увеличении уровня ведения журнала.

И это может быть:

https://msdn.microsoft.com/en-us/library/windows/desktop/dd815339(v=vs.85).aspx

Трассировка использует Event Tracing для Windows (ETW). Чтобы воспользоваться преимуществами средств трассировки, доступных в Windows Server 2008 R2, установите Microsoft Windows SDK с сайта загрузок MSDN.

Поиск в Google также показывает результаты выполнения трассировок и тому подобного в службах Windows, но, опять же, я не знаком ни с одним из них. Я мог бы представить, что наблюдение за сетевым трафиком само по себе может быть очень трудным, потому что вы видите только трафик и, вероятно, не знаете, что искать, и вы на самом деле не видите, что происходит внутри сервиса.

Я понятия не имею, какой вывод ожидать при выполнении трассировки в ldap или при использовании любого из упомянутых инструментов / методов, но, похоже, стоит попробовать.

Удачи

Райан Бабчишин
источник
0

Если вы не хотите перехватывать пакеты, я бы порекомендовал скрипт powershell на всех компьютерах, которые тестируют безопасное соединение ldap и регистрируют, кто не работает. Вы можете удаленно подключаться к клиентам с контроллера домена или создать сценарий на стороне клиента, который регистрирует сбои на файловом сервере.

Идея сценария состоит в том, чтобы смоделировать безопасное соединение ldap. Он использует .net Framework, который изначально поставляется на Windows 7 SP1 или выше.

Если вы хотите запустить удаленно с контроллера домена, сценарий будет выглядеть следующим образом (требуется разрешение для удаленного 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
   }
}

Или, если вы хотите локальный скрипт, который подключается к удаленному серверу:

$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
}

Вывод удаленного выполнения версии (красные - автономные клиенты):

введите описание изображения здесь

Фелипе Донда
источник
спасибо за сценарий. Наша инфраструктура представляет собой смесь Windows и Linux-клиентов, поэтому она будет охватывать только ее часть. Хорошая идея, хотя.
Natxo Asenjo