Die Windows-Firewall per PowerShell und Befehlszeile steuern

In Windows-Netzwerken lassen sich die Firewall-Einstellungen der Clients und Server über die PowerShell steuern. Die Konfiguration über Gruppenrichtlinien ist ebenfalls möglich.

Mit der PowerShell und Befehlszeile können recht umfangreich die Firewall-Einstellungen von Windows-Servern gesteuert werden. Das funktioniert unabhängig von Gruppenrichtlinien, aber auch gemeinsam mit Richtlinien.

Es lassen sich Regeln mit der grafischen Oberfläche auf Servern genauso setzen, wie in der Befehlszeile und PowerShell. Befehle der PowerShell können ihrerseits als Skripte in den Gruppenrichtlinien verteilt werden. Die Konfiguration der Firewall mit PowerShell DSC ist möglich, genauso wie das Konfigurieren der Firewall über die grafische Oberfläche der Gruppenrichtlinien.

Administratoren finden die Einstellungen der Firewall in der grafischen Oberfläche in der Systemsteuerung unter System und Sicherheit/Windows-Firewall über den Link Eine App oder ein Feature durch die Windows-Firewall durchlassen. Hier können jederzeit neue Regeln erstellt werden, oder Programmen gestattet werden aus dem Netzwerk Informationen zu erhalten.

Firewall in der Befehlszeile steuern

Neben der PowerShell können Firewall-Einstellungen auch mit der Befehlszeile konfiguriert werden. Dazu steht das Tool netsh.exe zur Verfügung. Ein Beispiel dafür ist:

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

Für Testzwecke kann die Firewall in der Befehlszeile auch kurzzeitig deaktiviert werden:

netsh firewall set opmode disable

Entsprechend ist auch das Aktivieren der Firewall möglich:

netsh firewall set opmode enable

Um alle Einstellungen der Firewall zurückzusetzen, wird der folgende Befehl verwendet:

netsh advfirewall reset

In der Befehlszeile lassen sich alle Regeln folgendermaßen ausgeben:

netsh advfirewall firewall show rule name=all

Der Status der einzelnen Firewall-Profile der Firewall wird so abgerufen:

netsh advfirewall show allprofiles

Die Firewall mit der PowerShell verwalten

Generell ist es ratsamer, wenn mit der PowerShell gearbeitet wird. Hier stehen mehr Optionen zur Verfügung, und PowerShell-Skripte und Befehle lassen sich effektiver durchführen. Alle Befehle, die zur Verfügung stehen, lassen sich am besten mit dem Befehl Get-Command -module Netsecurity anzeigen.

Wie für alle Cmdlets der PowerShell, 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.

Neue Regeln werden zum Beispiel folgendermaßen erstellt:

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

Firewall-Regeln lassen sich aber nicht nur erstellen, sondern auch jederzeit bearbeiten. Die Bearbeitung der verschiedenen Profile ist gleichfalls möglich:

Set-NetFirewallProfile -DefaultInboundAction Block -DefaultOutboundAction Allow -NotifyOnListen True

Der Befehl Copy-NetFirewallRule kann vorhandene Regeln kopieren, die sich anschließend mit Set-NetFirewallRule bearbeiten lassen.

Umbenennen lassen sich Firewall-Regeln mit dem Cmdlet Rename-NetFirewallRule. Neue Namen lassen sich aber auch beim Kopieren einer Regel mit Copy-NetFirewallRule definieren. Das Löschen von Firewall-Regeln wird mit Remove-NetFirewallRule durchgeführt.

Firewall-Regeln können deaktiviert werden (Disable-NetFirewallRule). Auch das Aktivieren ist möglich (Enable-NetFirewallRule).

Firewall-Regeln und Gruppenrichtlinien

Firewall-Regeln können per Gruppenrichtlinien verteilt werden. Hier können zum Beispiel die Firewall-Regeln eines Profils, zum Beispiel des Domänenprofils kopiert werden. Es lassen sich also Firewall-Regeln kopieren und als neue Gruppenrichtlinie definieren:

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. Mit der PowerShell lassen sich wiederum alle Regeln einer bestimmten Richtlinie deaktivieren:

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

Die notwendigen Einstellungen für Firewall-Regeln in der Gruppenrichtlinienverwaltung sind über Computerkonfiguration/Richtlinien/Windows-Einstellungen/Sicherheitseinstellungen/Windows-Firewall mit erweiterter Sicherheit zu finden. Hier können über die Eigenschaften Anpassungen vorgenommen und neue Regeln erstellt werden.

Firewall-Regeln für SQL Server

Serverdienste benötigen eigene Einstellungen für die Windows-Firewall. Diese lassen sich mit den in diesem Beitrag beschriebenen Mitteln im Netzwerk umsetzen. Beim Betrieb von Microsoft SQL Server 2012/2014, aber auch 2016, müssen Administratoren einige Punkte im Bereich der Firewall-Regeln beachten. Das beginnt bereits bei der Installation des Servers, geht über Einstellungen in der Verwaltung, und muss auch bei der Anbindung von Clients beachtet werden.

Die Firewall von Windows-Servern kann in der Befehlszeile und per PowerShell gesteuert werden.
Abbildung 1: Die Firewall von Windows-Servern kann in der Befehlszeile und per PowerShell gesteuert werden.

Häufig erscheint bei der Installation von SQL Server zum Beispiel ein Fehler, dass die Windows-Firewall die entsprechenden Ports für SQL Server blockiert. Diese können Administratoren nachträglich aber immer noch freischalten. Nach der Installation von SQL Server auf einem Windows-Server kann der Server bereits lokal konfiguriert werden. Anschließend werden die Ports für den Remotezugriff freigeschaltet. Dazu muss die Windows-Firewall auf dem Server konfiguriert werden, zum Beispiel in der Befehlszeile:

netsh advfirewall firewall add rule name = SQLPorttcp dir = in protocol = tcp action = allow localport = 1433-1434 remoteip = localsubnet profile = DOMAIN

netsh advfirewall firewall add rule name = SQLPortudp dir = in protocol = udp action = allow localport = 1433-1434 remoteip = localsubnet profile = DOMAIN 

Wenn das TCP/IP-Protokoll aktiviert ist, und eine Instanz von SQL Server 2012/2014 oder 2016 startet, wird dem Server ein TCP/IP-Port zugewiesen. Wenn das Named-Pipes-Protokoll aktiviert ist, lauscht SQL Server an einer speziell benannten Pipe. Dieser Port wird von der betreffenden Instanz zum Zugriff mit Client-Anwendungen verwendet. Bei der Installation von SQL Server 2012/2014 werden der TCP-Port 1433 und die Pipe \sql\query der Standardinstanz zugewiesen.

Die Einstellungen lassen sich aber ändern. Beim Starten verwendet SQL-Server-Browser den UDP-Port 1434. Der SQL-Server-Browser liest die Registrierung des Servers, identifiziert alle Instanzen auf dem Server und speichert die verwendeten Ports und Named Pipes. Damit Anwendungen wie SharePoint auf einen Server zugreifen dürfen, um zum Beispiel selbst Datenbanken zu erstellen, müssen Firewall-Regeln erstellt und im Konfigurations-Manager Protokolle freigeschaltet werden.

Folgen Sie SearchSecurity.de auch auf Twitter, Google+, Xing und Facebook

Nächste Schritte

Was bieten Windows-Firewalls von Drittanbietern?

Kostenloser E-Guide: Mehr Sicherheit mit der PowerShell

Windows Defender per PowerShell steuern

Erfahren Sie mehr über Anwendungs- und Plattformsicherheit

ComputerWeekly.de
Close