netsh und PowerShell

Windows-Praxis: Firewall per Kommandozeile steuern

Eine Abfrage: Wie steht’s um meine Firewall?

Wenn es um die Arbeit mit der Windows-Firewall geht, so ist die Abfrage ihrer aktuellen Einstellungen und damit der aktiven Firewall-Regeln häufig ein Ausgangspunkt für die Arbeit des Administrators.

Wie steht’s um meine Firewall?: Zwei unterschiedliche Arten, von der Kommandozeile (mit netsh) beziehungsweise durch ein PowerShell-Cmdlet an diese Informationen zu kommen, werden hier gezeigt.
Wie steht’s um meine Firewall?: Zwei unterschiedliche Arten, von der Kommandozeile (mit netsh) beziehungsweise durch ein PowerShell-Cmdlet an diese Informationen zu kommen, werden hier gezeigt.

Bisher wurde dann der netsh-Befehl:

netsh advfirewall firewall show rule name=all

verwendet, um die aktuell aktiven Eigenschaften der Firewall direkt von der Kommandozeile aus anzuzeigen. Natürlich steht unter den vielen neuen Cmdlets der PowerShell 3.0 auch eines bereit, das diese Aufgabe entsprechend ausführt:

Show-NetFirewallRule -Policystore ActiveStore

Dieser Befehl zeigt dann alle Firewall-Regeln an, die auf dem Rechner aktiv sind, wobei unter "ActiveStore" sämtliche Policy Stores zusammengefasst werden, die sich auf diesen Computer beziehen. Die Ausgabe dieses Kommandos ist relativ umfangreich, da alle Details angezeigt werden.

Firewall und Firewall-Regeln aktivieren und deaktivieren

Eine weitere häufige Aufgabe ist das Aktivieren und Deaktivieren der Windows-Firewall. Es gehört zwar ohne Zweifel zur üblichen Vorgehensweise, die Firewall eingeschaltet zu lassen.

Die Windows-Firewall schnell aus- und ebenso schnell auch wieder einschalten: Das gelingt mit der PowerShell sehr elegant via Cmdlet-Aufruf.
Die Windows-Firewall schnell aus- und ebenso schnell auch wieder einschalten: Das gelingt mit der PowerShell sehr elegant via Cmdlet-Aufruf.

Aber alle System-Profis kennen folgende Situation: Es sollen Performance Tests von neuen Applikationen durchgeführt werden ohne weitere Beeinflussung - dann wird die Firewall, ebenso wie andere Schutzvorrichtungen auch, schnell mal für einen überschaubaren Zeitraum l abgeschaltet. Praktisch, wenn dann auch auf der Kommandozeile ein entsprechender Befehl zur Verfügung steht. Bei der netsh so er folgendermaßen aus:

netsh advfirewall set allprofiles state on

netsh advfirewall set allprofiles state off

Kommt die neue PowerShell zum Einsatz, so ist hier das Cmdlet Set-NetFirewallProfile die beste Wahl, um die Firewall schnell ein- beziehungsweise auszuschalten:

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

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

Programme per Firewall aussperren

Einer der Haupteinsatzzwecke einer Firewall besteht darin, bestimmte Ports, Programme oder Protokolle zu blockieren oder freizugeben, um damit auch die Sicherheit des betreffenden System oder Netzwerks zu erhöhen.

Der Blick von der Client-Seite (während der Windows Server 2012 im Fenster des Remotedesktop zu sehen ist) zeigt es: Ein einfacher Aufruf, und das ICMP-Protokoll und damit der Ping-Befehl sind ausgesperrt.
Der Blick von der Client-Seite (während der Windows Server 2012 im Fenster des Remotedesktop zu sehen ist) zeigt es: Ein einfacher Aufruf, und das ICMP-Protokoll und damit der Ping-Befehl sind ausgesperrt.

Als ein - wenn auch sehr einfaches - Beispiel haben wir hier den bekannten Ping-Befehl gewählt, um zu zeigen, wie das verwendete ICMP-Protokoll "ausgesperrt" werden kann. Zunächst zeigen wir dabei wieder die beiden netsh-Kommandos: Zuerst werden Ping-Anfragen blockiert, und mit einem zweiten Kommando wird dann die Firewall wieder für Ping-Anfragen geöffnet.

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

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

Natürlich stehen nun auch für die PowerShell entsprechende Cmdlets bereit, die die gleichen Einstellungen an der Firewall vornehmen. Hier das gleiche Beispiel für die PowerShell 3.0:

NewNetFirewallRule -DisplayName "Block Inbound Ping" -Direction Inbound -Protocol icmp4 -Action Block

NewNetFirewallRule -DisplayName "Allow Inbound Ping" -Direction Inbound -Protocol icmp4 -Action Allow