Scripting und Automatisierung von Sicherheitseinstellungen Powershell-Befehle, die die Windows-Firewall steuern
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.
Anbieter zum Thema

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.
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.
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)