Hoe beheer je Windows-firewallregels met PowerShell?

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 metGet-NetFirewallProfile
  • Schakel het in/uit metSet-NetFirewallProfile
  • Maak regels aan voor poorten, apps of IP-adressen metNew-NetFirewallRule
  • Bewerk regels door ze door te sturen naarSet-NetFirewallRule
  • Reset of exporteer configuraties voordat je grote wijzigingen aanbrengt.
  • Gebruik deze functie Get-NetFirewallRuleom snel een overzicht te krijgen van de actieve regels.