SNMP Grundlagen

Weitergehende Informationen finden Sie auch auf:

Der Name SNMP und was man damit tun kann

SNMP steht für Simple Network Management Protocol und ist in der "RFC 1157 - SIMPLE NETWORK MANAGEMENT PROTOCOL (SNMP)" genauer beschrieben. Ursprünglich wurde SNMP mit dem Ziel definiert, einen gemeinsamen Standard für die Überwachung von Netzwerken und den Komponenten, die ein Netzwerk aufbauen, zu überwachen. Abgesehen von sehr günstigen "unmanaged" Devices können Sie heute davon ausgehen, dass die meisten größeren Hubs, Switches und Router per SNMP kontaktiert werden können. Zur Kommunikation wird meist TCP/IP genutzt, aber auch IPX und andere Protokolle sind möglich. SNMP unterstützt dabei primär drei Befehle:

  • GET
    Dabei fragt das Management System den Client aktiv ab. Dies ist eine einmalige Abfrage. Will eine Management Software daher eine Grafik der Netzwerkbelastung aufbauen, dann muss Sie regelmäßig die Variable auslesen, in der die Anzahl der übertragenen Bytes stehen. (Polling)
  • SET
    Wenn ihre Management Anwendung sich am SNMP-Dienst korrekt autorisieren kann, dann ist es auch möglich, Parameter zu schreiben, z.B.: einen Port zu deaktivieren etc.
  • TRAP'
    Zuletzt muss eine Management Station nicht permanent ein Gerät abfragen. Das Gerät kann auch einen "TRAP" an eine andere Station senden, um dringende Dinge zu melden, z.B.: Anmeldung mit falschem Kennwort oder ein verlorener Link

Autorisierung, Rechte und Communities

Kommen wir zu einem schwachen Aspekt von SNMP - die Sicherheit. Es kann nicht in ihrem Interesse liegen, dass jeder mit einem passenden Programm einfach Systemcounter auslesen oder sogar im schlimmsten Fall Werte verändern kann. SNMP unterstützt aber keine Anmeldung mit Benutzername und Kennwort, da die überwachten Systeme oft nicht mal den Speicher für diese Informationen hatten. SNMP nutzt ein Modell der Communities.

Communities Public und Private

Communities sind einfache Namen, die ein anfragendes System an den SNMP-Service mit übergibt. Der SNMP-Service übermittelt einfach ein Wort (String, z.B.: "public") in der Anfrage mit. Sehr häufig werden die beiden Texte "PUBLIC" (darf nur lesen) und "PRIVATE" (darf auch schreiben) verwendet.

Nun könnten Sie natürlich eine sehr lange community auswählen, die ähnlich einer SessionID im Webbrowser eine eindeutige und schwer zu erratende Kennung darstellt. Nachteilig ist aber, dass SNMP die Daten per Klartext überträgt. für einen Angreifer wäre es daher ein leichtes, einfach auf dem Netzwerk die Daten zu lesen und damit auch die Community Texte zu erraten.

Die Communities eignen sich daher nicht als zuverlässige Legitimation eines anfragenden Systems, sondern nur nur unterscheidung, welche Zugriffe (Lesen oder Schreiben) prinzipiell erlaubt sind. Ein überwachtes System kann in der Regel mehrere Community Einträge verwalten, d.h. neben public und private können Sie ihre eigenen Einträge ergänzen und die vorhandenen Einträge natürlich auch komplett entfernen. Eine Sicherheit ist dies aber nicht. Siehe dazu auch SNMP mit Windows.

Allowed Host

Daher sollten Sie auf jeden Fall die zweite Funktion nutzen, und die IP-Adressen der Systeme einschränken, die überhaupt Kontakt mit dem SNMP-Dienst des überwachten Systems aufnehmen können. Alle Systeme erlauben die Einstellung, welche Endsysteme überhaupt eine Verbindung zum SNMP-Daemon des überwachten Systems aufnehmen dürfen. Über diesen Weg können Sie unliebsame Besucher relativ einfach aussperren. Allerdings sollte es ihnen nicht neu sein, dass auch die IP-Adresse und der Rückweg über ARP-Spoofing einfach zu fälschen ist. Dies ist daher nur ein einfacher Schutz.  Siehe dazu auch SNMP mit Windows.

Management Subnetz

Aufgrund dieser Einschränkungen und Schwächen gehen immer mehr Firmen dazu über, für das Monitoring ein eigenes Netzwerk oder VLAN zu definieren, um zuverlässig den Nutzdatenverkehr der Anwender von dem Management Verkehr zu trennen. Dann lassen sich auch über Prioritäten entsprechende Qualitäten sicher stellen. Ein Mitlesen der Community Strings ist dann nicht mehr einfach möglich. An ein solches separiertes Netzwerk können Sie z.B.: auch die Überwachungsboards der Server (HP Remote Insight ILO, Dell Remote Monitoring Adapter RMA, Fujitsu Siemens ServerView, IBM Remote Supervisor Adapter etc.) anschließen.

OID und die Werte

Nachdem nun die Komponenten, der Zugriff und die Sicherheit geklärt sind, bleibt natürlich die Frage, woher das Management System weiß, welche Werte es abfragen kann und wie SNMP die unterschiedlichen Datenquellen integriert. Eine große Tabelle ist hier sicher nicht hilfreich. Alle Variablen sind in einer Baumstruktur organisiert: Dies kann z.B.: wie folgt aussehe

Der Pfad zu iso.org.dod.internet.mgmt.mib-2 kann auch als Nummer .1.3.6.1.2.1 dargestellt werden. Oft werden die Ergebisse einer Ausgabe auch entsprechend abgekürzt. Die Abkürzung "enterprises" steht für .1.3.6.1.4.1

Die zurüggegebenen Ergebnisse müssen dabei nicht immer numerisch sein. Sie erhalten Texte, Integerwerte aber auch Tabellen zurück. Doch woher wissen Sie, welche OID sie nun abfragen und wie Sie das Ergebnis auswerten müssen , um bestimme Informationen zu erhalten. ?

OID und MIB

Sie können natürlich einfach den OID-Baum sequentiell durchlaufen und die Ergebnisse sich anschauen. Aber zu jeder Gruppe von OIDs gehört üblicherweise auch eine MIB. Eine MIB ist einfach eine Textdatei in einem vordefinierten Format, welche alle Informationen zu den verschiedenen OIDs enthält. Hier ein Auszug der RFC-1213, die MIB-2 definiert.

Eingerahmt durch das BEGIN und END werden zuerst andere MIBs (z.B. mgmt = .1.3.6.1.2) importiert um dann den ersten Eintrag zu definieren:

  • mib-2 OBJECT IDENTIFIER ::= { mgmt 1 }
    Diese Zeile definiert, dass die Variable .1.3.6.1.2.1 für mib-2 steht
  • system OBJECT IDENTIFIER ::= { mib-2 1 }
    System wird dann als 1.3.6.1.2.1.1 definiert
  • sysDescr OBJECT-TYPE
    Beschreibt dann die wirklich erste Variable als " ::= { system 1 }". Eine Abfrage von 1.3.6.1.2.1.1.1 liefert demnach einen String von bis zu 255 Zeichen zurück. Diese Feld MUSS vorhanden sein, aber kann nur gelesen werden

Was machen Sie nun mit der MIB ?. Diese Textdatei ist in der Form nur schwer zu verarbeiten. Aber sehr viele Programme erlauben den Import dieser standardisierten Informationen in eine proprietäre Datenbank der jeweiligen Anwendung. Sie können dann in der grafischen Oberfläche durch den Baum anhand der Beschreibung anstelle der numerischen Darstellung wandern. Auch der Zugriff auf Variablen kann anhand der Namen erfolgen. Dies macht es sehr viel einfacher

SNMP und Microsoft ?

Die MIB-2 ist eine generische MIB für Netzwerkgeräte und erlaubt den Zugriff auf sehr viele TCP/IP-Parameter. Zusätzlich gibt es in SNMP aber auch einen Zweig ".iso.org.dod.internet.private.enterprises" mit der OID .1.3.6.1.4.1, unter der sicher Hersteller eintragen könnnen. Jeder Hersteller bekommt dabei eine eindeutige Ziffer. Microsoft hat z.B.: die Ziffer 77. Eine kleine Auswahl an OIDs

OID

Inhalt

.1.3.6.1.4.1.77.1.2.1.0

Beschreibung aus dem Serverdienst

.1.3.6.1.4.1.77.1.2.3.1.1.x

Liste der Dienste (x ist dabei aufsteigend)

.1.3.6.1.4.1.77.1.2.25.1.1.x

Liste der lokalen Anwender

Weitere auslesbare Dienste sind z.B. FTP, IIS, Serverdienst, DNS; DHCP und viele mehr. Sie können die Daten sehr einfach auslesen, wenn das Programm einen SNMP-WALK unterstützt. Auch Microsoft stellt entsprechende MIB-Dateien bereit. Suchen Sie einfach mal auf ihrem Server bzw. der CD nach "*.MIB". Auch bei den Herstellern von Routern, Switches etc. finden Sie immer wieder solche MIB-Dateien.

Erste Schritte mit SNMPUTILG

Microsoft stellt für einfache Tests das Programm SNMPUTIL (Kommandozeile) bzw. SNMPUTILG (Gui-Version) bereit, mit denen Sie ihre ersten Schritte mit SNMP tun können. SNMPUTILG ist z.B. im Windows NT4 Ressource Kit aber auch in den Windows XP SP2 Support Tools enthalten. Nach der Eingabe der IP-Adresse können die z.B. die nächsten 20 Werte ausgehend von der OID .1.3.6.1.2.1 gehen.

Sie sehen sehr gut, dass die ersten Werte den Namen und Kontakt in den SNMP-Einstellungen ausgeben. Somit können sie schnell prüfen, ob SNMP überhaupt funktioniert und welche Werte abfragbar sind.

Managementprogramme

Für eine weitergehende Nutzung von SNMP ist natürlich SNMPUTILG nicht ausreichend. für den Administrator bieten sich Programm wie GETIF an, die auf die schnelle den Zugriff auf Daten erlauben und sogar einfache grafische Auswertungen ermöglichen. für den kommerziellen Einsatz gibt es eine ganze Bandbreite von anderen Programme, die unterschiedliche Schwerpunkte verfolgen. Da mittels SNMP nahezu alle Werte eines Systems auslesbar sind gibt es Lösungen für:

  • Netzwerkmanagement
    Programme, mit denen Sie nicht nur grafisch einen Netzwerkplan erstellen können und der aktuelle Status entsprechend signalisiert wird. Spezielle Programme erlauben sogar einen sehr genauen Blick auf die einzelnen Geräte, z.B.: bis auf den Port eines Switches herunter.
  • Servermanagement
    Programme wie der Insight Agent (HP) oder ServerView (Fujitsu-Siemens) nutzen ebenfalls SNMP um von einem Management System die Hardware aller Server zu überwachen
  • Application Management
    Da auch Anwendungen wie der IIS, FTP und DNS-Server und viele andere Programme sich in den SNMP-Dämon einbinden können, können auch höhere Schichten einer Infrastruktur

So gibt es Generalisten von IBM (Tivoli), CA (Unicenter), Cabletron (Spectrum), HP (OpenView), die eine sehr umfangreiche Funktion haben und entsprechend mehr Geld kosten. Auf der anderen Seite gibt es kleine günstige Lösungen wie WhatsUp, Hostmon und andere. Aber auch als Freeware und OpenSource gibt es einige sehr interessante Programme wie MRTG, Nagios, 3Com Network Supervisor, Compaq CNMS etc. Eine Produktempfehlung kann es hier nicht geben.

Weitere Links

Kommerzielle und Freeware Tools, die auf SNMP aufsetzen.

Haben Sie bitte Verständnis, dass ich auf Fragen zu SNMP nur im Rahmen eines Projektauftrags antworten kann.