Scripting und Automatisierung von Sicherheitseinstellungen Powershell-Befehle, die die Windows-Firewall steuern

Autor / Redakteur: Thomas Joos / Ulrike Ostler

In „Windows 8“ und „Windows Server 2012“ lassen sich per Powershell so gut wie alle Einstellungen für die Firewall vornehmen. Der Vorteil des Command-Line-Interface besteht in der Möglichkeit, die Konfigurationen in Skripte zu fassen und zu automatisieren. Außerdem lassen sich mehrere Verwaltungsaufgaben parallel ausführen.

Firma zum Thema

Thomas Joos zeigt, wie sich mit Powershell-Befehlen Firewalls errichten lassen.
Thomas Joos zeigt, wie sich mit Powershell-Befehlen Firewalls errichten lassen.
(Bild: Giorgia Clementi/ Fotolia.com)

Neben der Powershell lassen sich viele Einstellungen der Windows-Firewall auch in der Befehlszeile durchführen. Dazu wird der Befehl netsh.exe mit der Option advfirewall genutzt, zum Beispiel:

netsh advfirewall firewall add rule name="All ICMP V4 Allow" dir=in action=allow protocol=icmpv4

Wie sich eine Firewall-Regel über das Netzwerk und der Powershell auf alle Rechner mit Windows Server 2012 oder Windows 8 kopieren lässt, erfahren Interessanten in einem Blog-Beitrag der Technet-Seite, alle CMDlets für die Windows-Powershell sind ebenfalls in der TechNet zu finden.

In der Powershell stehen zahlreiche Befehle zur Verfügung, um die Firewall zu steuern.
In der Powershell stehen zahlreiche Befehle zur Verfügung, um die Firewall zu steuern.
(Bild: Thomas Joos)
In aktuellen Windows-Versionen ab Windows 7 sollten Administratoren aber besser auf die Powershell setzen, um die Firewall zu konfigurieren. Hier stehen mehr Möglichkeiten zur Verfügung und auch andere Einstellungen lassen sich konfigurieren.

Alle Befehle die zur Verfügung stehen, lassen sich am besten mit dem Befehl Get-Command -module Netsecurity anzeigen. Wie für alle CMDlets, kann auch für die CMDlets der Firewall eine Hilfe angezeigt werden. Dazu steht in der Powershell der Befehl get-help <CMDlet> zur Verfügung. Mit der Option -examples zeigt die Powershell Beispiele an.

Um etwa eine neue Firewall-Regel zu erstellen, hilft der Befehl

New-NetFirewallRule -DisplayName "ICMP block" -Direction Inbound -Protocol icmp4 -Action Block

Firewall-Regeln in der Powershell erstellen, ändern, löschen und kopieren

Anstatt mit New-NetFirewallRule eine neue Firewall-Regel zu erstellen, ist es häufig einfacher, Firewall-Regeln zu kopieren. Dazu steht der Befehl Copy-NetFirewallRule zur Verfügung.

Auch IPSec-Regeln lassen sich kopieren. Dazu wird das CMDlet Copy-NetIPsecRule verwendet. Umbenennen lassen sich Firewall-Regeln dann mit dem CMDlet Rename-NetFirewallRule.

Beim Kopieren können Administratroren aber schon einen neuen Namen angeben. Beispiel:

Copy-NetFirewallRule -DisplayName "Require Outbound Authentication" -NewName "Alternate Require Outbound Authentication"

Löschen können Administratoren Firewall-Regeln mit Remove-NetFirewallRule. Firewall-Regeln lassen sich auch mit Gruppenrichtlinien verteilen. Auch hier haben Administratoren die Möglichkeit die Firewall-Regeln eines Domänen-Profils zu kopieren, die mit einer bestimmten GPO im Unternehmen verteilt werden. Beispiel:

Get-NetFirewallProfile -Profile Domain -PolicyStore <FQDN der Domäne>\<Name der GPO> | Copy-NetFirewallRule -NewPolicyStore <FQDN der Domäne>\<Neue GPO>

Im vorangegangenen Profil ist auch das CMDlet Get-NetFirewallProfil eingebunden. Mit diesem CMDlet lassen sich Firewall-Regeln in der Powershell anzeigen.

Firewall in der Powershell steuern und Regeln aktivieren oder deaktivieren

Neben dem Erstellen und Anpassen von Firewall-Regeln können Administratoren auch die Powershell als Ganzes steuern. Auf diesem Weg lassen sich Firewall-Regeln zeitweise deaktivieren (Disable-NetFirewallRule) und dann wieder aktivieren (Enable-NetFirewallRule). Die Syntax ist recht einfach:

Disable-NetFirewallRule –DisplayName "<Anzeigename>"

Mit dem CMDlet ist es zum Beispiel möglich, alle Firewall-Regeln einer bestimmten Gruppenrichtlinie zu deaktivieren:

Disable-NetFirewallRule –Direction Outbound -PolicyStore <Domäne>\<GPO>

Um alle Firewall-Regeln eines Rechners in einer Variablen zu speichern, verwenden Administratoren zum Beispiel:

$Rules = Get-NetFirewallRule -PolicyStore ActiveStore -PolicyStoreSourceType Dynamic

Über diese Variable lassen sich dann alle FirewallRegeln deaktivieren:

Disable-NetFirewallRule –InputObject $Rules

Anstatt das Ergebnis einer Abfrage in einer Variable zu speichern, lassen sich die Ergebnisse aber auch mit dem Pipe (|) direkt an ein anderes CMDlet übergeben:

Get-NetFirewallRule -PolicyStore ActiveStore -PolicyStoreSourceType Dynamic | Disable-NetFirewallRule

Auf dem gleichen Weg wie sich Firewall-Regeln mit Disable-NetFirewallRule deaktivieren lassen, können Administratoren die Regeln mit Enable-NetFirewallRule auch wieder aktivieren.

Firewall-Regeln anzeigen und Status abfragen

Der Status von Firewall-Regeln lässt sich wiederum mit Get-NetFirewallRule anzeigen. Alle Regeln eines Rechners, unabhängig von deren Status, zeigen Administratoren mit Get-NetFirewallRule -All an.

Die aktivierten Regeln zeigt die Powershell mit Get-NetFirewallRule -Enabled True an. Um die aktivierten Regeln anzuzeigen, die den Datenverkehr erlauben, verwenden Administratoren mit Get-NetFirewallRule -Enabled True -Action Allow an.

Die aktivierten Firewall-Regeln, die Zugriff erlauben, können Administratoren in der Powershell anzeigen.
Die aktivierten Firewall-Regeln, die Zugriff erlauben, können Administratoren in der Powershell anzeigen.
(Bild: Thomas Joos)
Alle Regeln eines bestimmten Profils lassen sich Administratoren mit Get-NetFirewallProfile -Name Public | Get-NetFirewallRule anzeigen. Die IPSec-Regeln lassen Sie sich am einfachsten mit Show-NetFirewallRule anzeigen.

Firewall-Profile und die komplette Firewall steuern

Neben den Regeln lassen sich auch die einzelnen Profile in der Powershell steuern. Dazu steht das CMDlet Set-NetFirewallProfile zur Verfügung. So lassen sich auf diesem Weg alle Profile und die damit verbundenen Regeln aktivieren, damit die Firewall funktioniert:

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

Um das Standardverhalten eines Profils zu steuern, verwenden Administratoren:

Set-NetFirewallProfile –Name Domain –DefaultInboundAction Block

Die globalen Einstellungen für die Windows-Firewall lassen sich mit Set-NetFirewallSetting steuern.

Der Autor:

Thomas Joos schreibt als freier Autor Fachbücher und Artikel und bloggt in "Tom´'s Admin-Blog"

(ID:42267698)