SNMP (Simple Network Management Protocol): Die Protokollbasis für Netzwerkmanagement

In einem Netzwerk sind Geräte verschiedenster Art vereint – von Computern über Server, Switches oder Router bis hin zu Druckern und Co. Je höher die Teilnehmerzahl ist, desto mehr Aufwand und Schwierigkeiten hat der Administrator bei der Verwaltung. Der Einsatz von Verwaltungstools gehört aus diesem Grund zum Pflichtprogramm, wenn die Funktionalität und Sicherheit aller Systeme langfristig gewährleistet sein soll. Ein Protokoll, das sich viele dieser Software-Lösungen zunutze machen, ist das Simple Network Management Protocol (SNMP), das heutzutage als eines der wichtigsten Standardprotokolle von nahezu allen Endgeräten unterstützt wird.

Was ist SNMP?

Nach rund zwei Jahren Entwicklungszeit wurde im Mai 1990 die erste offizielle Version des Simple Network Management Protocols, kurz SNMP, in RFC 1157 veröffentlicht. Verantwortlich für das Netzwerkprotokoll, das Teil der Internetprotokollfamilie und mittlerweile auch in den Versionen SNMPv2 und SNMPv3 verfügbar ist, ist eine Arbeitsgruppe der IETF (Internet Engineering Task Force). Kernfunktion des SNMP-Protokolls ist es, eine zentrale Überwachung und Steuerung aller Komponenten eines Computernetzwerks zu ermöglichen. Zu diesem Zweck beschreibt es den Aufbau der benötigten Kommunikationspakete sowie den Ablauf der Kommunikation zwischen der zentralen Station und den einzelnen Geräten.

Für den Transport der Pakete ist das verbindungslose UDP-Protokoll vorgesehen. Die transportierten Daten und Informationen sind dabei in der sogenannten Management Information Base (MIB) in einer Art Baumstruktur abgelegt und gespeichert.

SNMP-Erklärung: So funktioniert das Simple Network Management Protocol

Die Netzwerkverwaltung via SNMP basiert auf einem Agenten-Manager-Modell. Die zentrale Managementstation ist dabei das System, von dem aus der Administrator die verschiedenen Netzwerkteilnehmer beobachtet und steuert. Hierfür ist eine Management-Software installiert, die die SNMP-Abfrage von Daten sowie die Initiierung bestimmter Aktionen ermöglicht. Die Agenten, bei denen es sich ebenfalls um Anwendungen handelt, sind das Gegenstück auf Seiten der einzelnen Netzwerkkomponenten. Sie erfassen die relevanten Daten auf dem Zielhost und geben diese an die Managementstation weiter, können aber auch selbst Einstellungen vornehmen und bestimmte Aktionen auslösen. Derartige Agenten-Anwendungen sind in den meisten gängigen Windows- und Linux-Systemen bereits standardmäßig implementiert, beispielsweise in Form des Daemons snmpd (nur Linux).

Für die Verständigung zwischen Manager und Agent gibt das SNMP-Protokoll sieben mögliche Nachrichtentypen vor:

  • GET-Request: GET-Requests sind die standardmäßigen Nachrichten zum Abruf eines bestimmten Datensatzes auf dem gewünschten Netzwerkgerät.
  • GETNEXT-Request: Dieses Nachrichtenformat wird benötigt, wenn auch nachfolgende Datensätze abgefragt werden sollen, z. B. bei Tabellen.
  • GETBULK-Request: Soll eine definierte Anzahl an Datensätzen mit einem einzigen Request abgerufen werden, kann die Manageranwendung einen GETBULK-Request (ab SNMPv2) senden. Eine solche Anfrage ist vergleichbar mit mehreren, aufeinanderfolgenden GETNEXT-Requests.
  • SET-Request: SET-Requests ermöglichen es dem Manager, einen oder mehrere Datensätze des gewünschten Netzwerkgeräts zu verändern oder bestimmte Aktionen auszulösen. Ein Beispielszenario, in dem gleich mehrere Anpassungen notwendig sind, ist die Konfiguration einer IP-Adresse, die gleichzeitig auch die Angabe einer Netzwerkmaske erfordert.
  • GET-Response: Hat der Manager einen oder mehrere Datensätze angefordert oder Änderungen bzw. Aktionen initiiert, antwortet der Agent mit GET-Responses. Diese Antwortpakete enthalten entweder die erfragten Daten bzw. eine Bestätigung der Anpassungen oder eine Fehlermeldung, wenn die Requests nicht ordnungsgemäß beantwortet werden konnten.
  • SNMP-Trap: Bei SNMP-Traps handelt es sich um Agenten-Nachrichten, die ohne Aufforderungen der Managerstation gesendet wurden. Hintergrund ist, dass ein bestimmtes unvorhergesehenes Ereignis aufgetreten ist. Um welches Ereignis es sich dabei handelt, können die Traps auf zwei Wegen mitteilen: Die erste, ressourcensparende Möglichkeit ist das Anhängen einer einzigartigen Identifikationsnummer, deren Bedeutung der Manager in der bereits erwähnten Informationsdatenbank (MIB) nachschlagen kann. Bei Möglichkeit Nummer zwei informieren die SNMP-Traps nicht nur über das Ereignis, sondern enthalten auch die entsprechenden Daten, ohne eine spezifische Identifikationsnummer anzuzeigen.
  • INFORM-Request: INFORM-Requests erfüllen prinzipiell die gleiche Funktion wie SNMP-Traps. Im Gegensatz zu diesen zeichnen sich die INFORM-Pakete allerdings dadurch aus, dass ihr Empfang vom Manager quittiert wird. In der Konsequenz kann der Agent die Nachricht also erneut verschicken, wenn diese den Manager im ersten Versuch nicht erreicht hat.

SNMP Port

Wie bereits erwähnt, schreibt das Simple Network Management Protocol den Einsatz des verbindungslosen Transportprotokolls UDP zur Übermittlung der aufgezählten Nachrichtenpakete vor. Auf diese Weise wird eine besonders ressourcenschonende Überwachung des Netzwerks gewährleistet. Für die verschiedenen GET-Abfragen an die Agenten (inklusive entsprechender Antworten) nutzt SNMP den UDP-Port 161, während die automatisch versendeten SNMP-Traps über UDP-Port 162 verschickt werden.

Die verschiedenen Versionen des SNMP-Protokolls im Vergleich

Ursprünglich bot SNMP weder eine Möglichkeit für Manager, um miteinander zu kommunizieren, noch für Agenten, um Nachrichten zu versenden, deren Empfang quittiert wird. Auch die Unterstützung vieler Anwendungen funktionierte anfangs trotz des Ansatzes als offener Standard nur teilweise. Deshalb zielten die Protokollüberarbeitungen der folgenden Jahre insbesondere darauf ab, entsprechende Mechanismen in das Simple Network Management Protocol zu integrieren. Ein weiteres wichtiges Bestreben der verantwortlichen IETF-Arbeitsgruppe, das sich insbesondere in der dritten Protokollversion widerspiegelt, lag von Beginn an darin, das Administrationsverfahren sicherer zu machen. Diese und weitere Optimierungsschritte des SNMP-Protokolls sind in den folgenden Portraits der einzelnen Versionen SNMPv1, SNMPv2 und SNMPv3 etwas ausführlicher thematisiert.

SNMPv1

SNMPv1 liefert als erste Version des Netzwerkverwaltungsprotokolls das Konzept für das zugrundeliegende Manager-Agenten-Modell sowie die Basis für die Kommunikation zwischen der Managerstation und den einzelnen Agenten. Das Simple Network Management Protocol ist dabei als simples Protokoll beschrieben, das auf Anwendungsebene agiert und auf UDP (User Datagram Protocol) und Internet Protocol (IP), aber auch auf vergleichbaren Netzwerkprotokollen wie AppleTalks DDP (Datagram Delivery Protocol) oder Internet Packet Exchange (IPX) aufsetzen kann. Einziger eingebauter Sicherheitsmechanismus ist der Austausch eines sogenannten Community-Strings, der mit den jeweiligen Requests versendet wird.

SNMPv2

Ein großes Problem der ersten Ausführung des SNMP-Protokolls ist, dass der für die Sicherheit sorgende Community-String lediglich im Klartext übertragen wird. Die Entwickler arbeiteten aus diesem Grund schnell an einer neuen Variante namens Secure SNMP, in der dieser String in verschlüsselter Form übertragen wird. Veröffentlicht wurde diese Version allerdings nie, da sie direkt durch SNMPv2 ersetzt wurde. Weitere Verbesserungen gegenüber der ursprünglichen Protokollvariante sind eine optimierte Fehlerbehandlung, die Möglichkeit von Manager-zu-Manager-Kommunikation sowie funktionsstärkere SET-Kommandos. Der größte Vorteil gegenüber SNMPv1 liegt allerdings in den neu implementierten Nachrichtentypen GETBULK (für die Abfrage mehrerer Daten in einem einzelnen Request) und INFORM (für Antwortbestätigungen auf Agenten-Antworten).

SNMPv3

Nach dem ersten, kleineren Schritt in der zweiten Protokollversion hat die IETF den Fokus in SNMPv3 vollends auf den Aspekt Sicherheit gelegt und den Community-String durch Username und Passwort ersetzt. Ferner enthält die dritte Protokollausführung im Gegensatz zu den Vorgängern Funktionen, um die Übertragung der SNMP-Pakete zu verschlüsseln. Insgesamt bietet SNMPv3 drei verschiedene Authentifizierungs- und Verschlüsselungsarten:

  Authentifizierung Verschlüsselung Username Passwort
noAuthNoPriv nein nein ja nein
authNoPriv ja nein ja ja
authPriv ja ja ja ja
Hinweis

Wenn die Managerstation die dritte Version des SNMP-Protokolls unterstützt, sollte diese in jedem Fall den älteren Protokollversionen vorgezogen werden. Ferner ist es sinnvoll, die größtmögliche SNMPv3-Sicherheitsstufe (authPriv) zu verwenden, falls das Gerät diese zulässt.