Применяется к Advanced Threat Analytics версии 1.8Applies to: Advanced Threat Analytics version 1.8

Проверка зеркального отображения портовValidate Port Mirroring

Примечание

Эта статья имеет отношение только к развертыванию шлюзов ATA, а не упрощенных шлюзов ATA.This article is relevant only if you deploy ATA Gateways instead of ATA Lightweight Gateways. Чтобы определить, нужно ли использовать шлюзы ATA, см. раздел о выборе правильных шлюзов для развертывания.To determine if you need to use ATA Gateways, see Choosing the right gateways for your deployment.

Ниже описана последовательность проверки правильной настройки зеркального отображения портов.The following steps walk you through the process for validating that port mirroring is properly configured. Для правильной работы решения ATA шлюз ATA должен видеть входящий и исходящий трафик контроллера домена.For ATA to work properly, the ATA Gateway must be able to see the traffic to and from the domain controller. Основные сведения, требуемые для работы ATA, решение получает посредством тщательного анализа пакетов входящего и исходящего сетевого трафика контроллеров домена.The main data source used by ATA is deep packet inspection of the network traffic to and from your domain controllers. Чтобы решение ATA могло видеть сетевой трафик, нужно настроить зеркальное отображение портов.For ATA to see the network traffic, port mirroring needs to be configured. Эта функция копирует трафик из одного порта (исходный порт) в другой порт (конечный порт).Port mirroring copies the traffic from one port (the source port) to another port (the destination port).

Проверка зеркального отображения портов с помощью сценария Windows PowerShellValidate port mirroring using a Windows PowerShell script

  1. Сохраните текст этого сценария в файл с именем ATAdiag.ps1.Save the text of this script into a file called ATAdiag.ps1.
  2. Выполните этот скрипт в шлюзе ATA, который нужно проверить.Run this script on the ATA Gateway that you want to validate. Этот сценарий создает ICMP-трафик от шлюза ATA в контроллер домена и ищет этот трафик в сетевом адаптере в контроллере домена.The script generates ICMP traffic from the ATA Gateway to the domain controller and looks for that traffic on the Capture NIC on the domain controller. Если шлюз ATA видит, что IP-адрес назначения ICMP-трафика соответствует IP-адресу контроллера домена, введенному в консоли ATA, зеркальное отображение портов считается настроенным.If the ATA Gateway sees ICMP traffic with a destination IP address the same as the DC IP addressed you entered in the ATA Console, it deems port mirroring configured.

Пример выполнения сценария:Sample for how to run the script:

# ATAdiag.ps1 -CaptureIP n.n.n.n -DCIP n.n.n.n -TestCount n

param([parameter(Mandatory=$true)][string]$CaptureIP, [parameter(Mandatory=$true)][string]$DCIP, [int]$PingCount = 10)

# Set variables

    $ErrorActionPreference = "stop"
$starttime = get-date
$byteIn = new-object byte[] 4
$byteOut = new-object byte[] 4
$byteData = new-object byte[] 4096  # size of data

$byteIn[0] = 1  # for promiscuous mode
$byteIn[1-3] = 0
$byteOut[0-3] = 0



# Convert network data to host format
    function NetworkToHostUInt16 ($value)
    {
    [Array]::Reverse($value)
    [BitConverter]::ToUInt16($value,0)
    }

function NetworkToHostUInt32 ($value)
    {
    [Array]::Reverse($value)
    [BitConverter]::ToUInt32($value,0)
    }

function ByteToString ($value)
    {
    $AsciiEncoding = new-object system.text.asciiencoding
    $AsciiEncoding.GetString($value)
        }

Write-Host "Testing Port Mirroring..." -ForegroundColor Yellow
Write-Host ""
Write-Host "Here is a summary of the connection we will test." -ForegroundColor Yellow

# Initialize a first ping connection
Test-Connection -Count 1 -ComputerName $DCIP -ea SilentlyContinue
Write-Host ""

Write-Host "Press any key to continue..." -ForegroundColor Red
[void][System.Console]::ReadKey($true)
Write-Host ""
Write-Host "Sending ICMP and Capturing data..." -ForegroundColor Yellow

# Open a socket

$socket = new-object system.net.sockets.socket([Net.Sockets.AddressFamily]::InterNetwork,[Net.Sockets.SocketType]::Raw,[Net.Sockets.ProtocolType]::IP)

# Include the IP header
$socket.setsocketoption("IP","HeaderIncluded",$true)

$socket.ReceiveBufferSize = 10000

$ipendpoint = new-object system.net.ipendpoint([net.ipaddress]"$CaptureIP",0)
$socket.bind($ipendpoint)

# Enable promiscuous mode
[void]$socket.iocontrol([net.sockets.iocontrolcode]::ReceiveAll,$byteIn,$byteOut)

# Initialize test variables
$tests = 0
$TestResult = "Noise"
$OneSuccess = 0

while ($tests -le $PingCount)
    {
    if (!$socket.Available)  # see if any packets are in the queue
        {
        start-sleep -milliseconds 500
        continue
        }

# Capture traffic
    $rcv = $socket.receive($byteData,0,$byteData.length,[net.sockets.socketflags]::None)

# Decode the header so we can read ICMP

    $MemoryStream = new-object System.IO.MemoryStream($byteData,0,$rcv)
    $BinaryReader = new-object System.IO.BinaryReader($MemoryStream)

# Set IP version & header length
    $VersionAndHeaderLength = $BinaryReader.ReadByte()

    # TOS
    $TypeOfService= $BinaryReader.ReadByte()

    # More values, and the Protocol Number for ICMP traffic
    # Convert network format of big-endian to host format of little-endian 
    $TotalLength = NetworkToHostUInt16 $BinaryReader.ReadBytes(2)

    $Identification = NetworkToHostUInt16 $BinaryReader.ReadBytes(2)
    $FlagsAndOffset = NetworkToHostUInt16 $BinaryReader.ReadBytes(2)
    $TTL = $BinaryReader.ReadByte()
    $ProtocolNumber = $BinaryReader.ReadByte()
    $Checksum = [Net.IPAddress]::NetworkToHostOrder($BinaryReader.ReadInt16())

    # The source and destination IP addresses
    $SourceIPAddress = $BinaryReader.ReadUInt32()
    $DestinationIPAddress = $BinaryReader.ReadUInt32()

    # The source and destimation ports
    $sourcePort = [uint16]0
    $destPort = [uint16]0

    # Close the stream reader
    $BinaryReader.Close()
    $memorystream.Close()

    # Cast DCIP into an IPaddress type
    $DCIPP = [ipaddress] $DCIP
    $DestinationIPAddressP = [ipaddress] $DestinationIPAddress

    #Ping the DC at the end after starting the capture
    Test-Connection -Count 1 -ComputerName $DCIP -ea SilentlyContinue | Out-Null

    # This is the match logic - check to see if Destination IP from the Ping sent matches the DCIP entered by in the ATA Console  
    # The only way the ATA Gateway should see a destination of the DC is if Port Spanning is configured

        if ($DestinationIPAddressP -eq $DCIPP)  # is the destination IP eq to the DC IP? 
        {
        $TestResult = "Port Spanning success!"
        $OneSuccess = 1
        } else {
            $TestResult = "Noise"
        }

    # Put source, destination, test result in Powershell object

    new-object psobject | add-member -pass noteproperty CaptureSource $([system.net.ipaddress]$SourceIPAddress) | add-member -pass noteproperty CaptureDestination $([system.net.ipaddress]$DestinationIPAddress) | Add-Member -pass NoteProperty Result $TestResult | Format-List | Out-Host
    #Count tests
    $tests ++
    }

    If ($OneSuccess -eq 1){
        Write-Host "Port Spanning Success!" -ForegroundColor Green
        Write-Host ""
        Write-Host "At least one packet which was addressed to the DC, was picked up by the Gateway." -ForegroundColor Yellow
        Write-Host "A little noise is OK, but if you don't see a majority of successes, you might want to re-run." -ForegroundColor Yellow
    } Else {
        Write-Host "No joy, all noise.  You may want to re-run, increase the number of Ping Counts, or check your config." -ForegroundColor Red
    }

Write-Host ""
Write-Host "Press any key to continue..." -ForegroundColor Red
[void][System.Console]::ReadKey($true)

Проверка зеркального отображения портов с помощью сетевого монитораValidate port mirroring using Net Mon

  1. Установите Microsoft Network Monitor 3.4 в шлюзе ATA, который нужно проверить.Install Microsoft Network Monitor 3.4 on the ATA Gateway that you want to validate..

    Важно!

    Не устанавливайте на шлюз ATA анализатор сообщений Microsoft Message Analyzer или другое программное обеспечение для записи сетевого трафика.Do not install Microsoft Message Analyzer, or any other traffic capture software on the ATA Gateway.

  2. Откройте сетевой монитор и создайте новую вкладку записи.Open Network Monitor and create a new capture tab.

    1. Выберите только сетевой адаптер для записи (Capture) или сетевой адаптер, подключенный к порту коммутатора, который настроен как конечный порт.Select only the Capture network adapter or the network adapter that is connected to the switch port that is configured as the port mirroring destination.

    2. Активируйте неизбирательный режим.Ensure that P-Mode is enabled.

    3. Щелкните New Capture (Создать запись).Click New Capture.

      Создание новой вкладки записи (рисунок)

  3. В окне Display Filter (Фильтр отображения) укажите фильтр KerberosV5 OR LDAP и нажмите кнопку Apply (Применить).In the Display Filter window, enter the following filter: KerberosV5 OR LDAP and then click Apply.

    Применение фильтра "KerberosV5 или LDAP" (рисунок)

  4. Щелкните Start (Начать), чтобы начать сеанс записи.Click Start to start the capture session. Если входящий и исходящий трафик контроллера домена не отображается, проверьте настройки зеркального отображения портов.If you do not see traffic to and from the domain controller, review your port mirroring configuration.

    Начало сеанса записи (рисунок)

    Примечание

    Очень важно убедиться, что вы видите входящий и исходящий трафик контроллера домена.It is important to make sure you see traffic to and from the domain controllers.

  5. Если вы видите только входящий или исходящий трафик, обратитесь за помощью к специалистам по сетям или виртуализации. Они помогут вам устранить ошибки в настройках зеркального отображения портов.If you only see traffic in one direction, you should work with your networking or virtualization teams to help troubleshoot your port mirroring configuration.

См. такжеSee Also