schannel ldap 오류를 담당하는 클라이언트를 찾습니다.


8

네트워크 어딘가에 ldap 클라이언트가 적절한 CA 정보없이 AD 서버를 쿼리합니다. 이것은 도메인 컨트롤러의 이벤트 로그에서 (무의미한) 시스템 크리티컬 (소스 : schannel) 이벤트 ID 36887을 유발합니다.

다음과 같은 치명적인 경고가 수신되었습니다. 46.

잘못 구성된 클라이언트를 찾으려면 어떻게해야합니까?


이 오류가 계속 발생합니까? 아니면 한 번만 일어 났습니까?
Felipe Donda

1
기본 첫 번째 사이트의 ldap 서버에서 계속 발생하므로 클라이언트는 해당 IP 범위에 포함됩니다.
natxo asenjo

답변:


8

내장 메시지의 소스를 쉽게 찾을 수 없습니다.

오류를 발생시키는 기계를 찾으려면 tcpdump, Microsoft 네트워크 모니터 또는 wireshark가 필요합니다. (많은 스레드가 똑같이, 거기 , 거기 또는 거기에 말했다 (tcpdump에 대한 George의 답변 참조)


2
나는 동의하는 경향이 있으며 ;-) (귀하의 의견이 아닌 상황). 또 다른 해결책은 schannel loggging을 완전히 끄는 것이지만 예기치 않은 결과가 발생할 수 있습니다.
natxo asenjo

@natxoasenjo 내가 본 또 다른 것은 ldap에 대한 것입니다 .iis를 통해 로깅이 수행된다는 것을 참조하십시오 .iis 로그 디렉토리를 확인하여 ip / 요청이 ip를 더 빨리 찾을 수 있는지 확인하십시오. (두 로그의 타임 스탬프를 비교할 수 있습니다)
yagmoth555

좋은 제안이지만 웹 서버 역할은 이러한 도메인 컨트롤러 (2008r2)에 설치되어 있지 않습니다.
natxo asenjo

3

분석을 위해 DC로 흐르는 트래픽을 캡처 할 수 있으면 Wireshark의 패킷 검색을 사용하여 제시된 인증서를 찾을 수 있습니다.

이 wireshark 필터는 인증서 교환을 찾고 "LDAP SSL 테스트"에서 발행 한 모든 것을 필터링하여 도메인에서 발행하지 않은 인증서를 찾을 수 있도록합니다.

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

wireshark 샘플 페이지에서 표준 LDAP over TLS pcap을 사용하는 AD 예제가 없습니다.


0

Windows / AD 관리에 대한 경험이 거의 없지만 Linux에 익숙합니다. 비슷한 리눅스 상황에서 추적 및 / 또는 패킷 캡처를 수행하고 디버그 모드 등에서 프로그램을 실행하는 등의 방법을 생각했습니다.

Active Directory에 대한 LDAP 연결을 어떻게 추적 / 디버그합니까?

이:

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

레벨을 높이면 메시지의 세부 사항과 생성 된 메시지 수가 증가합니다. 진단 하위 키의 항목 값을 3보다 크게 설정하면 서버 성능이 저하 될 수 있으므로 권장하지 않습니다. 로깅 수준이 증가하면 응용 프로그램 이벤트 로그가 빠르게 채워집니다.

그리고 이것은 아마도 :

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

추적은 ETW (Windows 용 이벤트 추적)를 사용합니다. Windows Server 2008 R2에서 사용 가능한 추적 도구를 이용하려면 MSDN 다운로드 사이트에서 Microsoft Windows SDK를 설치하십시오.

Google 검색은 Windows 서비스에서 추적 등을 수행 한 결과도 나타나지만 다시는 익숙하지 않습니다. 네트워크 트래픽 만 보는 것이 매우 어려울 수 있습니다. 트래픽 만보고 무엇을 찾아야할지 모르고 실제로 서비스 내에서 무슨 일이 일어나고 있는지 알지 못하기 때문입니다.

ldap에서 추적을 수행하거나 언급 된 도구 / 방법을 사용하여 어떤 출력을 기대할 수 있을지 모르겠지만 시도해 볼 가치가있는 것 같습니다.

행운을 빕니다


0

패킷 스니핑을 원하지 않으면 모든 컴퓨터에서 보안 LDAP 연결을 테스트하고 실패한 사람을 기록하는 powershell 스크립트를 사용하는 것이 좋습니다. 도메인 컨트롤러에서 클라이언트에 원격으로 연결하거나 파일 서버에서 오류를 기록하는 클라이언트 쪽 스크립트를 만들 수 있습니다.

스크립트의 아이디어는 안전한 LDAP 연결을 시뮬레이션하는 것입니다. Windows 7 sp1 이상에서 기본적으로 제공되는 .net 프레임 워크를 사용합니다.

DC에서 원격으로 실행하려는 경우 스크립트는 다음과 같습니다 (이 문서 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.