Vor wenigen Tagen wurde eine gravierende Sicherheitslücke in der Java Bibliothek Log4j bekannt, welche Millionen von Geräten und Softwareanwendungen akut gefährdet.
Das BSI stuft diese Lücke auf der CVSS-Skala mit dem höchstmöglichen Wert 10 (CVE-2021-44228) ein.
Bis es zu flächendeckenden Patches durch die Hersteller kommt, existieren bereits erste Workarounds für verschiedenste Produkte.
Auch das vCenter von VMware ist von dieser Sicherheitslücke betroffen – ESXI nicht!
In diesem Beitrage möchte ich den VMware vCenter Workaround erläutern.
Hinweis: Alles auf eigene Gefahr!
Lösung
Gültig für:
- vCenter 7.0 GA, 7.0.0a, 7.0.0b, 7.0.0c, 7.0.0d
- vCenter 7.0 Update 1, U1a, U1c, U1d
- vCenter 7.0 Update 3, 3a
- vCenter 7.0 Update 2, 2a, 2b, 2c, 2d
Lösungen für vCenter 6.7, 6.5 und 6.0 sind im verlinkten VMware KB-Artikel beschrieben. Das Vorgehen ist fast identisch.
Eine SSH-Verbindung mit dem vCenter (z. B. via Putty) aufbauen.
Eventuelle Zertifikatswarnungen bestätigen.
In der SSH-Sitzung als Root anmelden und mit dem Befehl Shell den Shell-Zugriff aktivieren.
vMON-Dienst
Die bestehende Java-wrapper-vmon Datei sichern.
cp -rfp /usr/lib/vmware-vmon/java-wrapper-vmon /usr/lib/vmware-vmon/java-wrapper-vmon.bak
Anschließend diese im VI-Editor öffnen und mit a in den Bearbeitungsmodus wechseln.
vi /usr/lib/vmware-vmon/java-wrapper-vmon
Dort die letzte Zeile löschen…
exec $java_start_bin $jvm_dynargs $security_dynargs $original_args
..und folgende zwei Zeilen einfügen:
log4j_arg="-Dlog4j2.formatMsgNoLookups=true" exec $java_start_bin $jvm_dynargs $log4j_arg $security_dynargs $original_args
Hinweis: Die zwei oberen Zeilen beziehen sich auf :
- vCenter 7.0 Update 3, 3a
- vCenter 7.0 Update 2, 2a, 2b, 2c, 2d
Für die unteren vCenter-Versionen gilt:
- vCenter 7.0 GA, 7.0.0a, 7.0.0b, 7.0.0c, 7.0.0d
- vCenter 7.0 Update 1, U1a, U1c, U1d
//Löschen exec $java_start_bin $jvm_dynargs "$@" //Einfügen log4j_arg="-Dlog4j2.formatMsgNoLookups=true" exec $java_start_bin $jvm_dynargs $log4j_arg "$@"
Mit ESC den Bearbeitungsmodus verlassen und mit :wq das Dokument speichern und den Editor verlassen.
Die Berechtigungen der Datei anpassen.
chown root:cis /usr/lib/vmware-vmon/java-wrapper-vmon chmod 754 /usr/lib/vmware-vmon/java-wrapper-vmon
Alle vCenter Dienste neu starten.
service-control --stop --all service-control --start --all
Update Manager Dienst
Die bestehende start.ini sichern.
cp -rfp /usr/lib/vmware-updatemgr/bin/jetty/start.ini /usr/lib/vmware-updatemgr/bin/jetty/start.ini.bak
Wieder die Datei im VI-Editor öffnen und mit a in den Bearbeitungsmodus wechseln.
vi /usr/lib/vmware-updatemgr/bin/jetty/start.ini
Dort anschließend folgende Zeile am Ende des Dokuments einfügen, den Bearbeitungsmodus beenden und speichern.
-Dlog4j2.formatMsgNoLookups=true
Neustart des Update Manager Dienstes.
service-control --restart vmware-updatemgr
Analytics Dienst
Sichern der bestehenden log4j-core-2.8.2.jar Datei.
log4j-core-2.8.2.jarcp -rfp /usr/lib/vmware/common-jars/log4j-core-2.8.2.jar /usr/lib/vmware/common-jars/log4j-core-2.8.2.jar.bak
Die Klasse deaktivieren.
zip -q -d /usr/lib/vmware/common-jars/log4j-core-2.8.2.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
Den Analytics Dienst neu starten.
service-control --restart vmware-analytics
DBCC Dienstprogramm
Die bestehende log4j-core-2.8.2.jar Datei sichern.
cp /usr/lib/vmware-dbcc/lib/log4j-core-2.8.2.jar /usr/lib/vmware-dbcc/lib/log4j-core-2.8.2.jar.bak
Anschließend ebenfalls deaktivieren.
zip -q -d /usr/lib/vmware-dbcc/lib/log4j-core-2.8.2.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
Hinweis: Falls die Meldung „zip error: Nothing to do!“ erscheint, war dieser Schritt nicht notwendig, da DBCC nicht verwendet wird.
Schritte verifizieren
vMON Dienst:
Der Eintrag -Dlog4j2.formatMsgNoLookups=true muss in der Ausgabe des folgenden Befehls erscheinen.
ps auxww | grep formatMsgNoLookups
Update Manager Dienst:
Nach Eingabe des unteren Befehls, muss unter Properities der Eintrag log4j2.formatMsgNoLookups = true vorhanden sein.
cd /usr/lib/vmware-updatemgr/bin/jetty/ java -jar start.jar --list-config
Analytics Dienst und DBCC Dienstprogramm:
Die Ausgabe beider Befehle muss 0 ergeben.
grep -i jndilookup /usr/lib/vmware/common-jars/log4j-core-2.8.2.jar | wc -l grep -i jndilookup /usr/lib/vmware-dbcc/lib/log4j-core-2.8.2.jar | wc -l
Zum Abschluss der Arbeiten kann die Shell-Sitzung mit exit beendet und die SSH-Verbindung geschlossen werden.
Damit ist das vCenter, bis zum Erscheinen von Patches, gegen die Log4j Sicherheitslücke gerüstet.