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
- Parsing av Windows-brannmurlogger med PowerShell
- Vis Windows-brannmurlogger i Event Viewer
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:
- Åpne snap-inWindows-brannmur med avansert sikkerhet MMC(
wf.msc). - Høyreklikk på roten til konsollen og velgEgenskaper;
- 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
- På Profil-fanen klikker du påTilpassknappen iLoggingdel.
- 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:
- Åpne den lokale GPO-editoren (
gpedit.msc) - Gå til Datamaskinkonfigurasjon -> Windows-innstillinger -> Sikkerhetsinnstillinger -> Avansert revisjonspolicykonfigurasjon -> Systemrevisjonspolicyer - Lokalt gruppepolicyobjekt -> Objekttilgang
- Blokkerte tilkoblingshendelser kan sendes til Event Viewer ved å brukeRevisjonsfiltreringsplattformpakkeslipppolitikk. AktiverFeilalternativet i policyinnstillingene.


- 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)
- 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.














