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