Zum Inhalt springen

SNMP — Auth- und Priv-Algorithmen

Wenn du in ReadyStackGo einen SNMPv3-User anlegst, musst du zwei Algorithmen wählen:

  • Auth-Algorithmus — sichert die Echtheit und Integrität des Pakets (HMAC).
  • Priv-Algorithmus — verschlüsselt den Inhalt des Pakets (Cipher).

Diese Seite hilft dir bei der Wahl. Kurzfassung am Anfang, Details darunter.


WahlEmpfehlungBegründung
AuthSHA-256Standard, breit unterstützt, sicher. SHA-384/512 nur, wenn Compliance es vorschreibt.
PrivAES-128Standard, schnell, sicher. AES-192/256 nur, wenn Compliance es vorschreibt.
NiemalsMD5, SHA-1, DESGebrochen oder so geschwächt, dass sie nicht mehr als “sicher” gelten.
Beide Passphrasesmindestens 16 Zeichen, zufälligRFC 3414 schreibt min. 8 vor — das war 1998. Heute sind 16+ Pflicht.

Die “Auth”-Funktion in SNMPv3 ist ein HMAC (Hash-based Message Authentication Code). Aus deiner Passphrase wird ein lokalisierter Schlüssel abgeleitet (RFC 3414 Section 2.6) — verrechnet mit der Engine-ID des Agents — und damit wird jedes Paket signiert. Der Empfänger berechnet die Signatur erneut und prüft, ob sie übereinstimmt.

  • Veröffentlicht 1991 von Ron Rivest.
  • Seit 2004 (Wang et al.) sind praktische Kollisionsangriffe bekannt.
  • Für HMAC-Konstruktionen war es lange “noch ok”, weil Kollisionen anders gewichtet werden als Pre-Image-Resistenz. Aber:
  • Heute hat MD5 in keinem modernen Sicherheitsstandard mehr Platz. NIST hat es 2008 deprecated. BSI (Deutschland) verbietet es in TR-02102 für neue Verfahren.

Wann es trotzdem auftaucht: ältere SNMP-Geräte (z. B. Switches von vor 2010) konnten oft nur MD5. ReadyStackGo unterstützt es nur aus Kompatibilität — schalte um, sobald deine Manager-Tools moderne Algorithmen unterstützen.

  • 1995 vom NIST veröffentlicht.
  • Praktische Kollisionen seit 2017 (Shattered-Angriff, Google + CWI).
  • HMAC-SHA1 ist noch nicht in dem Sinne “gebrochen”, aber gilt als deprecated.
  • ReadyStackGo unterstützt es nur aus Kompatibilität.
  • Aus der SHA-2-Familie. Seit 2001.
  • Bisher keine praktischen Angriffe bekannt.
  • NIST-zugelassen, FIPS-140-konform, im BSI TR-02102 als sicher gelistet.
  • In Net-SNMP, Wireshark, allen Standard-Tools breit unterstützt.

Standardempfehlung für 95 % aller Fälle.

  • Größere Variante derselben SHA-2-Familie.
  • Mehr Rechenaufwand, kein praxisrelevanter Sicherheitsgewinn gegenüber SHA-256.
  • Nur sinnvoll, wenn dein Compliance-Regelwerk es explizit fordert (z. B. NIST-Suite-B).

Die “Priv”-Funktion in SNMPv3 verschlüsselt den Payload (die VarBinds) — der Header bleibt im Klartext, damit der Agent die Engine-ID und den User noch entschlüsseln kann, bevor er die richtigen Schlüssel ausgewählt hat.

  • Data Encryption Standard, 1976. 56-Bit-Schlüssel.
  • Erste praktische Brute-Force-Angriffe ab 1998 (EFF DES Cracker, 22 Stunden).
  • Heute knackbar in Minuten mit moderner GPU-Hardware.
  • War bis SNMPv3 USM (RFC 3414) der einzige vorgesehene Priv-Algorithmus — historischer Ballast.
  • ReadyStackGo unterstützt es nur aus Kompatibilität.
  • Advanced Encryption Standard, 2001 (RFC 3826 für SNMP).
  • 128-Bit-Schlüssel, 128-Bit-Blockgröße.
  • Brute-Force ist astronomisch unrealistisch (2¹²⁸ Operationen).
  • Hardware-Beschleunigung in jeder modernen CPU (AES-NI).
  • Breit unterstützt von Net-SNMP, Wireshark, allen Standard-Tools.

Standardempfehlung für 95 % aller Fälle.

AES-192 / AES-256 — ✅ ok, aber selten praktikabel

Abschnitt betitelt „AES-192 / AES-256 — ✅ ok, aber selten praktikabel“
  • Größere Schlüssellängen.
  • Kein praxisrelevanter Sicherheitsgewinn gegenüber AES-128 (auch in 30 Jahren wahrscheinlich nicht).
  • Tooling-Problem: Einige SNMP-Tools (vor allem ältere Net-SNMP-Versionen) unterstützen AES-192/256 nicht, weil sie nie standardisiert wurden — Cisco hatte eine eigene Variante, andere Implementierungen folgten verschiedenen RFC-Drafts.
  • Nur nehmen, wenn Compliance es fordert und dein Manager-Tool es unterstützt.

RFC 3414 schreibt eine Mindestlänge von 8 Zeichen vor. Das war 1998 — heute viel zu wenig. Die Schlüsselableitung iteriert die Passphrase mehrfach durch den Hash, aber das schützt nicht vor schwachen Geheimnissen.

Empfehlungen:

AnforderungWert
Mindestlänge8 Zeichen (technisch) → 16 Zeichen (praktisch)
Empfohlene Länge20+ Zeichen, gemischt aus Buchstaben/Zahlen/Sonderzeichen
Auth- ≠ Priv-PassphraseImmer unterschiedliche Werte verwenden
RotationBei Personalwechsel, sonst nicht zwanghaft — anders als Passwörter wirken Algorithmus-Wechsel viel stärker
AufbewahrungIm Password-Manager. Nicht in Slack, nicht im Wiki.
Terminal-Fenster
# Linux/Mac — 20 zufällige Zeichen aus dem druckbaren ASCII-Bereich
tr -dc 'A-Za-z0-9!@#$%^&*' </dev/urandom | head -c 20 ; echo
# Oder mit pwgen
pwgen -s -y 20 1

SchrittWas passiert
Du tippst die Passphrase in die UIWird per HTTPS an die API geschickt
API empfängt sieWird sofort verschlüsselt mit einem master-Key (Container-Secret) gespeichert
Agent braucht sie für den USM-SchlüsselWird beim Start (oder Reload) entschlüsselt und im RAM gehalten
Agent verarbeitet ein v3-PaketLokalisierten Schlüssel berechnen → HMAC bzw. AES
Du löschst den UserAuch der verschlüsselte DB-Eintrag wird gelöscht

Was wir bewusst nicht tun: Die Klartext-Passphrase irgendwo loggen, in der UI zurückspielen oder per API zurückgeben. Wenn sie verloren geht, muss der User neu angelegt werden.


In Reihenfolge der Wahrscheinlichkeit:

  1. Falscher Auth-Algorithmus im Client. UI sagt Sha256, du startest mit -a SHA1 → fail.
  2. Falscher Priv-Algorithmus im Client. Selbiges Spiel.
  3. Tippfehler in der Passphrase. Häufig — gerade bei manuell eingetippten 20-Zeichen-Strings.
  4. Falsche Engine-ID-Wahrnehmung. Falls du die Engine-ID irgendwo cached hast und der Agent eine neue erzeugt hat (DB-Reset).
  5. Zeit-Drift. SNMPv3 prüft EngineBoots und EngineTime. Wenn der Client zu lange ein Paket “halt” und es spät schickt, wird es als Replay verworfen.
Terminal-Fenster
# SHA-256 + AES-128 (Standard)
snmpwalk -v 3 -u <user> -l authPriv -a SHA-256 -A '<auth-pass>' \
-x AES -X '<priv-pass>' <host> <oid>
# Nur Auth, keine Verschlüsselung (selten sinnvoll)
snmpwalk -v 3 -u <user> -l authNoPriv -a SHA-256 -A '<auth-pass>' <host> <oid>
# Mit MD5 für legacy-Tools (nicht empfohlen!)
snmpwalk -v 3 -u <user> -l authPriv -a MD5 -A '<auth-pass>' \
-x DES -X '<priv-pass>' <host> <oid>

Bei Net-SNMP heißt SHA-256 in den Flags SHA-256, in der MIB-Datei usmHMAC192SHA256AuthProtocol — das ist dieselbe Sache, nur andere Schreibweise.