Zum Inhalt springen

SNMP — Grundlagen & Geschichte

Das Simple Network Management Protocol (SNMP) ist eines der ältesten und am weitesten verbreiteten Protokolle zur Überwachung von Geräten in IT-Netzwerken. Wenn dein Monitoring-Tool die Auslastung deines Switches, die Temperatur einer USV oder den Status deines NAS anzeigt — die Wahrscheinlichkeit ist hoch, dass im Hintergrund SNMP läuft.

Diese Seite gibt dir den Hintergrund, bevor du dich in die SNMP-Einrichtung stürzt. Sie ist optional — wenn du nur schnell ReadyStackGo überwachen möchtest, kannst du direkt zur Anleitung springen.


Anfang der 90er-Jahre wuchsen Firmennetze rasend schnell. Jeder Hersteller (Cisco, IBM, Sun, HP) brachte eigene Verwaltungstools mit — die nur die eigenen Geräte konnten. Ein gemeinsamer Standard fehlte.

1988 entstand mit RFC 1067 das erste SNMP. Drei Jahre später folgte die heute klassische Version 1 (RFC 1157). Die Designentscheidungen waren bewusst minimalistisch:

  • UDP statt TCP — leichtgewichtig, sodass selbst sehr kleine Geräte (Drucker, Klimaanlagen, USVs) mitmachen können.
  • Pull-basiert — der Server (= “Manager”) fragt regelmäßig nach, das Gerät (= “Agent”) antwortet. Kein dauerhaft offener Tunnel.
  • Trotzdem Push-fähig — wenn etwas Wichtiges passiert, kann der Agent eine Trap ungefragt ans Management-System schicken.
  • Tabellenartige Datenstruktur — alles ist eine OID, und OIDs lassen sich in Bäumen organisieren.

Diese Mischung macht SNMP bis heute zur Lingua Franca für Infrastruktur-Monitoring. Praktisch jedes Enterprise-Monitoring-Tool kann SNMP — von Open-Source-Klassikern wie Nagios und Zabbix über kommerzielle Lösungen wie PRTG bis zu Cloud-Anbietern.


KomponenteRolleIn ReadyStackGo
ManagerStellt Anfragen, empfängt Antworten und Traps. Zentrales Dashboard.Dein Monitoring-Tool (PRTG, Zabbix, …)
AgentLäuft auf dem überwachten Gerät, lauscht auf UDP-Anfragen, sendet Traps.Der eingebaute SNMP-Listener in ReadyStackGo (Port 1161).
MIBDatei, die beschreibt, welche OIDs der Agent kennt und was sie bedeuten.READYSTACKGO-MIB.txt, herunterladbar über die Settings-Seite.

Eine Object Identifier (OID) ist ein eindeutiger Punkt-getrennter Zahlenpfad. Wie eine Telefonnummer — aber für Datenpunkte statt Anschlüsse.

Beispiel:

1.3.6.1.4.1.65846.1.1.1.0
└─┬──┘ └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘
│ │ │ │ │
│ │ │ │ └── Skalar (.0 = einzelner Wert, kein Index)
│ │ │ └──────── ReadyStackGo Sub-Baum (.1 = System-Scalars)
│ │ └────────────── ReadyStackGo unter PEN 65846
│ └──────────────────── private.enterprises (4.1)
└────────────────────────── iso.org.dod.internet (1.3.6.1)

Jeder Hersteller bekommt von der IANA eine eigene PEN (Private Enterprise Number) und kann darunter beliebige Bäume aufspannen. ReadyStackGo nutzt aktuell 65846 (IANA-assigned 2026-05-21) — die richtige PEN wurde am 2026-05-19 beantragt und kommt in einer der nächsten Versionen.


Die Ur-Version. Authentifizierung erfolgte über einen Community-String — quasi ein gemeinsames Passwort im Klartext. Üblich waren public (read-only) und private (read-write). Das war 1988 völlig akzeptabel: Netze waren klein, vertrauenswürdig, oft physisch isoliert.

Probleme aus heutiger Sicht:

  • Community-String läuft unverschlüsselt über die Leitung — jeder mit einem Sniffer hat ihn.
  • Keine Integritätsprüfung. Ein Angreifer könnte ein Paket modifizieren.
  • Schwacher Datentyp-Umfang (z. B. nur 32-Bit-Counter).

ReadyStackGo unterstützt v1 nicht. Wer noch v1 nutzt, sollte auf v2c oder v3 wechseln.

“c” steht für “community-based”. v2c hat fast alle v1-Sicherheitsschwächen behalten, dafür aber viele nützliche Features draufgepackt:

  • 64-Bit-Counter (Counter64) — wichtig für hohe Bandbreiten, die einen 32-Bit-Counter binnen Minuten überlaufen lassen würden.
  • GETBULK-Operation — statt jede Zeile einer Tabelle einzeln abzufragen (GETNEXT), kann der Manager in einem Paket mehrere Zeilen auf einmal anfordern. Massiver Performance-Gewinn.
  • Bessere Fehlercodes und neue Datentypen.

Wann reicht v2c?

  • Vertrauenswürdiges, segmentiertes Management-Netz.
  • Keine Compliance-Anforderungen (HIPAA, PCI-DSS, BSI Grundschutz).
  • Du brauchst nur Lese-Zugriff (was bei ReadyStackGo der Fall ist — der Agent ist read-only).

Wann nicht?

  • Verkehr läuft durch unsichere Netze (Internet, fremde WAN-Strecken).
  • Du brauchst pro-User-Audit (“Wer hat dieses Polling getriggert?”).
  • Compliance verlangt Verschlüsselung aller Management-Traffic.

v3 ist eine komplett neu gedachte Sicherheitsarchitektur auf der bewährten v2c-Protokollebene. Drei Kernkonzepte:

  1. Authentication (Auth) — der Empfänger kann prüfen, dass das Paket wirklich vom angegebenen User stammt und nicht modifiziert wurde. HMAC-basiert.
  2. Privacy (Priv) — der Inhalt wird verschlüsselt, sodass Mitlauscher nichts mitlesen können.
  3. User-based Security Model (USM) — Authentifizierung pro benanntem User, nicht mehr pro Community-String. Jeder User hat eigene Auth- und Priv-Passphrases.

Daneben gibt es das View-based Access Control Model (VACM) — pro User kann definiert werden, welche OID-Teilbäume er lesen/schreiben darf. ReadyStackGo nutzt VACM nicht aktiv, weil der Agent ohnehin read-only und auf einen einzigen Sub-Baum beschränkt ist.

Mehr Details: Sicherheitsmodelle (Community vs. USM) und Auth- und Priv-Algorithmen.


OperationWer initiiert?Wofür
GETManager → AgentEinen einzelnen Wert abfragen
GETNEXTManager → AgentDen nächsten Wert in der OID-Baum-Reihenfolge — Basis für Walks
GETBULKManager → AgentMehrere GETNEXTs in einem Paket (v2c+)
WALK(Konvention)Loop aus GETNEXT/GETBULK — komplette Teilbäume herunterladen
SETManager → AgentEinen Wert schreiben — bei ReadyStackGo nicht implementiert (read-only)
TRAP / NOTIFICATIONAgent → ManagerEvent-Push vom Agent
INFORMAgent → ManagerWie Trap, aber mit Bestätigung

In der Praxis verwendest du am häufigsten snmpwalk (CLI-Befehl, der intern GETNEXT/GETBULK benutzt) und konfigurierst deine GUI-Tools so, dass sie regelmäßig GET-Anfragen schicken.


Ein typischer SNMPv2c GET enthält:

FeldWert (Beispiel)
Version1 (für v2c — die Zahlen im Paket sind 0=v1, 1=v2c, 3=v3)
Communityreadonly-demo
PDU-TypGetRequest
Request-ID12345 (eindeutige Zuordnung Frage/Antwort)
Error-Status0 (im Request immer 0)
VarBind-Liste[(1.3.6.1.4.1.65846.1.1.1.0, NULL)]

Der Agent antwortet mit denselben Feldern, nur dass NULL durch den realen Wert ersetzt ist.

In SNMPv3 kommt ein zusätzlicher SecurityModel-Header hinzu (User, Engine-ID, Auth-Parameter, Priv-Parameter). Die VarBind-Daten werden bei authPriv verschlüsselt.