Vahvista portin peilaus
Koskee: Advanced Threat Analytics -versio 1.9
Huomautus
Tämä artikkeli on merkityksellinen vain, jos otat ATA-yhdyskäytävät käyttöön ATA-kevyiden yhdyskäytävien sijaan. Jos haluat selvittää, onko sinun käytettävä ATA-yhdyskäytäviä, katso kohta Oikeiden yhdyskäytäviä käyttöönottoa varten.
Seuraavissa vaiheissa käydään läpi prosessi sen vahvistamiseksi, että porttien peilaus on määritetty oikein. Jotta ATA toimisi oikein, ATA-yhdyskäytävän on voitava nähdä liikenne toimialueen ohjauskoneeseen ja siitä pois. ATA:n tärkein tietolähde on verkkoliikenteen syväpakettitarkastus toimialueen ohjauskoneisiin ja toimialueen ohjauskoneista. Jotta ATA voi nähdä verkkoliikenteen, porttien peilaus on määritettävä. Portin peilaus kopioi liikenteen yhdestä portista (lähdeportti) toiseen porttiin (kohdeportti).
Portin peilauksen vahvistaminen Windows PowerShell komentosarjan avulla
- Tallenna tämän komentosarjan teksti tiedostoon nimeltä ATAdiag.ps1.
- Suorita tämä komentosarja ATA-yhdyskäytävässä, jonka haluat vahvistaa. Komentosarja luo ICMP-liikenteen ATA-yhdyskäytävästä toimialueen ohjauskoneeseen ja etsii liikenteen Capture NIC -kohteesta toimialueen ohjauskoneesta. Jos ATA-yhdyskäytävä näkee ICMP-liikenteen, jonka IP-kohdeosoite on sama kuin ATA-konsolissa kirjoittamasi DC IP-osoite, se katsoo portin peilauksen määritetyksi.
Esimerkki komentosarjan suorittamisesta:
# 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)
Portin peilauksen vahvistaminen Net Mon -toiminnon avulla
Asenna Microsoft Network Monitor 3.4 ATA-yhdyskäytävään, jonka haluat vahvistaa.
Tärkeää
Älä asenna Microsoft Message Analyzeria tai mitään muuta liikennesieppausohjelmistoa ATA-yhdyskäytävään.
Avaa Verkkonäyttö ja luo uusi sieppausvälilehti.
Valitse vain Capture-verkkosovitin tai verkkosovitin, joka on liitetty porttipeilauskohteeksi määritettyyn vaihtoporttiin.
Varmista, että P-tila on käytössä.
Valitse Uusi sieppaus.
Kirjoita Näyttösuodatin-ikkunaan seuraava suodatin: KerberosV5 OR LDAP ja valitse sitten Käytä.
Aloita sieppausistunto valitsemalla Käynnistä . Jos et näe liikennettä toimialueen ohjauskoneeseen tai toimialueen ohjauskoneesta, tarkista portin peilauksen määritykset.
Huomautus
On tärkeää varmistaa, että näet liikenteen toimialueen ohjauskoneisiin ja toimialueen ohjauskoneista.
Jos näet liikenteen vain yhteen suuntaan, tee yhteistyötä verkko- tai virtualisointitiimien kanssa, jotta voit tehdä porttien peilauksen määrityksen vianmäärityksen.