Als u vermoedt dat de ingebouwde Windows Defender-firewall netwerkverbindingen (van een specifiek programma of service) blokkeert, is het een slecht idee om deze volledig uit te schakelen. In plaats daarvan kunt u al het netwerkverkeer dat door de Windows Defender Firewall passeert registreren, de gefilterde/weggelaten pakketten identificeren, poorten en bron-/bestemmings-IP-adressen zoeken en vervolgens de juiste toestemmingsregels maken.
In dit artikel laten we zien hoe u het loggen van netwerkverbindingen in Windows Firewall kunt inschakelen en hoe u de logboeken kunt analyseren.
Inhoud:
- Schakel inloggen in Windows Firewall in
- Windows Firewall-logboeken parseren met PowerShell
- Bekijk Windows Firewall-logboeken in Logboeken
Schakel inloggen in Windows Firewall in
Met Windows Defender Firewall kunnen zowel succesvolle als geblokkeerde netwerkverbindingen worden geregistreerd. Loggen kan voor elk netwerkprofiel afzonderlijk worden ingeschakeld (Private,Public, ofDomain Network). Standaard is verkeersregistratie uitgeschakeld in Windows Firewall. Verkeersfoutopsporing in de firewall inschakelen:
- Open de moduleWindows Firewall met geavanceerde beveiliging MMC(
wf.msc). - Klik met de rechtermuisknop op de hoofdmap van de console en selecteerEigenschappen;
- Ga vervolgens naar het tabblad van het Windows-netwerkprofiel waarvoor u loggen wilt inschakelen (Domein,Privé, ofOpenbaar profiel). Gebruik de opdracht om het netwerkprofiel te controleren dat is toegewezen aan een actieve netwerkinterface in Windows:
Get-NetConnectionProfile
- Klik op het tabblad Profiel op dePas aanknop in deLoggensectie.
- Hier kunt u de volgende instellingen configureren:
Naam(logbestand): standaard%systemroot%system32LogFilesFirewallpfirewall.log
Groottelimiet: verhoog de maximale loggrootte van 4 MB naar 20 MB (20480KB)
Logboek van gevallen pakketten: is het nodig om verbroken pakketverbindingen te loggen?
Registreer succesvolle verbindingen: het loggen van alle succesvolle netwerkverbindingen kan resulteren in een zeer groot logbestand.

Om effectief te controleren en te begrijpen welk netwerkprofiel (domein, privé of openbaar) specifieke netwerkverbindingen blokkeert of toestaat, kunt u Windows Firewall configureren om de activiteit van elk profiel in een afzonderlijk logbestand vast te leggen. Bijvoorbeeld:
%windir%system32logfilesfirewallpfirewall_domain.log%windir%system32logfilesfirewallpfirewall_private.log%windir%system32logfilesfirewallpfirewall_public.log
Logboekopties van Windows Firewall kunnen ook worden geconfigureerd via PowerShell:
Set-NetFireWallProfile -Profile Public -LogBlocked True -LogMaxSize 20480 -LogFileName "%systemroot%system32LogFilesFirewallpfirewall.log" -Verbose
Geeft een overzicht van de huidige firewall-logboekinstellingen voor alle profielen:
Get-NetFirewallProfile| select Name, Enabled, Log*|ft


Logboekopties kunnen ook worden ingeschakeld in Windows Firewall via GPO.
Windows Firewall-logboeken parseren met PowerShell
Alle netwerkverbindingen worden nu door de Windows Firewall vastgelegd in een tekstbestand. U kunt het logbestand handmatig openen of PowerShell gebruiken om naar specifieke verbindingen in het logbestand te zoeken (het Windows-equivalent van de grep- en tail-opdrachten is deSelect-Stringcmdlet).
Lees meer:Netwerkmonitor: netwerkverkeer op Windows vastleggen en analyseren
Met de volgende opdracht worden bijvoorbeeld in realtime alle gefilterde (DROP) netwerkverbindingen met TCP-poort 445 (SMB) weergegeven:
Get-Content C:WindowsSystem32LogFilesFirewallpfirewall.log -wait | Select-String -pattern "DROP.*TCP.*445"


Het volgende logbestandsformaat wordt gebruikt:
date time action protocol src-ip dst-ip src-port dst-port size tcpflags tcpsyn tcpack tcpwin icmptype icmpcode info path pid
Gebruik deze PowerShell-functie, die de log in een handige Out-GridView grafische tabel weergeeft, om de logbestanden van de firewall te analyseren:
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


Het is soms handiger om verbindingslogboeken van Windows Firewall naar de Logboeken te schrijven in plaats van naar tekstbestanden. Dit kan worden bereikt door auditbeleid in te schakelen in het lokale groepsbeleidsobject:
- Open de lokale GPO-editor (
gpedit.msc) - Ga naar Computerconfiguratie -> Windows-instellingen -> Beveiligingsinstellingen -> Geavanceerde configuratie van auditbeleid -> Systeemauditbeleid – Lokaal groepsbeleidsobject -> Objecttoegang
- Geblokkeerde verbindingsgebeurtenissen kunnen naar de Logboeken worden verzonden met behulp van dePakketdropping van platform voor auditfilteringbeleid. Schakel deMislukkingoptie in de beleidsinstellingen.


- Auditfilterplatformverbindingparameter die wordt gebruikt om succesvolle verbindingen in Windows Firewall te registreren. Dit auditbeleid wordt zelden gebruikt omdat het inschakelen ervan ertoe kan leiden dat veel gebeurtenissen naar het logboek worden geschreven (hiervoor moet de maximale grootte van het Logboeken-logboek worden vergroot)
- Update de GPO-instellingen op de computer:
gpupdate /force
Dit auditbeleid kan worden ingeschakeld met de opdracht:
Auditpol /set /category:"System" /SubCategory:"Filtering Platform Packet Drop" /failure:enable
Bekijk de huidige instellingen voor het auditbeleid van Windows Firewall:
auditpol /get /subcategory:"Filtering Platform Packet Drop","Filtering Platform Connection"


Om Windows Firewall-gebeurtenissen te bekijken, opent u Logboeken (eventvwr.msc). Vouw Windows-logboeken -> Beveiliging uit. Schakel het gebeurtenisfilter in voor dePlatformpakketdropping filterencategorie.
Alle verbindingen die door Windows Firewall worden geblokkeerd, zijn beschikbaar in de Gebeurtenisviewer. Deze gebeurtenissen hebben EventID5152(Het Windows Filtering Platform heeft een pakket geblokkeerd). De gebeurtenisbeschrijving bevat netwerkpakketinformatie: protocolnummer (TCP –6, UDP17, ICMP1), IP-adres en bron-/bestemmingspoort, richting (Inkomend, Uitgaand), procesnaam (voor uitgaande verbindingen).


Gebruik de Get-WinEvent PowerShell-cmdlet om Windows Firewall-gebeurtenissen in Logboeken te zoeken en te filteren. Het volgende PowerShell-script vindt alle verbindingspogingen die worden geblokkeerd door Windows Firewall op poort 3388 en retourneert een tabel met de tijd en bron van de verbinding:
$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


Door firewallregistratie in te schakelen, kunt u alle toegestane en verbroken netwerkverbindingen inspecteren, waardoor u fouten in uw Windows Firewall-regels kunt identificeren en nauwkeurige regels kunt opstellen.














