Konfigurieren von Windows-Firewallregeln mit PowerShell

Admin

Dieser Artikel enthält die Grundlagen zum Verwalten von Einstellungen und Regeln der integrierten Windows Defender-Firewall mit erweiterter Sicherheit mithilfe von PowerShell. Wir überlegen, wie Sie die Firewall für verschiedene Netzwerkprofile aktivieren/deaktivieren und eine Firewall erstellen oder entfernen Regeln und schreiben Sie ein kleines PS-Skript, um eine praktische Tabelle mit dem aktuellen Satz aktiver Firewalls zu erhalten Regeln.

Inhalt:

  • Wie verwalte ich Windows-Firewall-Netzwerkprofile über PowerShell?
  • Wie erstellt, bearbeitet oder entfernt man Windows-Firewallregeln mit PowerShell?
  • Auflisten von Windows-Firewallregeln mit PowerShell

Sie können die Windows-Firewall-Einstellungen über die Grafikkonsole verwalten: Systemsteuerung -> System und Sicherheit -> Windows Defender-Firewall. Ab Windows 8.1 (Windows Server 2012 R2) können Sie jedoch die integrierte Version verwenden NetSecurity PowerShell-Modul zur Verwaltung der Firewall.

Bisher wurde der folgende Befehl zum Verwalten der Windows-Firewallregeln und -einstellungen verwendet: netsh advfirewall firewall

Im NetSecurity-Modul unter Windows 10 stehen 85 Befehle zur Verfügung. Sie können die gesamte Liste anzeigen:

Get-Command -Module NetSecurity

PowerShell NetSecurity unter Windows 10 zur Verwaltung der erweiterten Windows Defender-Firewall

Wie verwalte ich Windows-Firewall-Netzwerkprofile über PowerShell?

Es gibt drei Arten von Netzwerkprofilen in der Windows-Firewall:

  • Domain – wird auf die Computer in einer Active Directory-Domäne angewendet
  • Privatgelände – Heim- oder Firmennetzwerke
  • Öffentlich – öffentliche Netzwerke
Netzwerkstandort der Windows Defender-Firewall (Profile)
Network Location Awareness (NLA) speichert die Informationen über Netzwerktypen in seiner Datenbank. Du kannst Ändern Sie Ihr Netzwerkprofil (Standort) wenn es falsch erkannt wurde.

Jedes Netzwerkprofil (Standort) kann sich durch die verwendeten Firewall-Regeln unterscheiden. Standardmäßig sind alle Netzwerkschnittstellen eines Computers durch die Firewall geschützt und alle drei Profiltypen werden auf sie angewendet.

Um alle drei Netzwerkprofile zu aktivieren: Domäne, öffentlich und privat, verwenden Sie diesen Befehl:

Set-NetFirewallProfile -All -Enabled True

Oder legen Sie stattdessen das spezifische Profil fest Alle:

Set-NetFirewallProfile -Profile Public -Enabled True

Um die Firewall für alle drei Netzwerkstandorte zu deaktivieren, verwenden Sie den folgenden Befehl:

Set-NetFirewallProfile -All -Enabled False

Mit dem Cmdlet Set-NetFirewallProfile können Sie Profiloptionen ändern (eine Standardaktion, Protokollierung, einen Pfad zu und eine Größe einer Protokolldatei, Benachrichtigungseinstellungen usw.).

Sie wissen vielleicht, dass in modernen Betriebssystemversionen die Windows-Firewall für alle Profile aktiviert ist. In den Profileinstellungen sind alle ausgehenden Verbindungen erlaubt und eingehende Verbindungen (mit Ausnahme der erlaubten) blockiert.

Ändern wir die Standardaktion für das öffentliche Profil, um alle eingehenden Verbindungen zu blockieren.

Set-NetFirewallProfile –Name Public –DefaultInboundAction Block

Die aktuellen Profileinstellungen können Sie wie folgt anzeigen:

Get-NetFirewallProfile -Name Public

Set-NetFirewallProfile

Wenn du Verwalten Sie Ihre Windows-Firewall-Einstellungen mithilfe von GPOkönnen Sie die aktuell resultierenden Profileinstellungen wie folgt anzeigen:

Get-NetFirewallProfile -policystore activestore

Stellen Sie sicher, dass alle Firewall-Einstellungen auf alle Netzwerkschnittstellen des Computers angewendet werden.

Get-NetFirewallProfile -Name Public | fl DisabledInterfaceAliases

Wenn alle Schnittstellen geschützt sind, gibt der Befehl Folgendes zurück:

DisabledInterfaceAliases: {NotConfigured}
Get-NetFirewallProfile

Sie können das spezifische Schnittstellenprofil deaktivieren (um die Liste der Schnittstellennamen anzuzeigen, verwenden Sie Get-NetIPInterface):

Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet0"

Wie Sie sehen, wird das öffentliche Profil nicht mehr auf Ethernet0 angewendet:

DisabledInterfaceAliases: {Ethernet0}
Deaktivieren Sie den öffentlichen Standort für die ehernet0-Schnittstelle

Sie können Protokollierungsoptionen für Netzwerkverbindungen auf Profilebene festlegen. Standardmäßig werden Windows-Firewall-Protokolle unter %systemroot%\system32\LogFiles\Firewall gespeichert und die Dateigröße beträgt 4 MB. Sie können die gesamte Verbindungsprotokollierung aktivieren und die maximale Dateigröße ändern:

Set-NetFireWallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName ‘%systemroot%\system32\LogFiles\Firewall\pfirewall.log’

Wie erstellt, bearbeitet oder entfernt man Windows-Firewallregeln mit PowerShell?

Es gibt 9 Cmdlets zum Verwalten Ihrer Firewall-Regeln:

  • Neue-NetFirewallRule
  • Copy-NetFirewallRule
  • Disable-NetFirewallRule
  • Enable-NetFirewallRule
  • Get-NetFirewallRule
  • Remove-NetFirewallRule
  • Benennen Sie „NetFirewallRule“ um
  • Set-NetFirewallRule
  • Show-NetFirewallRule

Betrachten wir einige einfache Beispiele für das Öffnen von Ports in der Windows-Firewall.

Wenn Sie beispielsweise eingehende TCP-Verbindungen zu den Ports 80 und 443 für Domänen- und Privatprofile zulassen möchten, verwenden Sie diesen Befehl:

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

New-NetFirewallRule erstellt eine neue Firewall-Regel mit Powershell

Sie können den Netzwerkzugriff für eine App zulassen oder blockieren. Sie möchten beispielsweise ausgehende Verbindungen für Firefox blockieren:

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

Um eingehende Daten zuzulassen RDP-Verbindung auf Port 3389 von nur einer IP-Adresse:

New-NetFirewallRule -DisplayName "AllowRDP" –RemoteAddress 192.168.2.200 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow

Um Ping (ICMP) für Adressen aus dem angegebenen IP-Subnetz oder IP-Bereich zuzulassen, verwenden Sie diese Befehle:

$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

Im vorherigen Artikel haben wir gezeigt, wie das geht Blockieren Sie den Zugriff auf die Website sowohl nach IP-Adresse als auch nach einem Domänen-/Site-DNS-Namen mit PowerShell.

Um eine bestehende Firewall-Regel zu bearbeiten, wird das Cmdlet Set-NetFirewallRule verwendet. Um beispielsweise eingehende Verbindungen von der angegebenen IP-Adresse für die zuvor erstellte Regel zuzulassen:

Get-NetFirewallrule -DisplayName 'HTTP-Inbound' | Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.10

Wenn Sie einer Firewall-Regel mehrere IP-Adressen hinzufügen möchten, verwenden Sie dieses Skript:

$ips = @("192.168.2.15", "192.168.2.17",”192.168.100.15”)
Get-NetFirewallrule -DisplayName 'WEB-Inbound'|Set-NetFirewallRule -RemoteAddress $ips

So zeigen Sie alle IP-Adressen in einer Firewall-Regel an:

Get-NetFirewallrule -DisplayName 'Allow inbound ICMPv4'|Get-NetFirewallAddressFilter

Get-NetFirewallAddressFilter zeigt IP-Adressen in der Firewall-Regel an

Sie können Firewall-Regeln aktivieren/deaktivieren mit Disable-NetFirewallRule Und Enable-NetFirewallRule Cmdlets.

Disable-NetFirewallRule –DisplayName 'WEB-Inbound'

Um ICMP (Ping) zuzulassen, führen Sie diesen Befehl aus:

Enable-NetFirewallRule -Name FPS-ICMP4-ERQ-In

Zum Entfernen einer Firewallregel wird das Cmdlet Remove-NetFirewallRule verwendet.

Auflisten von Windows-Firewallregeln mit PowerShell

Sie können die Liste der aktiven Firewall-Regeln für Ihren eingehenden Datenverkehr wie folgt anzeigen:

Get-NetFirewallRule | where {($_.enabled -eq $True) -and ($_.Direction -eq "Inbound")} |ft

Wenn Sie die Liste der ausgehenden Blockierungsregeln anzeigen möchten:

Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound

So zeigen Sie einen App-Namen in einer Regel an:

Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound | %{$_.Name; $_ | Get-NetFirewallApplicationFilter}

Get-NetFirewallrule – Eigenschaften der Firewall-Regel anzeigen

Wie Sie sehen, zeigt das Cmdlet „Get-NetFirewallRule“ keine Netzwerkports und IP-Adressen für Ihre Firewallregeln an. Um die detaillierten Informationen zu zulässigen eingehenden (ausgehenden) Verbindungen bequemer mit den Portnummern anzuzeigen, verwenden Sie das folgende PowerShell-Skript:

Get-NetFirewallRule -Action Allow -Enabled True -Direction Inbound |
Format-Table -Property Name,
@{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},
@{Name='LocalPort';Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}},
@{Name='RemotePort';Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},
@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},
Enabled, Profile, Direction, Action

Verwenden Sie PowerShell, um Firewall-Regeln mit Portnummern aufzulisten

PowerShell bietet zahlreiche Möglichkeiten, Windows-Firewallregeln über die Eingabeaufforderung zu verwalten. Sie können PowerShell-Skripte automatisch ausführen, um Ports zu öffnen/schließen, wenn bestimmte Ereignisse eintreten. Im nächsten Artikel betrachten wir eine einfache PowerShell- und Windows-Firewall-basierte Lösung dafür Blockieren Sie automatisch IP-Adressen, die versuchen, aus der Ferne Brute-Force-Passwörter über RDP auf Ihrem Windows VDS auszuprobieren Server.

Suchen Sie mit PowerShell nach offenen (abhörenden) Ports
Suchen Sie mit PowerShell nach offenen (abhörenden) Ports

In PowerShell können Sie das verwenden Test-NetConnection Cmdlet, um zu überprüfen, ob ein Port a...

Installieren von PowerShell Core auf Linux-Distributionen
Installieren von PowerShell Core auf Linux-Distributionen

Heute ist PowerShell eine offene, plattformübergreifende Shell- und Skriptsprache, die auf Window...

So erstellen, ändern und entfernen Sie lokale Benutzer oder Gruppen mit PowerShell
So erstellen, ändern und entfernen Sie lokale Benutzer oder Gruppen mit PowerShell

Sie können das integrierte PowerShell-Modul verwenden, Microsoft. Power Shell. Lokale Konten, um ...