Windows Firewall mit Netsh konfigurieren
16. März 2012Die kommende Version des Windows Server zeichnet sich bereits ab: Die Betaversion des “Windows Server 8” steht bereits zum Download bereit – und sie wird eine massive Erweiterung der Funktionalitäten bringen, die über die Powershell konfigurierbar sein wird. Ungefähr 2300 neue Windows-Powershell-Kommandos sollen dazu kommen.
In der heutigen Version der freigegebenen Windows Server arbeitet die Powershell nur mit einer Untermenge der Funktionen im Umfeld der Windows Server Verwaltung. Was die Powershell heute noch nicht abdeckt, ist die Konfiguration der Netzwerk- und Firewall-Funktionalitäten. Hier kann der Administrator aber mit den altehrwürdigen Netsh-Befehlen punkten.
Auch wenn Microsoft ein großes Augenmerk auf die Powershell legt, so ist doch auch die Netsh-Familie weiterentwickelt worden. Vor allem im Bereich der Server Core-Versionen erweist sich die Kenntnis von Netsh-Kommandos als ein wichtiger Faktor im Bereich der Systemkonfiguration.
In diesem Beitrag zeigt der Autor zehn interessante und nützliche Netsh-Befehle, mit denen der Administrator die Konfiguration der Windows-Firewall abfragen und auch neu setzen kann. Dabei ist noch ein Aspekt wichtig: All diese Netsh-Befehle lassen sich auch aus der Powershell-Umgebung heraus aufrufen.
Die Abfrage der aktuellen Einstellungen der Firewall (die sogenannten Firewall Regeln) ist in der Regel der Ausgangspunkt für das Arbeiten an der Firewall-Konfiguration. Die aktuell aktiven Eigenschaften der Firewall liefert der folgende Netsh-Befehl:
netsh advfirewall firewall show rule name=all
Das Aktivieren und das Ausschalten der Windows-Firewall ist ebenfalls eine häufige Aufgabe im Administratorenalltag. Es gehört zwar zu den Best Practices, die Firewall eingeschaltet zu lassen, doch wenn man Tests abwickelt – wie zum Beispiel Performance Tests von neuen Applikationen – dann muss man des Öfteren für einen überschaubaren Zeitraum die Firewall abschalten. Die Netsh-Befehle für das Ein- und Ausschalten der Firewall lauten wie folgt:
netsh advfirewall set allprofiles state on
netsh advfirewall set allprofiles state off
Auch Administratoren sind Menschen: Bei der Konfiguration der Firewall können immer mal Fehler auftreten, etwa wenn man eine Regel zu restriktiv ansetzt und somit den komfortablen Betrieb mit dieser Vorgabe behindert. Daher macht es Sinn, den Netsh-Befehl zu kennen, mit dem sich die Firewall auf die Standardeinstellungen zurücksetzen lässt.
netsh advfirewall reset
Die Protokollierung der Windows Firewall schreibt die Protokolldaten in die Datei pfirewall.log. Diese Datei liegt standardmäßig im Verzeichnis \Windows\system32\LogFiles\Firewall\. Dies erweist sich nicht immer als sinnvoll, den unter Umständen will der Administrator diese Datei auf einem anderen Volume ablegen. Der folgende Netsh-Befehl ändert den Speicherort für die Protokolldatei auf das Verzeichnis L:\temp:
netsh advfirewall set currentprofile logging filename "L:\temp\pfirewall.log"
Der Einsatz des ping-Befehls last sich ebenfalls über die Firewall reglementieren. Dabei kann der Systembetreuer vorgeben, wie und auch ob ein bestimmtes System auf Ping-Anfragen antworten darf. Die beiden folgenden Netsh-Kommandos zeigen, wie sich Ping-Anfragen blockieren lassen und wie sich dann die Firewall für Ping-Anfragen öffnen lässt.
netsh advfirewall firewall add rule name="All ICMP V4" dir=in action=block protocol=icmpv4
netsh advfirewall firewall add rule name="All ICMP V4" dir=in action=allow protocol=icmpv4
Das Aktivieren und Löschen eines Ports gehört zu den gängigsten Aufgaben bei der Windows Firewall. Verschiedene Programme setzen voraus, dass bestimmte Ports für die Kommunikation offen sind. Das hier gezeigte Beispiel stammt aus der SQL Server Umgebung: Es wird eine Regel gezeigt, die von Netsh erzeugt wird und den TCP-Port 1433 öffnet (und dann auch diese Regel wieder löscht und somit den Port schließt).
netsh advfirewall firewall add rule name="Open SQL Server Port 1433" dir=in action=allow protocol=TCP localport=1433
netsh advfirewall firewall delete rule name="Open SQL Server Port 1433" protocol=tcp localport=1433
Eine andere Konfigurationsaufgabe für einen Administrator ist das Öffnen der Windows Firewall für ein bestimmtes Programm. Das folgende Beispiel zeigt, wie der Systembetreuer eine Regel hinzufügen kann, die es erlaubt, dass der Windows Live Messenger über die Firewall kommunizieren darf:
netsh advfirewall firewall add rule name="Allow Messenger" dir=in action=allow program="C:\programfiles\messenger\msnmsgr.exe"
Das Aktivieren des “Remote Management” ist eine Anforderung, die in den heutigen verteilten IT-Architekturen zum Standard geworden ist. Vor allem wenn der Administrator neue Systeme aufsetzt, ist der Zugriff über die Fernwartung wichtig, damit Tools wie die MMC (Microsoft Management Console) Zugriff auf die entfernten Systeme bekommen. Um die Windows Firewall für das Remote Management zu öffnen, eignet sich der folgende Netsh-Befehl:
netsh advfirewall firewall set rule group="remote administration" new enable=yes
Das Aktivieren der Remote Desktop Connection (RDC) gehört ebenfalls zu einer der ersten Aufgaben, wenn ein Administrator einen neuen Server aufsetzt. Damit last sich das Verwalten des entfernten Servers sehr komfortabel abwickeln. Mit dem folgenden Befehl wird die Windows Firewall für die RDC geöffnet:
netsh advfirewall firewall set rule group="remote desktop" new enable=Yes
Wenn der Administrator seine Windows Firewall sauber konfiguriert hat, sollte er diese Einstellungen auch exportieren können. Dadurch kann er zu einem späteren Zeitpunkt auf diese Einstellungen zurück greifen oder sie sogar wieder importieren – meist auf einem anderen System.
Das spart viel Zeit für das erneute Konfigurieren der Firewall und zudem sind die exportierten Einstellungen in der Regel auch ausgiebig getestet. Das reduziert den Aufwand bei eier zweiten Firewall. Die folgenden beiden Netsh-Befehle erlauben den Export und den späteren Import der kompletten Konfiguration einer Windows Firewall:
netsh advfirewall export "C:\temp\WFconfiguration.wfw"
netsh advfirewall import "C:\temp\WFconfiguration.wfw"