Africa Studio - stock.adobe.com

ESXi-Firewalls steuern mit PowerCLI und ESXCLI

Das Steuern Ihrer Firewall über die Kommandozeile spart Ihnen Zeit, insbesondere wenn Sie Änderungen an mehreren Hosts vornehmen müssen. Lernen Sie hier, wie das geht.

Wenn Sie an mehreren ESXi-Hosts Änderungen an der Konfiguration der jeweiligen Firewalls vornehmen müssen, sind Sie mit PowerCLI und ESXCLI deutlich schneller, als wenn Sie jedes System einzeln verwalten würden.

Verstehen Sie mich nicht falsch: Für einmalig durchzuführende Aufgaben kann der vSphere Web Client durchaus hilfreich sein. Aber nicht jedem sagt es zu, sich ellenlang über einen Webbrowser anzumelden. Für solche Anwender ist die Kommandozeile unschlagbar.

Workloads laufen in vSphere auf ESXi-Hosts. Das Absichern der ESXi-Hosts ist damit für jedes Unternehmen oberste Pflicht. Dazu müssen Sie wissen, welche Ports auf diesen Hosts eingehenden und ausgehenden Verkehr über die Firewall des Systems erlauben. Bei VMware sind einige Ports standardmäßig offen, um die normale Kommunikation zwischen Hosts, vCenter und Storage zu ermöglichen.

Die beste Möglichkeit der Verwaltung von ESXi-Hosts (oder vSphere im Allgemeinen) ist für Windows-Anwender und Nutzer von PowerShell eindeutig PowerCLI. Auch VMware selber empfiehlt die Nutzung von PowerCLI für Automatisierungszwecke, wenn erhebliche Veränderungen eingepflegt werden müssen.

Konfiguration der ESXi-Firewall anzeigen

Bei der Nutzung von PowerCLI verbinden Sie sich zunächst mit vCenter, worüber Sie sich zu allen ESXi-Hosts verbinden können, ohne sich jeweils neu authentifizieren zu müssen.

C:\> Connect-VIServer vcenter

Name      Port  User
----      ----  ----
vcenter   443   DOMAIN\admin

Um nun alle aktuellen Ausnahmeregeln der ESXi-Firewall zu sehen, nutzen Sie das Cmdlet Get-VMHostFirewallException in Verbindung mit einem Host-Namen.

Abbildung 1: Das Cmdlet Get-VMHostFirewallException listet alle Ausnahmeregeln der ESXi-Firewall.Abbildung 1:Das Cmdlet Get-VMHostFirewallException listet alle Ausnahmeregeln der ESXi-Firewall

Mit der Ausführung dieses Befehls erhalten Sie eine Menge höchst interessanter Informationen.

Sie sehen die Namen von Diensten, ob Regeln aktiv sind, eingehende und ausgehende Ports, die verwendeten Protokolle und ob der jeweilige Dienst derzeit läuft.

Ein überaus praktischer Parameter für dieses Cmdlet ist übrigens -Enabled: Damit filtern Sie alle inaktiven Firewall-Regeln heraus.

Abbildung 2: Mit dem Parameter -Enabled zeigt das Cmdlet Get-VMHostFirewallException nur die aktiven Firewall-Regeln.Abbildung 2: Mit dem Parameter -Enabled zeigt das Cmdlet Get-VMHostFirewallException nur die aktiven Firewall-Regeln.

Konfiguration der ESXi-Firewall ändern

Wenn Sie Regeln der ESXi-Firewall aktivieren oder deaktivieren möchten, nutzen Sie das Cmdlet Set-VMHostFirewallException.

Das Cmdlet Get-VMHostFirewallException steht Ihnen zur Verfügung, um den SSH-Dienst (Secure Shell) anzugeben und diesen dann auf Set-VMHostFirewallException umzuleiten, um diese Ausnahme zu aktivieren.

Abbildung 3: Firewall-Regeln (de-)aktivieren mit dem Cmdlet Set-VMHostFirewallException.Abbildung 3: Firewall-Regeln (de-)aktivieren mit dem Cmdlet Set-VMHostFirewallException.

Sie können mit PowerCLI auch das Öffnen des SSH-Server-Ports auf allen Ihrer ESXi-Hosts automatisieren, indem Sie zunächst sämtliche gewünschten Ausnahmen für SSH Server in der Variablen $Exceptions definieren und diese dann an Set-VMHostFirewallException umleiten.

Abbildung 4: Umleiten des SSH-Dienstes.Abbildung 4: Umleiten des SSH-Dienstes.

Nutzung der Kommandozeile von ESXCLI

Linux-Anwender und PowerShell weniger zugeneigte Anwender werden sich möglicherweise besser mit einem alternativen Ansatz anfreunden können. Und der steht mit der ESXCLI-Kommandozeile auch durchaus zur Verfügung.

Der Weg mit ESXCLI beginnt mit der Anmeldung beim ESXi-Host via SSH.

Dans-MacBook-Pro:~ dan$ ssh root@VMHost-1
Password:

Verwenden Sie als nächstes genau dieselbe Ausnahme wie bei PowerCLI für den SSH Server. Dafür nutzen Sie den Namespace Ruleset. Wenn Sie dies nicht berücksichtigen, versucht ESXCLI den Befehl an die gesamte ESXi-Firewall abzusetzen statt nur an diese einzelne Ausnahme.

[root@VMHost-1:~] esxcli network firewall ruleset list | grep 'sshServer'
sshServer                  true

Im obigen Beispiel wurde die Ausnahme aktiviert. Es wird somit der Zugriff auf Port 22 (den standardmäßigen SSH-Port) aktiviert. Wenn Sie mit diesem Port verbunden sind, werden Sie diese Firewall-Ausnahme kaum deaktivieren wollen. Nutzen Sie stattdessen eine andere Regel, nämlich updateManager.

[root@VMHost-1:~] esxcli network firewall ruleset set --enabled true --ruleset-id updateManager
[root@VMHost-1:~] esxcli network firewall ruleset list | grep 'updateManager'
updateManager              true

ESXCLI ist in der Lage, mit Hilfe des Cmdlets aus dem Beispiel den Zugriff für spezifische IP-Adressen zur ESXi-Firewall zu konfigurieren – das kann PowerCLI nicht. Wenn Sie den Zugang zum updateManager im Netzwerk auf die IP-Adressen 172.16.0.0/24 begrenzen möchten, so deaktivieren Sie zunächst den Zugriff für sämtliche IP-Adressen, indem Sie über allowed-all auf false setzen.

[root@VMHost-1:~] esxcli network firewall ruleset set --allowed-all false --ruleset-id=updateManager

Nun nutzen Sie allowedip add, um den gewünschten IP-Adressbereich zuzulassen.

[root@VMHost-1:~] esxcli network firewall ruleset allowedip add --ip-address=172.16.0.0/24 --ruleset-id=updateManager

ESXCLI über PowerCLI nutzen

Oben haben Sie gelesen, dass ESXCLI eine Möglichkeit beherrscht, die PowerShell nicht zur Verfügung steht. Praktischerweise ist ESXCLI aber auch über PowerShell bedienbar, was dieses Manko wieder wettzumachen hilft. Über das Cmdlet Get-ESXCLI lässt sich ESXCLI nämlich von PowerShell aus fernsteuern, das Cmdlet legt also die ESXCLI-Funktionalität für PowerShell offen.

Um diese Möglichkeit einsetzen zu lernen, beginnen Sie damit, einen ESXi-Host per Variable bereitzustellen.

C:\> $VMHost = Get-ESXCLI -VMHost VMhost-1

Nun können Sie die Regeln der ESXi-Firewall anschauen, indem Sie auf der Firewall eine List-Methode ausführen.

Abbildung 5: Betrachten Sie die Firewall-Regeln mit einer List-Methode.Abbildung 5: Betrachten Sie die Firewall-Regeln mit einer List-Methode.

Nächste Schritte

cmdlets-Scripts mit PowerCLI für die vSphere-Automatisierung nutzen

Die wichtigsten CMDlets für PowerCLI 6

Gratis-eBook: Einstieg in VMware Auto Deploy

Erfahren Sie mehr über Software-defined Networking