So steuern Sie Windows-Firewallregeln mit PowerShell

Dieser Artikel befasst sich mit der Verwaltung der Windows Defender Firewall über PowerShell. Das mag zunächst etwas komplex erscheinen, insbesondere wenn Sie die grafische Benutzeroberfläche oder herkömmliche Befehle gewohnt sind. Doch sobald Sie sich damit vertraut gemacht haben, erweist es sich als praktisches Werkzeug zur Automatisierung von Prozessen – wie dem Ein- und Ausschalten der Firewall, dem Erstellen von Regeln oder dem Zurücksetzen von Konfigurationen, ohne sich durch unzählige Menüs klicken zu müssen. Manchmal funktioniert die Firewall nach Updates oder Netzwerkänderungen nicht wie gewünscht. In solchen Fällen kann die direkte Verwendung von PowerShell viel Zeit und Frust ersparen. Sie erfahren, wie Sie Profile umschalten, Regeln für Ports oder Anwendungen erstellen und sogar die im Hintergrund laufenden Prozesse analysieren und Fehler beheben.

So beheben Sie Probleme mit den Windows-Firewall-Einstellungen mithilfe von PowerShell

So aktivieren oder deaktivieren Sie die Windows Defender Firewall

Bei den meisten Neuinstallationen ist die Firewall standardmäßig aktiviert. Manchmal möchte man sie jedoch komplett deaktivieren – beispielsweise zu Testzwecken oder für eine schnelle Problemlösung (langfristig natürlich nicht empfehlenswert).Den Profilstatus können Sie mit folgendem Befehl überprüfen:

Get-NetFirewallProfile | Format-Table Name, Enabled

Hier werden alle drei Netzwerktypen (Domäne, Privat, Öffentlich) und ihr Status (aktiviert/deaktiviert) angezeigt. Falls etwas nicht stimmt oder Sie die Netzwerkverbindung komplett deaktivieren müssen, verwenden Sie Folgendes:

Set-NetFirewallProfile -All -Enabled False

Oder einen bestimmten ins Visier nehmen:

Set-NetFirewallProfile -Profile Public -Enabled False

Dadurch wird die Firewall Ihres öffentlichen Netzwerks deaktiviert. Das kann hilfreich sein, wenn Sie ein Problem beheben, das keine Verbindung herstellen kann. Seien Sie jedoch vorsichtig: Deaktivieren Sie die Firewall nur, wenn Sie sich der Sicherheitslage absolut sicher sind. Bei manchen Systemen funktioniert Windows wieder einwandfrei, wenn Sie die Firewall deaktivieren und anschließend neu starten oder sie später wieder aktivieren.

So ändern Sie Netzwerkprofile und Protokollierungseinstellungen

Wenn Windows Ihr Netzwerk nicht korrekt erkennt (z. B.es fälschlicherweise als öffentliches Netzwerk einstuft, obwohl Sie sich zu Hause befinden), können Sie das Profil manuell festlegen oder mit dem Befehl „ Get-NetConnectionProfile“ überprüfen, welches Profil aktiv ist. Um das Profil zu ändern, führen Sie folgenden Befehl aus:

Set-NetConnectionProfile -InterfaceAlias "Ethernet0" -NetworkCategory Private

Ersetzen Sie „Ethernet0“ durch den Alias ​​Ihrer tatsächlichen Netzwerkschnittstelle, den Sie durch Ausführen folgender Befehle ermitteln können:

Get-NetAdapter | Select Name, InterfaceAlias

Zur besseren Fehlerbehebung empfiehlt es sich möglicherweise auch, die Firewall-Protokollierung zu erweitern:

Set-NetFirewallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName "$env:SystemRoot\System32\LogFiles\Firewall\pfirewall.log"

Dadurch führt Windows ein detaillierteres Protokoll, was hilfreich ist, wenn man herausfinden möchte, warum bestimmte Verbindungen blockiert werden. Ich bin mir nicht sicher, warum es funktioniert, aber es hilft oft dabei, die Vorgänge im Hintergrund zu verstehen.

Wie man Firewall-Regeln unter Windows mit PowerShell erstellt

Wenn Sie Ihre Konfiguration anpassen, Ports öffnen oder bestimmte Anwendungen blockieren, bietet PowerShell eine Reihe von Befehlen. Der einfachste ist New-NetFirewallRule. Um beispielsweise eingehenden HTTP- und HTTPS-Datenverkehr zuzulassen:

New-NetFirewallRule -DisplayName 'HTTP & HTTPS' -Profile @('Domain', 'Private') -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80, 443

Möchten Sie den ausgehenden Zugriff eines Programms wie Firefox blockieren? So geht’s:

New-NetFirewallRule -Program "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -Action Block -Profile Domain, Private -DisplayName "Block Firefox" -Direction Outbound

Oder man beschränkt RDP auf eine bestimmte IP-Adresse – denn das ist in sicheren Umgebungen natürlich oft erforderlich:

New-NetFirewallRule -DisplayName "Allow RDP from Office" -RemoteAddress 192.168.2.200 -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow

Sie möchten es etwas ausgefeilter gestalten? Erstellen Sie Regeln für ICMP-Echo-Anfragen (Pings) aus bestimmten IP-Bereichen, um die Netzwerkstabilität zu 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

Und falls die IP-Liste sehr lang ist, kann man sie einfach aus einer Textdatei exportieren:

$ips=Get-Content C:\temp\ip.txt

Aktualisieren Sie anschließend die Remote-Adresse der Regel:

Get-NetFirewallRule -DisplayName 'Allow RDP' | Set-NetFirewallRule -RemoteAddress $ips

Erwähnenswert ist auch, dass das Bearbeiten von Regeln unkompliziert ist. Rufen Sie einfach die vorhandenen Regeln mit Get-NetFirewallRule ab und leiten Sie sie an Set-NetFirewallRule weiter, um die Remote-Adressen oder Ports anzupassen.

Regeln für mehrere IPs erstellen oder bestehende Regeln anpassen

Mehrere IP-Adressen gleichzeitig können mithilfe eines Skripts hinzugefügt werden. Um beispielsweise einer bestehenden Regel einige IP-Adressen hinzuzufügen:

$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

Die Liste aller IPs einer Regel erhalten? Ganz einfach:

Get-NetFirewallRule -DisplayName 'Http_inbound' | Get-NetFirewallAddressFilter

Und falls Sie eine IP-Adresse aus einer Regel entfernen müssen – etwas ärgerlich, aber machbar – hier ein schneller Trick:

$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

Regeln schnell aktivieren, deaktivieren oder entfernen

Falls eine bestimmte Regel nicht funktioniert oder Sie eine schnelle Änderung vornehmen möchten, führen Sie Folgendes aus:

Disable-NetFirewallRule -DisplayName 'HTTP-Inbound'

Um es wieder einzuschalten:

Enable-NetFirewallRule -DisplayName 'HTTP-Inbound'

Und falls Sie eine Regel komplett streichen müssen:

Remove-NetFirewallRule -DisplayName 'HTTP-Inbound'

Für einen kompletten Reset – beispielsweise, wenn es etwas chaotisch geworden ist – können Sie alle Regeln auf die Standardeinstellungen zurücksetzen mit:

netsh advfirewall reset

oder

(New-Object -ComObject HNetCfg. FwPolicy2).RestoreLocalFirewallDefaults()

Bedenken Sie, dass dadurch auch Ihre benutzerdefinierten Regeln gelöscht werden. Exportieren Sie diese daher besser vorher, wenn Sie an sensiblen Konfigurationen arbeiten.

netsh advfirewall export "C:\Backup\firewall-config.wfw"
netsh advfirewall import "C:\Backup\firewall-config.wfw"

So überprüfen Sie aktive Firewall-Regeln mit PowerShell

Wenn Sie sehen möchten, welche Regeln tatsächlich gelten, insbesondere diejenigen, die den Datenverkehr zulassen oder blockieren, versuchen Sie Folgendes:

Get-NetFirewallRule | Where-Object { $_. Enabled -eq $true -and $_. Direction -eq 'Inbound' } | Format-Table

Nur für ausgehende Regeln:

Get-NetFirewallRule -Action Block -Enabled $true -Direction Outbound

Und falls Sie sich die Details ansehen möchten, einschließlich Ports und IPs, hilft Ihnen dieses praktische Skript:

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 macht die _tiefgreifende_ Firewall-Verwaltung deutlich einfacher, insbesondere für die Automatisierung von Abläufen oder die Behebung von Netzwerkproblemen.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass die Verwaltung der Windows Defender Firewall über PowerShell gar nicht so schwierig ist – sobald man sich an die Befehle gewöhnt hat, geht es deutlich schneller als durch Menüs zu navigieren. Ob Sie Profile aktivieren/deaktivieren, Regeln für Ports oder Apps anpassen oder die Konfigurationen zurücksetzen möchten: Diese Methode bietet mehr Kontrolle und ermöglicht schnellere Problemlösungen. Wichtig: Exportieren Sie Ihre Regeln immer, bevor Sie Änderungen daran vornehmen, und deaktivieren Sie die Firewall nur dann vollständig, wenn es einen triftigen Grund dafür gibt. Hoffentlich hilft Ihnen dieser Beitrag weiter und trägt dazu bei, Ihre Firewalls optimal zu schützen und Ihr Netzwerk sicher zu halten.

Zusammenfassung

  • Überprüfen Sie den aktuellen Firewall-Status mitGet-NetFirewallProfile
  • Schalten Sie es ein/aus mitSet-NetFirewallProfile
  • Erstellen Sie Regeln für Ports, Apps oder IPs mitNew-NetFirewallRule
  • Bearbeiten Sie Regeln, indem Sie sie inSet-NetFirewallRule
  • Vor größeren Änderungen Konfigurationen zurücksetzen oder exportieren.
  • Dient Get-NetFirewallRulezur schnellen Übersicht der aktiven Regeln