Firewall mit der Powershell konfigurieren

Mehr Möglichkeiten durch die Windows PowerShell

Überblick

Da die Windows Powershell zunehmend an Bedeutung gewinnt, möchte ich euch kurz erläutern, wie man mit dieser grundlegend die Firewall im Windows Betriebssystem konfiguriert. Folgende Konfigurationen werden in diesem Artikel etwas näher erläutern!

  • Firewallregeln und Status der Firewall abfragen
  • Netzwerkprofil der Firewall konfigurieren
  • Erstellen einer Firewallregel

Firewallregeln und Status der Firewall abfragen

Als erstes schauen wir uns an, welchen Status die Firewall besitzt, bzw. welche Regeln hier konfiguriert sind. Zunächst müssen wir wissen, welches Netzwerkprofil bzw. welcher Netzwerkstandort eingestellt ist. Das Cmdlet Get-NetConnectionProfile liefert uns hierfür das Ergebnis. Neben dem Standort (Public, Privat oder Domain) erhält man auch noch Auskunft über die Bezeichnung der Schnittstelle (InterfaceAlias), dem InterfaceIndex, sowie der IPv4 bzw. IPv6 Konnektivität. Was man genau unter einem Netzwerkprofil bzw. Netzwerkstandort versteht, habe ich in diesem Artikel näher erläutern.

Zum Artikel: Netzwerkstandorte in Windows

Ausgabe des eingestellten Profils:

Get-NetConnectionProfile.

Möchte man sich zu dem eingestellten Profil detallierte Informationen ausgeben lassen wie z.B. Logfile Name, so kann man das Cmdlet Get-NetFirewallProfile im Zusammenhang mit dem gewünschten Profile verwenden.

Get-NetFirewallProfile -name public

Das Logfile befindet sich dabei im folgendem Verzeichnis.

c:\WindowsSystem32\Logfiles\Firewallpfirewall.log

Jetzt wäre es interessant, welche genauen Regeln wurden bei einem bestimmten Profil gesetzt? Das geht mit dem Cmdlet Get-NetFirewallRule.

Anzeigen aller gesetzten Regeln:

Get-NetFirewallRule -All

Diese Ausgabe ist jedoch sehr umfangreich, weshalb es meiner Meinung nach sinnvoller ist, sich nur die aktiven Regeln ausgeben zu lassen.

Get-NetFirewallRule -Enabled True

Auch diese Ausgabe ist doch noch recht umfangreich. Es werden hier nämlich alle Regeln für alle Netzwerkprofile angezeigt. Noch besser wäre es, wenn man sich z.B. nur die aktiven Regeln ansieht welche den Zugriff erlauben.

Get-NetFirewallRule -Enabled True -Action Allow

Hier gibt es natürlich viele verschiedene Möglichkeiten um an die gewünschten Einstellungen zu kommen. Denkbar wäre unter anderem noch, dass man alle Regeln eines bestimmten Profils haben möchte.

Get-NetFirewallRule -name public | Get-NetFirewallRule

In Kombination mit der Pipeline kann man viele Informationen auslesen. Wie man die Pipe richtig anwendet findet ihr hier beschrieben.

Zum Artikel: Powershell Pipeline richtig verwenden.

Netzwerkprofil der Firewall konfigurieren

So nun wissen, wir, welches Profil eingestellt ist und wie man sich auch detaillierte Informationen zu diesem Profil holt. Natürlich kann man das Profil auch ändern. Wiederum nimmt man das Cmdlet mit ..NetConnectionProfil. Dieses mal jedoch nimmt man anstatt Get-.. Set-… Das Ändern des Profils erfolgt dabei mit den folgenden drei Anweisung. Man benötigt drei, da man zunächst angeben muss für welchen Netzwerkadapter man das Profil ändern möchte – anschließend setzt man das gewünschte Profil – und zu guter letzt schreibt man das Profil mit Set-NetConnectionProfile in das System.

$Profile = Get-NetConnectionProfile -InterfaceAlias Ethernet 
$Profile.NetworkCategory="Private" 
Set-NetConnectionProfile -InputObject $Profile

Erstellen einer Firewallregel

Selbstverständlich ist es auch möglich mit der Windows Powershell Firewallregeln zu erstellen. Das ganze läuft über das Cmdelt NewNetFirewallRule. Als Beispiel soll hier das Pingen über IPv4 geblockt werden. Generell muss man natürlich wissen, welches Protokoll für das pingen im Netzwerk zuständig ist. Pingen läuft in der Regel über das ICMP Protokoll.

New-NetFirewallRule -DisplayName "pingen-blockieren" -Direction Inbound -Protocol icmpv4 -Action Block

Am bestem man arbeitet bei der Erstellung von Regeln mit der PowerShell ISE. Die ISE bietet nämlich viele Vorteile und erleichtern das arbeiten mit der Powershell doch sehr. Weitere Informationen zur Powershell ISE findet ihr in diesem Artikel.

Zum Artikel: Wie verwendet man die Powershell ISE

Die einzelnen Parameter der obigen Angabe haben dabei folgende Bedeutung:

DisplayName:Namen für die Regel festlegen
Direction:Inbound steht dabei für eine eingehende Regel. Für eines Ausgehende würde man dementsprechend outbound verwenden.
Protocol:Gibt das Protocol an. In unserem Fall ist das das icmpv4 Protokoll
Action:Der Zugriff soll blockiert werden.

Dieser Artikel sollte einen kleinen Einblick bzw. Überblick über die Möglichkeiten zeigen, welche die Windows Powershell zur Konfiguration der Firewall zur Verfügung stellt. Natürlich gibt es durch aus noch viele weitere mögliche Cmdlets mit denen man die Firewall konfigurieren kann. So z.B. das Cmdlet Set-NetFirewallSettings mit welchem man globale Einstellungen vornehmen kann.

Fazit

Selbstverständlich könnte man hier wieder nachfragen, wieso man nicht die grafische Oberfläche verwendet. Wie bereits mehrfach in meinem Blog erwähnt, ist für administrativen Zwecke die Konsole – also die cmd, powershell oder unter Linux die Bash – doch sehr vom Vorteil. Z.B. können Prozesse automatisiert werden oder manche System bietet gar keine andere Möglichkeit, weil sie keine grafische Oberfläche haben.