Dit artikel gaat dieper in op het beheren van Windows Defender Firewall via PowerShell. Dat lijkt misschien wat overweldigend, vooral als je gewend bent aan de grafische gebruikersinterface of de ouderwetse commando’s. Maar eerlijk gezegd, als je het eenmaal onder de knie hebt, is het een handige manier om dingen te automatiseren, zoals het in- en uitschakelen van de firewall, het maken van regels of het resetten van configuraties zonder door honderden menu’s te hoeven klikken. Soms werkt de firewall na updates of netwerkwijzigingen niet meer naar behoren, en dan kan het gebruik van PowerShell je veel tijd en frustratie besparen. Je leert hoe je profielen kunt in- en uitschakelen, regels kunt maken voor poorten of apps, en zelfs hoe je problemen met de firewall kunt oplossen.
Hoe u de Windows Firewall-instellingen kunt herstellen met PowerShell
Hoe u de Windows Defender-firewall kunt in- of uitschakelen
Bij de meeste nieuwe installaties is de firewall standaard ingeschakeld, maar soms wil je hem helemaal uitschakelen – bijvoorbeeld om te testen of als snelle oplossing (uiteraard niet aan te raden voor de lange termijn).Je kunt de profielstatus controleren door het volgende commando uit te voeren:
Get-NetFirewallProfile | Format-Table Name, Enabled
Hier worden alle drie netwerktypen (Domein, Privé, Openbaar) weergegeven en of ze aan of uit staan. Als er iets niet klopt of als je ze helemaal wilt uitschakelen, gebruik dan:
Set-NetFirewallProfile -All -Enabled False
Of richt je op een specifieke:
Set-NetFirewallProfile -Profile Public -Enabled False
Daarmee wordt de firewall voor je openbare netwerk uitgeschakeld, wat handig kan zijn als je een probleem probeert op te lossen waarbij de verbinding niet tot stand komt. Maar let op: het uitschakelen is niet aan te raden, tenzij je zeker bent van de beveiliging. In sommige gevallen blijft Windows na deze stap, gevolgd door een herstart of het later weer inschakelen van de firewall, gewoon werken.
Hoe u netwerkprofielen en logboekinstellingen kunt wijzigen
Als Windows uw netwerk niet correct detecteert (bijvoorbeeld als het denkt dat het een openbaar netwerk is terwijl u thuis bent), kunt u het profiel handmatig instellen of controleren welke profielen actief zijn met Get-NetConnectionProfile. Om het profiel te wijzigen, voert u het volgende commando uit:
Set-NetConnectionProfile -InterfaceAlias "Ethernet0" -NetworkCategory Private
Vervang “Ethernet0” door de daadwerkelijke alias van uw netwerkinterface. Deze kunt u vinden door het volgende commando uit te voeren:
Get-NetAdapter | Select Name, InterfaceAlias
U kunt ook de firewall-logboekregistratie verhogen voor betere probleemoplossing. Bijvoorbeeld:
Set-NetFirewallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName "$env:SystemRoot\System32\LogFiles\Firewall\pfirewall.log"
Hierdoor houdt Windows een gedetailleerder logboek bij, wat handig is als je wilt achterhalen waarom bepaalde verbindingen worden geblokkeerd. Ik weet niet precies waarom het werkt, maar het helpt vaak om te ontdekken wat er achter de schermen gebeurt.
Hoe maak je firewallregels in Windows met PowerShell?
Als je je configuratie aanpast, poorten opent of specifieke apps blokkeert, biedt PowerShell een groot aantal opdrachten. De meest eenvoudige is New-NetFirewallRule. Bijvoorbeeld om inkomend HTTP- en HTTPS-verkeer toe te staan:
New-NetFirewallRule -DisplayName 'HTTP & HTTPS' -Profile @('Domain', 'Private') -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80, 443
Wil je voorkomen dat een programma zoals Firefox toegang krijgt tot je website? Zo doe je dat:
New-NetFirewallRule -Program "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -Action Block -Profile Domain, Private -DisplayName "Block Firefox" -Direction Outbound
Of beperk RDP tot een specifiek IP-adres, want dat is natuurlijk vaak nodig in beveiligde omgevingen:
New-NetFirewallRule -DisplayName "Allow RDP from Office" -RemoteAddress 192.168.2.200 -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow
Wil je het wat geavanceerder aanpakken? Maak regels aan voor ICMP-echoverzoeken (pings) vanuit bepaalde IP-bereiken om de netwerkstabiliteit te testen:
$ips = @("192.168.2.15-192.168.2.40", "192.168.100.15-192.168.100.200", "10.1.0.0/16")
New-NetFirewallRule -DisplayName "Allow inbound ICMPv4" -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ips -Action Allow
New-NetFirewallRule -DisplayName "Allow inbound ICMPv6" -Direction Inbound -Protocol ICMPv6 -IcmpType 8 -RemoteAddress $ips -Action Allow
En als er een lange lijst met IP-adressen is, kun je die gewoon uit een tekstbestand halen:
$ips=Get-Content C:\temp\ip.txt
Werk vervolgens het externe adres van de regel bij:
Get-NetFirewallRule -DisplayName 'Allow RDP' | Set-NetFirewallRule -RemoteAddress $ips
Het is ook de moeite waard om te vermelden dat het bewerken van regels eenvoudig is. Haal de bestaande regels op met Get-NetFirewallRule en gebruik vervolgens Set-NetFirewallRule om de externe adressen of poorten aan te passen.
Regels aanmaken voor meerdere IP-adressen of bestaande regels aanpassen.
Het toevoegen van meerdere IP-adressen tegelijk kan met een script. Bijvoorbeeld om een aantal IP-adressen toe te voegen aan een bestaande regel:
$ips = @("192.168.2.15", "192.168.2.17", "192.168.100.15")
$current_ips = (Get-NetFirewallRule -DisplayName 'HTTP-Inbound' | Get-NetFirewallAddressFilter).RemoteAddress
$current_ips += $ips
Set-NetFirewallRule -DisplayName 'HTTP-Inbound' -RemoteAddress $current_ips
Wil je een lijst van alle IP-adressen in een regel? Simpelweg:
Get-NetFirewallRule -DisplayName 'Http_inbound' | Get-NetFirewallAddressFilter
En als je een IP-adres uit een regel moet verwijderen – wat misschien wat vervelend is, maar wel mogelijk – is hier een handige truc:
$removeip = "192.168.100.5"
$current_ips = (Get-NetFirewallRule -DisplayName 'HTTP-Inbound' | Get-NetFirewallAddressFilter).RemoteAddress
$filterIP = $current_ips | Where-Object { $_ -ne $removeip }
Set-NetFirewallRule -DisplayName 'HTTP-Inbound' -RemoteAddress $filterIP
Regels snel in-, uitschakelen of verwijderen
Als een bepaalde regel problemen geeft of als je snel iets wilt aanpassen, voer dan het volgende commando uit:
Disable-NetFirewallRule -DisplayName 'HTTP-Inbound'
Om het weer in te schakelen:
Enable-NetFirewallRule -DisplayName 'HTTP-Inbound'
En als je een regel volledig wilt verwijderen:
Remove-NetFirewallRule -DisplayName 'HTTP-Inbound'
Voor een volledige reset — bijvoorbeeld als er iets mis is gegaan — kunt u alle regels terugzetten naar de standaardinstellingen met:
netsh advfirewall reset
of
(New-Object -ComObject HNetCfg. FwPolicy2).RestoreLocalFirewallDefaults()
Houd er rekening mee dat hiermee ook je aangepaste regels worden gewist. Exporteer je configuratiebestanden daarom van tevoren als je gevoelige instellingen aanpast.
netsh advfirewall export "C:\Backup\firewall-config.wfw"
netsh advfirewall import "C:\Backup\firewall-config.wfw"
Hoe controleer je actieve firewallregels met PowerShell?
Als je wilt zien welke regels er daadwerkelijk van kracht zijn, met name de regels die verkeer toestaan of blokkeren, probeer dan het volgende:
Get-NetFirewallRule | Where-Object { $_. Enabled -eq $true -and $_. Direction -eq 'Inbound' } | Format-Table
Alleen voor uitgaande regels:
Get-NetFirewallRule -Action Block -Enabled $true -Direction Outbound
En als je de details wilt bekijken, zoals poorten en IP-adressen, dan is dit handige script handig:
Get-NetFirewallRule -Action Allow -Enabled $true -Direction Inbound | Format-Table -Property Name, @{Name='Protocol';Expression={(Get-NetFirewallPortFilter -AssociatedNetFirewallRule $_).Protocol}}, @{Name='LocalPort';Expression={(Get-NetFirewallPortFilter -AssociatedNetFirewallRule $_).LocalPort}}, @{Name='RemoteAddress';Expression={(Get-NetFirewallAddressFilter -AssociatedNetFirewallRule $_).RemoteAddress}}
PowerShell maakt het beheer van firewalls in een complexe omgeving echt een stuk eenvoudiger, vooral voor het automatiseren van processen of het oplossen van netwerkproblemen.
Samenvatting
Al met al is het beheren van Windows Defender Firewall via PowerShell niet zo moeilijk – als je eenmaal gewend bent aan de commando’s, is het sneller dan door menu’s te klikken. Of je nu profielen in- of uitschakelt, regels voor poorten of apps aanpast of de configuratie reset, deze methode biedt meer controle en snellere oplossingen. Vergeet niet: exporteer altijd je regels voordat je ze wijzigt en schakel de firewall niet volledig uit, tenzij je daar een goede reden voor hebt. Hopelijk geeft dit wat meer duidelijkheid en helpt het je om je firewalls goed te configureren en je netwerk te beveiligen.
Samenvatting
- Controleer de huidige firewallstatus met
Get-NetFirewallProfile - Schakel het in/uit met
Set-NetFirewallProfile - Maak regels aan voor poorten, apps of IP-adressen met
New-NetFirewallRule - Bewerk regels door ze door te sturen naar
Set-NetFirewallRule - Reset of exporteer configuraties voordat je grote wijzigingen aanbrengt.
- Gebruik deze functie
Get-NetFirewallRuleom snel een overzicht te krijgen van de actieve regels.