tìm khách hàng chịu trách nhiệm cho lỗi ldap schannel


8

ở đâu đó trong mạng của chúng tôi, một máy khách ldap đang truy vấn các máy chủ AD của chúng tôi mà không có thông tin CA thích hợp. Điều này gây ra sự kiện quan trọng (theo quan điểm của tôi là vô dụng) hệ thống (nguồn: schannel) id 36887 trên nhật ký sự kiện của bộ điều khiển miền:

Cảnh báo gây tử vong sau đây đã nhận được: 46.

Làm thế nào tôi có thể xác định vị trí khách hàng cấu hình sai?


Có phải lỗi này tiếp tục xảy ra? Hay nó chỉ xảy ra một lần?
Felipe Donda

1
nó liên tục xảy ra với các máy chủ ldap trong trang đầu tiên mặc định, vì vậy máy khách được chứa trong các phạm vi ip đó.
natxo asenjo

Câu trả lời:


8

Tích hợp sẵn bạn không thể tìm thấy dễ dàng nguồn tin nhắn.

Bạn cần tcpdump, màn hình mạng microsoft hoặc wireshark để tìm máy gây ra lỗi. (nhiều chủ đề đã nói như vậy, ở đó , ở đó hoặc ở đó (Xem trong phần bình luận câu trả lời cho George về tcpdump))


2
Tôi có xu hướng đồng ý, và nó thật tệ ;-) (không phải bình luận của bạn, tình huống này). Một giải pháp khác là tắt hoàn toàn việc đăng nhập schannel, nhưng điều đó có thể có tác dụng không mong muốn.
natxo asenjo

@natxoasenjo một điều khác tôi thấy là cho ldap Tôi thấy tham chiếu rằng việc ghi nhật ký được thực hiện thông qua iis, có thể để kiểm tra thư mục nhật ký iis để tìm ip / request được thực hiện để có thể tìm thấy ip nhanh hơn. (nó sẽ cho phép so sánh dấu thời gian của cả hai bản ghi)
yagmoth555

đó là một gợi ý hay, nhưng vai trò máy chủ web không được cài đặt trong các bộ điều khiển miền này (2008r2).
natxo asenjo

3

Nếu bạn có thể nắm bắt lưu lượng truy cập đến DC để phân tích thì bạn có thể sử dụng tìm kiếm gói của Wireshark để tìm chứng chỉ được trình bày.

Bộ lọc wireshark này tìm kiếm trao đổi chứng chỉ và lọc bất cứ thứ gì được phát hành bởi "LDAP SSL test", điều này sẽ cho phép bạn tìm các certs không được cấp bởi tên miền của bạn.

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

Tôi không có ví dụ về AD để làm việc vì vậy đó là sử dụng LDAP tiêu chuẩn trên pcap TLS từ trang mẫu của wireshark.


0

Tôi có rất ít kinh nghiệm về quản trị Windows / AD, tuy nhiên tôi rất hài lòng với Linux. Tôi nghĩ rằng tôi đã thực hiện theo dõi và / hoặc chụp gói, chạy chương trình ở chế độ gỡ lỗi, v.v ... trong tình huống Linux tương tự ... vì vậy tôi đã tìm thấy điều này:

Làm thế nào để bạn theo dõi / gỡ lỗi các kết nối LDAP đối với Active Directory?

Và điều này:

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

Tăng cấp độ sẽ tăng chi tiết của tin nhắn và số lượng tin nhắn được phát ra. Đặt giá trị của các mục trong khóa con Chẩn đoán thành lớn hơn 3 có thể làm giảm hiệu suất của máy chủ và không được khuyến nghị. Nhật ký sự kiện ứng dụng sẽ đầy nhanh chóng khi mức ghi nhật ký được tăng lên.

Và điều này có thể:

https://msdn.microsoft.com/en-us/l Library / windows / desktop / dd815339 (v = vs85) .aspx

Truy tìm sử dụng theo dõi sự kiện cho Windows (ETW). Để tận dụng các công cụ theo dõi có sẵn với Windows Server 2008 R2, hãy cài đặt Microsoft Windows SDK từ trang Tải xuống MSDN.

Một tìm kiếm google cũng cho thấy kết quả về việc thực hiện các dấu vết và như vậy trên các dịch vụ Windows, nhưng một lần nữa, tôi không quen thuộc với bất kỳ điều gì trong số đó. Tôi sẽ tưởng tượng việc xem lưu lượng truy cập mạng một mình có thể rất khó khăn, bởi vì bạn chỉ nhìn thấy lưu lượng truy cập và có thể không biết phải tìm gì và bạn không thực sự thấy những gì đang xảy ra trong dịch vụ.

Tôi không biết loại đầu ra nào mong đợi khi thực hiện theo dõi trên ldap hoặc sử dụng bất kỳ công cụ / phương pháp nào được đề cập, nhưng có vẻ như nó đáng để thử.

Chúc may mắn


0

Nếu bạn không muốn đánh hơi gói tin, tôi sẽ đề xuất một tập lệnh powershell trong tất cả các máy tính kiểm tra kết nối ldap an toàn và ghi nhật ký không thành công. Bạn có thể kết nối từ xa với các máy khách từ Bộ điều khiển miền hoặc bạn có thể tạo một kịch bản phía máy khách ghi lại các lỗi trên máy chủ tệp.

Ideia của tập lệnh là mô phỏng kết nối ldap an toàn. Nó sử dụng khung .net vốn xuất hiện trên windows 7 sp1 trở lên.

Trong trường hợp bạn muốn chạy từ xa từ DC, tập lệnh sẽ trông như thế này (cần có sự cho phép của quyền hạn từ xa có thể đạt được sau bài viết này https://www.briantist.com/how-to/powershell-remote-group- chính sách / ):

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

Hoặc nếu bạn muốn một tập lệnh cục bộ đăng nhập vào một máy chủ từ xa:

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

Đầu ra của một thực thi phiên bản từ xa (những cái màu đỏ là máy khách ngoại tuyến):

nhập mô tả hình ảnh ở đây


cảm ơn vì kịch bản Cơ sở hạ tầng của chúng tôi là sự kết hợp của các máy khách windows và linux, vì vậy điều này sẽ chỉ bao gồm một phần của nó. Ý tưởng tốt đẹp, mặc dù.
natxo asenjo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.