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
SHA1undAES128setzen. - Sicherheitslevel
privverwenden. - 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://<ESXI-IP>/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@<ESXI-IP>
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 <ADMIN-IP>
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 '<AUTH-SECRET>' --priv-hash '<PRIV-SECRET>' --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/<AUTH-HASH>/<PRIV-HASH>/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 <MONITORING-IP>
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 '<AUTH-SECRET>' -X '<PRIV-SECRET>' --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 '<AUTH-SECRET>' -x AES -X '<PRIV-SECRET>' <ESXI-IP> 1.3.6.1.2.1.1
Beispiel:
snmpwalk -v3 -l authPriv -u snmp_monitor -a SHA -A '<AUTH-SECRET>' -x AES -X '<PRIV-SECRET>' 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 '<AUTH-SECRET>' --priv-hash '<PRIV-SECRET>' --raw-secret
esxcli system snmp set --users snmp_monitor/<AUTH-HASH>/<PRIV-HASH>/priv
esxcli network firewall ruleset set --ruleset-id snmp --allowed-all false
esxcli network firewall ruleset allowedip add --ruleset-id snmp --ip-address <MONITORING-IP>
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
SHAundAES - SNMP-Firewall erlaubt die Monitoring-IP nicht
Sicherheitshinweise
- SNMPv3 mit
privverwenden. - 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.
No Comments