SNMP Aktivieren VMware ESXi: SNMPv3 maximal sicher aktivieren und verfügbare Algorithmen prüfen Ziel Diese Anleitung beschreibt, wie auf einem VMware ESXi-Host SNMPv3 sicher aktiviert wird. Dabei wird die stärkste von ESXi unterstützte SNMPv3-Kombination verwendet: Authentifizierung: SHA1 Verschlüsselung: AES128 Sicherheitslevel: priv / authPriv Wichtiger Realitätscheck: ESXi unterstützt für lokale SNMPv3-Benutzer nicht automatisch moderne Kombinationen wie SHA256 oder AES256. Die tatsächlich verfügbaren Algorithmen müssen immer direkt auf dem jeweiligen ESXi-Host geprüft werden. Nach aktuellem Stand ist bei ESXi für lokale SNMPv3-Benutzer die stärkste übliche Kombination SHA1 mit AES128 und dem Sicherheitslevel priv. Beispielhost: ESXi_1 Die Befehle werden direkt auf dem ESXi-Host als root ausgeführt. Sicherheitsprinzip Die Konfiguration folgt diesen Sicherheitsregeln: SNMPv3 verwenden, nicht SNMPv1 oder SNMPv2c. SNMPv3 mit Authentifizierung und Verschlüsselung verwenden. Als stärkste ESXi-Standardkombination SHA1 und AES128 setzen. Sicherheitslevel priv verwenden. SNMP-Zugriff per ESXi-Firewall nur vom Monitoring-System erlauben. Keine SNMP-Passwörter, Auth-Hashes oder Priv-Hashes in BookStack speichern. SSH nur während der Einrichtung aktivieren und danach wieder deaktivieren. SNMPv1/v2c-Communities entfernen oder leer lassen. Voraussetzungen Zugriff auf den ESXi Host Client oder direkten Konsolenzugriff Root-Zugang oder administrativer ESXi-Benutzer Management-IP des ESXi-Hosts IP-Adresse des Monitoring-Systems SSH-Client auf dem Administrationsrechner Geplanter SNMPv3-Benutzername Starkes Authentifizierungsgeheimnis Starkes Privacy-Geheimnis Beispielwerte in dieser Anleitung: ESXi-Host: 192.168.1.50 Monitoring-System: 192.168.1.20 Administrations-PC: 192.168.1.10 SNMP-Benutzer: snmp_monitor Nicht in BookStack dokumentieren: Auth-Passwort Priv-Passwort Auth-Hash Priv-Hash Verfügbare SNMPv3-Algorithmen auf dem ESXi-Host prüfen Bevor die Konfiguration gesetzt wird, müssen die tatsächlich unterstützten Werte direkt auf dem ESXi-Host geprüft werden. SNMP-Konfigurationsoptionen anzeigen: esxcli system snmp set --help In der Ausgabe sind besonders diese Optionen wichtig: --authentication --privacy --users Typische unterstützte Werte bei ESXi: Authentication: SHA1 none reset Privacy: AES128 none reset User Security Model: none auth priv Bewertung der Werte: Bereich Wert Bewertung Authentication none Nicht sicher, nicht verwenden Authentication MD5 Falls vorhanden: veraltet, nicht verwenden Authentication SHA1 Stärkste übliche ESXi-Option für SNMPv3 Authentication Privacy none Nicht sicher, nicht verwenden Privacy AES128 Stärkste übliche ESXi-Option für SNMPv3 Privacy Security Level none Nicht sicher, nicht verwenden Security Level auth Authentifiziert, aber nicht verschlüsselt Security Level priv Authentifiziert und verschlüsselt, verwenden Für eine sichere ESXi-SNMPv3-Konfiguration wird daher verwendet: SHA1 + AES128 + priv Aktuelle SNMP-Konfiguration prüfen Vor Änderungen zuerst die aktuelle Konfiguration anzeigen: esxcli system snmp get Wichtige Felder: Authentication Privacy Enable Engineid Communities Users Remoteusers Targets V3targets Wenn unter Communities noch Werte eingetragen sind, kann SNMPv1 oder SNMPv2c verwendet werden. Für eine sichere SNMPv3-only-Konfiguration sollten Communities entfernt werden. SSH-Dienst auf ESXi temporär aktivieren SSH wird nur für die Einrichtung benötigt. Danach sollte SSH wieder deaktiviert werden. Variante 1: Über den ESXi Host Client Im Browser den ESXi Host Client öffnen: https:///ui Danach anmelden und den SSH-Dienst starten. Je nach ESXi-Version befindet sich der Dienst unter: Host > Verwalten > Dienste Dort den Dienst auswählen: TSM-SSH Variante 2: Über die ESXi Shell SSH-Dienst aktivieren: vim-cmd hostsvc/enable_ssh SSH-Dienst starten: vim-cmd hostsvc/start_ssh SSH-Firewall-Regel aktivieren: esxcli network firewall ruleset set --ruleset-id sshServer --enabled true SSH-Status prüfen: /etc/init.d/SSH status SSH-Login testen Vom Administrationsrechner aus per SSH verbinden: ssh root@ Beispiel: ssh root@192.168.1.50 Bei der ersten Verbindung muss der Host-Key geprüft und bestätigt werden. SSH-Firewall auf Administrations-IP einschränken Wenn SSH während der Einrichtung erreichbar sein muss, sollte der Zugriff nicht von überall erlaubt sein. Der Zugriff sollte nur von der Administrations-IP oder vom Administrationsnetz erlaubt werden. Aktuelle erlaubte IPs für SSH anzeigen: esxcli network firewall ruleset allowedip list --ruleset-id sshServer Zugriff von allen IPs deaktivieren: esxcli network firewall ruleset set --ruleset-id sshServer --allowed-all false Administrations-IP erlauben: esxcli network firewall ruleset allowedip add --ruleset-id sshServer --ip-address Beispiel: esxcli network firewall ruleset allowedip add --ruleset-id sshServer --ip-address 192.168.1.10 Ergebnis prüfen: esxcli network firewall ruleset allowedip list --ruleset-id sshServer SNMPv1/v2c-Communities entfernen Für eine SNMPv3-only-Konfiguration sollten keine Community Strings gesetzt sein. esxcli system snmp set --communities reset Danach prüfen: esxcli system snmp get Das Feld Communities sollte leer sein. SNMPv3-Authentifizierung und Verschlüsselung setzen Jetzt werden die stärksten von ESXi unterstützten Standardwerte gesetzt: esxcli system snmp set --authentication SHA1 esxcli system snmp set --privacy AES128 Alternativ als Kurzform: esxcli system snmp set -a SHA1 -x AES128 Konfiguration prüfen: esxcli system snmp get Erwartete Werte: Authentication: SHA1 Privacy: AES128 SNMP Engine ID prüfen Die SNMPv3-Hashes werden an die Engine ID des ESXi-SNMP-Agents gebunden. Deshalb sollte die Engine ID vor der Hash-Erzeugung geprüft werden. esxcli system snmp get In der Ausgabe das Feld prüfen: Engineid Wichtig: Wenn die Engine ID später geändert wird, passen die bereits erzeugten SNMPv3-Hashes nicht mehr. Dann müssen Auth-Hash und Priv-Hash neu erzeugt werden. Starke geheime Werte vorbereiten Für SNMPv3 werden zwei verschiedene geheime Werte empfohlen: Auth-Secret: Wird für die Authentifizierung verwendet. Priv-Secret: Wird für die Verschlüsselung verwendet. Empfehlung: Mindestens 20 Zeichen Großbuchstaben Kleinbuchstaben Zahlen Sonderzeichen Auth-Secret und Priv-Secret niemals identisch wählen Nicht in BookStack speichern Nicht in Tickets, Chatverläufen oder Screenshots ablegen SNMPv3-Hashes erzeugen ESXi speichert beim Benutzer nicht die Klartext-Geheimnisse, sondern lokalisierte Hashes. Diese werden mit dem folgenden Befehl erzeugt. Sicherheitswarnung: Die Klartext-Geheimnisse sollten nicht dauerhaft dokumentiert werden. Nach der Hash-Erzeugung dürfen weder Geheimnisse noch Hashes in BookStack eingetragen werden. Hash-Erzeugung starten: esxcli system snmp hash --auth-hash '' --priv-hash '' --raw-secret Beispiel mit Platzhaltern: esxcli system snmp hash --auth-hash 'AUTH_SECRET_NICHT_DOKUMENTIEREN' --priv-hash 'PRIV_SECRET_NICHT_DOKUMENTIEREN' --raw-secret Beispielausgabe: Authhash: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF Privhash: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Wichtig: Die hier gezeigten Hashes sind Platzhalter. Echte Hashes dürfen nicht in dieser Anleitung gespeichert werden. SNMPv3-Benutzer mit höchstem Sicherheitslevel setzen Der SNMPv3-Benutzer wird mit Auth-Hash, Priv-Hash und Sicherheitslevel priv gesetzt. Format: BENUTZERNAME/AUTH-HASH/PRIV-HASH/priv Befehl: esxcli system snmp set --users snmp_monitor///priv Beispiel mit Platzhaltern: esxcli system snmp set --users snmp_monitor/FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/priv Der Sicherheitslevel priv bedeutet: Authentifizierung ist aktiv. Verschlüsselung ist aktiv. Das entspricht SNMPv3 authPriv. ESXi-Firewall für SNMP einschränken SNMP sollte nur vom Monitoring-System erreichbar sein. Nicht vom gesamten Netz. Nicht vom Internet. Nicht von irgendeinem vergessenen Testsystem, das seit 2017 niemand mehr anfassen wollte. SNMP-Firewall-Regel prüfen: esxcli network firewall ruleset list --ruleset-id snmp Aktuelle erlaubte IPs anzeigen: esxcli network firewall ruleset allowedip list --ruleset-id snmp Zugriff von allen IPs deaktivieren: esxcli network firewall ruleset set --ruleset-id snmp --allowed-all false Nur das Monitoring-System erlauben: esxcli network firewall ruleset allowedip add --ruleset-id snmp --ip-address Beispiel: esxcli network firewall ruleset allowedip add --ruleset-id snmp --ip-address 192.168.1.20 SNMP-Firewall-Regel aktivieren: esxcli network firewall ruleset set --ruleset-id snmp --enabled true Ergebnis prüfen: esxcli network firewall ruleset allowedip list --ruleset-id snmp Erwartet ist, dass nur die Monitoring-IP oder das freigegebene Monitoring-Netz angezeigt wird. SNMP-Dienst aktivieren Nachdem Authentifizierung, Verschlüsselung, Benutzer und Firewall gesetzt sind, wird SNMP aktiviert. esxcli system snmp set --enable true Status prüfen: esxcli system snmp get Erwartete Werte: Enable: true Authentication: SHA1 Privacy: AES128 Users: snmp_monitor/.../.../priv Communities: Das Feld Communities sollte leer sein. SNMPv3 testen Test auf dem ESXi-Host Der ESXi-interne Test kann verwendet werden, um die SNMP-Konfiguration zu prüfen: esxcli system snmp test -u snmp_monitor -A '' -X '' --raw-secret Hinweis: Der Test ist besonders für Trap- oder Inform-Konfigurationen relevant. Bei reinem SNMP-Polling sollte zusätzlich vom Monitoring-System aus getestet werden. Test vom Monitoring-System Vom Monitoring-System aus kann SNMPv3 beispielsweise mit einem SNMP-Client getestet werden. snmpwalk -v3 -l authPriv -u snmp_monitor -a SHA -A '' -x AES -X '' 1.3.6.1.2.1.1 Beispiel: snmpwalk -v3 -l authPriv -u snmp_monitor -a SHA -A '' -x AES -X '' 192.168.1.50 1.3.6.1.2.1.1 Wenn der Test erfolgreich ist, sollten SNMP-Systeminformationen des ESXi-Hosts zurückgegeben werden. Komplette Konfiguration prüfen SNMP-Konfiguration anzeigen: esxcli system snmp get SNMP-Firewall-Regel prüfen: esxcli network firewall ruleset list --ruleset-id snmp Erlaubte SNMP-Quell-IP prüfen: esxcli network firewall ruleset allowedip list --ruleset-id snmp SSH-Status prüfen: /etc/init.d/SSH status SSH nach der Einrichtung wieder deaktivieren Wenn SSH nicht dauerhaft benötigt wird, sollte der Dienst nach der SNMP-Konfiguration wieder deaktiviert werden. SSH stoppen: vim-cmd hostsvc/stop_ssh SSH deaktivieren: vim-cmd hostsvc/disable_ssh SSH-Firewall-Regel deaktivieren: esxcli network firewall ruleset set --ruleset-id sshServer --enabled false Status prüfen: /etc/init.d/SSH status Beispiel: Komplette sichere SNMPv3-Konfiguration Die folgenden Befehle zeigen den Ablauf mit Platzhaltern. Echte Geheimnisse und Hashes nicht in BookStack speichern. esxcli system snmp set --help esxcli system snmp get esxcli system snmp set --communities reset esxcli system snmp set --authentication SHA1 esxcli system snmp set --privacy AES128 esxcli system snmp hash --auth-hash '' --priv-hash '' --raw-secret esxcli system snmp set --users snmp_monitor///priv esxcli network firewall ruleset set --ruleset-id snmp --allowed-all false esxcli network firewall ruleset allowedip add --ruleset-id snmp --ip-address esxcli network firewall ruleset set --ruleset-id snmp --enabled true esxcli system snmp set --enable true esxcli system snmp get esxcli network firewall ruleset list --ruleset-id snmp esxcli network firewall ruleset allowedip list --ruleset-id snmp Härtungs-Checkliste Prüfpunkt Sollwert SNMP-Version Nur SNMPv3 verwenden Communities Leer oder zurückgesetzt Authentication SHA1 Privacy AES128 SNMPv3 Security Level priv / authPriv SNMP-Firewall Nur Monitoring-IP erlaubt SSH Nach Einrichtung deaktiviert Geheimnisse Nicht in BookStack gespeichert Hashes Nicht öffentlich dokumentiert Management-Netz Separates Management-VLAN empfohlen Fehlerbehebung Algorithmus wird nicht akzeptiert Wenn ein Algorithmus nicht akzeptiert wird, zuerst die unterstützten Werte anzeigen: esxcli system snmp set --help Nur Werte verwenden, die dort explizit aufgeführt sind. Monitoring-System erreicht ESXi nicht Firewall-Regel und erlaubte IPs prüfen: esxcli network firewall ruleset list --ruleset-id snmp esxcli network firewall ruleset allowedip list --ruleset-id snmp Die IP des Monitoring-Systems muss in der erlaubten Liste stehen. SNMPv3-Login schlägt fehl Mögliche Ursachen: Auth-Secret oder Priv-Secret falsch eingegeben Auth-Hash oder Priv-Hash vertauscht Engine ID wurde nach der Hash-Erzeugung geändert Monitoring-System verwendet nicht authPriv Monitoring-System verwendet nicht SHA und AES SNMP-Firewall erlaubt die Monitoring-IP nicht Sicherheitshinweise SNMPv3 mit priv verwenden. SNMPv1 und SNMPv2c nicht verwenden. Keine Community Strings konfigurieren. Keine Passwörter oder Hashes in BookStack speichern. SNMP-Zugriff per Firewall auf Monitoring-Systeme begrenzen. Management-IP nicht aus normalen Client-Netzen erreichbar machen. SSH nur temporär aktivieren. Nach der Einrichtung SSH wieder deaktivieren. SNMP-Zugangsdaten regelmäßig nach internem Sicherheitskonzept rotieren. Bei Änderung der Engine ID SNMPv3-Hashes neu erzeugen.