menemukan klien yang bertanggung jawab atas kesalahan ldap schannel

8

di suatu tempat di jaringan kami, klien ldap menanyakan server AD kami tanpa informasi CA yang tepat. Ini memancing id (tidak berguna) sistem id (sumber: schannel) event id 36887 pada event log pengendali domain:

Lansiran fatal berikut diterima: 46.

Bagaimana saya bisa menemukan klien yang tidak terkonfigurasi?

natxo asenjo
sumber
Apakah kesalahan ini terus terjadi? Atau itu terjadi begitu saja?
Felipe Donda
1
itu terus terjadi ke server ldap di situs pertama default, sehingga klien berisi rentang ip tersebut.
natxo asenjo

Jawaban:

8

Built-in Anda tidak dapat dengan mudah menemukan sumber pesan.

Anda perlu tcpdump, monitor jaringan microsoft, atau wireshark untuk menemukan mesin yang menyebabkan kesalahan. (banyak utas mengatakan hal yang sama, di sana , di sana atau di sana (Lihat di komentar jawaban George tentang tcpdump))

yagmoth555
sumber
2
Saya cenderung setuju, dan itu menyebalkan ;-) (bukan komentar Anda, situasinya). Solusi lain adalah mematikan loggging schannel sama sekali, tetapi itu mungkin memiliki efek yang tidak terduga.
natxo asenjo
@natxoasenjo hal lain yang saya lihat adalah untuk ldap saya melihat referensi bahwa penebangan dilakukan melalui iis, mungkin untuk memeriksa direktori log iis untuk menemukan ip / permintaan yang dilakukan untuk dapat menemukan ip lebih cepat. (ini akan memungkinkan untuk membandingkan cap waktu kedua log)
yagmoth555
itu saran yang bagus, tetapi peran server web tidak diinstal di pengontrol domain ini (2008r2).
natxo asenjo
3

Jika Anda dapat menangkap lalu lintas yang mengalir ke DC untuk dianalisis, maka Anda dapat menggunakan pencarian paket Wireshark untuk menemukan sertifikat yang disajikan.

Filter wireshark ini mencari pertukaran sertifikat dan memfilter apa pun yang dikeluarkan oleh "uji SSL LDAP", ini memungkinkan Anda untuk menemukan sertifikat yang tidak dikeluarkan oleh domain Anda.

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

Saya tidak punya contoh AD untuk dikerjakan sehingga menggunakan LDAP standar atas TLS pcap dari halaman contoh wireshark.

Tim Fletcher
sumber
0

Saya memiliki sedikit pengalaman dengan administrasi Windows / AD, namun saya nyaman dengan Linux. Saya pikir saya akan melakukan pelacakan dan / atau penangkapan paket, menjalankan program dalam mode debug, dll ... dalam situasi Linux yang serupa ... jadi saya menemukan ini:

Bagaimana Anda melacak / men-debug koneksi LDAP terhadap Active Directory?

Dan ini:

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

Menambah level meningkatkan detail pesan dan jumlah pesan yang dipancarkan. Mengatur nilai entri dalam subkunci Diagnostics menjadi lebih besar dari 3 dapat menurunkan kinerja server dan tidak disarankan. Log peristiwa aplikasi terisi dengan cepat ketika tingkat logging ditingkatkan.

Dan ini mungkin:

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

Pelacakan menggunakan Pelacakan Peristiwa untuk Windows (ETW). Untuk memanfaatkan alat penelusuran yang tersedia dengan Windows Server 2008 R2, instal Microsoft Windows SDK dari situs Unduhan MSDN.

Pencarian google juga menghasilkan hasil melakukan jejak dan semacamnya pada layanan Windows, tapi sekali lagi, saya tidak terbiasa dengan itu. Saya akan membayangkan menonton lalu lintas jaringan saja bisa sangat sulit, karena Anda hanya melihat lalu lintas dan mungkin tidak tahu apa yang harus dicari dan Anda tidak benar-benar melihat apa yang terjadi dalam layanan.

Saya tidak tahu seperti apa output yang diharapkan dari melakukan penelusuran di ldap atau menggunakan alat / metode yang disebutkan, tetapi sepertinya layak untuk dicoba.

Semoga berhasil

Ryan Babchishin
sumber
0

Jika Anda tidak ingin mengendus paket, saya akan merekomendasikan skrip PowerShell di semua komputer yang menguji koneksi ldap yang aman dan masuk yang gagal. Anda bisa menghubungkan dari jarak jauh ke klien dari Pengontrol Domain atau Anda bisa membuat skrip sisi klien yang mencatat kegagalan pada server file.

Ide skrip adalah untuk mensimulasikan koneksi ldap yang aman. Ia menggunakan .net framework yang berasal secara native di windows 7 sp1 atau lebih tinggi.

Jika Anda ingin menjalankan jarak jauh dari DC, skrip akan terlihat seperti ini (memerlukan izin untuk PowerShell jarak jauh yang dapat dicapai setelah artikel ini https://www.briantist.com/how-to/powershell-remoting-group- kebijakan / ):

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

Atau jika Anda ingin skrip lokal yang masuk ke server jauh:

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

Output dari eksekusi versi jarak jauh (merah adalah klien offline):

masukkan deskripsi gambar di sini

Felipe Donda
sumber
terima kasih untuk skripnya. Infrastruktur kami adalah campuran dari klien windows dan linux, jadi ini hanya akan mencakup sebagian saja. Ide yang bagus.
natxo asenjo