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.