Hvordan konfigurere Windows-brannmurlogging og analysere logger

Hvis du mistenker at den innebygde Windows Defender-brannmuren blokkerer nettverkstilkoblinger (fra et bestemt program eller tjeneste), er det en dårlig idé å deaktivere den helt. I stedet kan du logge all nettverkstrafikk som går gjennom Windows Defender-brannmuren, identifisere de filtrerte/droppede pakkene, finne porter og kilde-/destinasjons-IP-adresser, og deretter opprette passende tillatelsesregler.

I denne artikkelen viser vi hvordan du aktiverer nettverkstilkoblingslogging i Windows-brannmuren og hvordan du analyserer loggene.

Innhold:

Aktiver pålogging i Windows-brannmur

Windows Defender-brannmur lar deg logge både vellykkede og blokkerte nettverkstilkoblinger. Logging kan aktiveres separat for hver nettverksprofil (Private,Public, ellerDomain Network). Som standard er trafikklogging deaktivert i Windows-brannmuren. Slik slår du på trafikkfeilsøking i brannmuren:

  1. Åpne snap-inWindows-brannmur med avansert sikkerhet MMC(wf.msc).
  2. Høyreklikk på roten til konsollen og velgEgenskaper;
  3. Gå deretter til fanen for Windows-nettverksprofilen du vil aktivere logging for (Domene,Privat, ellerOffentlig profil). For å sjekke nettverksprofilen som er tilordnet et aktivt nettverksgrensesnitt i Windows, bruk kommandoen:
    Get-NetConnectionProfile
  4. På Profil-fanen klikker du påTilpassknappen iLoggingdel.
  5. Her kan du konfigurere følgende innstillinger:
    Navn(loggfil): som standard%systemroot%system32LogFilesFirewallpfirewall.log
    Størrelsesgrense: øk maksimal loggstørrelse fra 4 MB til 20 MB (20480KB)
    Logg droppede pakker: er det nødvendig å logge tapte pakkeforbindelser?
    Logg vellykkede tilkoblinger: Logging av alle vellykkede nettverkstilkoblinger kan resultere i en veldig stor loggfil.

For effektivt å overvåke og forstå hvilken nettverksprofil (domene, privat eller offentlig) som blokkerer eller tillater spesifikke nettverkstilkoblinger, kan du konfigurere Windows-brannmuren til å logge aktiviteten til hver profil i en separat loggfil. For eksempel:

  • %windir%system32logfilesfirewallpfirewall_domain.log
  • %windir%system32logfilesfirewallpfirewall_private.log
  • %windir%system32logfilesfirewallpfirewall_public.log

Windows-brannmurloggingsalternativer kan også konfigureres gjennom PowerShell:

Set-NetFireWallProfile -Profile Public -LogBlocked True -LogMaxSize 20480 -LogFileName "%systemroot%system32LogFilesFirewallpfirewall.log" -Verbose

Viser gjeldende brannmurloggingsinnstillinger for alle profiler:

Get-NetFirewallProfile| select Name, Enabled, Log*|ft

Loggingsalternativer kan også aktiveres i Windows-brannmuren via GPO.

Parsing av Windows-brannmurlogger med PowerShell

Alle nettverkstilkoblinger logges nå til en ren tekstfil av Windows-brannmuren. Du kan åpne loggfilen manuelt, eller bruke PowerShell til å søke etter spesifikke tilkoblinger i loggfilen (Windows-ekvivalenten til grep- og tail-kommandoene erSelect-Stringcmdlet).

For eksempel viser følgende kommando i sanntid alle filtrerte (DROP) nettverkstilkoblinger til TCP-port 445 (SMB):

Get-Content C:WindowsSystem32LogFilesFirewallpfirewall.log -wait | Select-String -pattern "DROP.*TCP.*445"

Følgende loggfilformat brukes:

date time action protocol src-ip dst-ip src-port dst-port size tcpflags tcpsyn tcpack tcpwin icmptype icmpcode info path pid

Bruk denne PowerShell-funksjonen, som viser loggen i en praktisk Out-GridView grafisk tabell, for å analysere brannmurloggfilene:

function Get-WindowsFirewallLog {
param(
[parameter(Position=0,Mandatory=$false)]
[ValidateScript({Test-Path $_})]
[string]$LogFilePath = "$env:SystemRootSystem32LogFilesFirewallpfirewall.log"
)
$headerFields = @("date","time", "action","protocol","src-ip","dst-ip","src-port","dst-port","size", "tcpflags","tcpsyn", "tcpack","tcpwin","icmptype","icmpcode", "info","path")
$firewallLogs = Get-Content $LogFilePath | ConvertFrom-Csv -Header $headerFields -Delimiter ' '
$firewallLogs | Out-GridView
}
Get-WindowsFirewallLog

Vis Windows-brannmurlogger i Event Viewer

Noen ganger er det mer praktisk å skrive Windows-brannmurtilkoblingslogger til Event Viewer i stedet for til tekstfiler. Dette kan oppnås ved å aktivere revisjonspolicyer i den lokale GPO:

  1. Åpne den lokale GPO-editoren (gpedit.msc)
  2. Gå til Datamaskinkonfigurasjon -> Windows-innstillinger -> Sikkerhetsinnstillinger -> Avansert revisjonspolicykonfigurasjon -> Systemrevisjonspolicyer - Lokalt gruppepolicyobjekt -> Objekttilgang
  3. Blokkerte tilkoblingshendelser kan sendes til Event Viewer ved å brukeRevisjonsfiltreringsplattformpakkeslipppolitikk. AktiverFeilalternativet i policyinnstillingene.
  4. Revisjonsfiltreringsplattformtilkoblingparameter som brukes til å logge vellykkede tilkoblinger i Windows-brannmuren. Denne revisjonspolicyen brukes sjelden fordi aktivering av den kan føre til at mange hendelser blir skrevet til loggen (dette krever å øke den maksimale størrelsen på Event Viewer-loggen)
  5. Oppdater GPO-innstillingene på datamaskinen:gpupdate /force

Denne revisjonspolicyen kan aktiveres med kommandoen:

Auditpol /set /category:"System" /SubCategory:"Filtering Platform Packet Drop" /failure:enable

Se gjeldende revisjonspolicyinnstillinger for Windows-brannmuren:

auditpol /get /subcategory:"Filtering Platform Packet Drop","Filtering Platform Connection"

For å se Windows-brannmurhendelser, åpne Event Viewer (eventvwr.msc). Utvid Windows-logger -> Sikkerhet. Aktiver hendelsesfilteret forFiltreringsplattform Packet Dropkategori.

Alle tilkoblingene som er blokkert av Windows-brannmuren vil være tilgjengelige i hendelsesvisningen. Disse hendelsene har EventID5152(Windows-filtreringsplattformen har blokkert en pakke). Hendelsesbeskrivelsen inkluderer nettverkspakkeinformasjon: protokollnummer (TCP –6, UDP17, ICMP1), IP-adresse og kilde/destinasjonsport, retning (Inbound, Outbound), prosessnavn (for utgående tilkoblinger).

Mer lesing:Hvordan analysere og rydde opp i Windows Component Store (WinSxS-mappe)

Bruk Get-WinEvent PowerShell-cmdleten til å søke og filtrere Windows-brannmurhendelser i Event Viewer. Følgende PowerShell-skript finner alle tilkoblingsforsøk som er blokkert av Windows-brannmuren på port 3388 og returnerer en tabell med tidspunkt og kilde for tilkoblingen:

$destinationPort = "3388"
$filterXml = @"
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID=5152)]]
and
*[EventData[Data[@Name="DestPort"] and (Data="$destinationPort")]]
</Select>
</Query>
</QueryList>
"@
$FirewallLogs = @()
$events=Get-WinEvent -FilterXml $filterXml
foreach ($event in $events) {
$eventXml = [xml]$event.ToXml()
$SourceAddress = $eventXml.Event.EventData.Data | Where-Object { $_.Name -eq 'SourceAddress' } | Select-Object -ExpandProperty '#text'
$DestPort = $eventXml.Event.EventData.Data | Where-Object { $_.Name -eq 'DestPort' } | Select-Object -ExpandProperty '#text'
$FirewallLog = New-Object PSObject -Property @{
SourceAddress= $SourceAddress
Time=$event.TimeCreated
DestPort=$DestPort
}
$FirewallLogs += $FirewallLog
}
$FirewallLogs

Aktivering av brannmurlogging lar deg inspisere alle tillatte og mistede nettverkstilkoblinger, og hjelper til med å identifisere feil i Windows-brannmurreglene og lage nøyaktige.

Related Posts