Standards fürs Netzwerk- und System-Management

Alexander Shadrin, 123RF

Das Komitee tanzt

Zwei Jahrzehnte lang hat SNMP als Protokoll fürs Netzwerk-Management gedient. Dieser Artikel erklärt, wie es funktioniert und beleuchtet auch die Nachfolgeprotokolle CIM und WBEM.
Sicher verstaut - Deduplizierung spart Platz, Cloud-Backup für Windows, Areca sichert kostenlos. ADMIN 01/14 stellt Backups für Profis mit und ohne Cloud ... (mehr)

Ansätze zum Remote-Management von Servern und Netzwerk-Equipment gibt es eher zu viele als zu wenige. Im Internet und IP-basierten Netzen ist immer noch das Simple Network Management Protocol (SNMP) die dominierende Lösung. Ihren Ursprung hat sie im Vorgänger namens SGMP (Simple Gateway Monitoring Protocol), der 1987 standardisiert wurde. Ein Jahr später folgte dann mit dem RFC 1067 das erste Standardisierungsdokument für SNMPv1.

Die erste Version des SNMP-Protokolls verwendete wie bereits der Vorgänger SGMP zur Definition der Syntax die abstrakte Notation ASN.1 (Abstract Syntax Notation One), die von ISO, IEC und ITU-T definiert worden war. Längerfristig sollte so der Übergang zu OSI-basierten Netzwerken erleichtert werden, aber dieser Wunsch wurde glücklicherweise nie realisiert.

Lesen und Schreiben

Geregelt sind in SNMP das Netzwerkprotokoll, das Client und Server (der Agent) miteinander sprechen und auch zur Authentifizierung verwenden. Dabei sieht SNMP unterschiedliche Protokoll-Token vor, um Informationen zu lesen und zu schreiben (GetRequest, SetRequest). Um den Netzwerk-Overhead zu reduzieren, bietet es auch die Möglichkeit, gleich eine ganze Reihe von Werten in einer Anfrage auszulesen. Neben dem Antwort-Typ bietet SNMP auch noch den Nachrichtentyp Trap, der vom Agenten (dem überwachten Gerät) ausgeht und zum Beispiel bei Störungen verschickt wird. Ansonsten schreibt SNMP grundsätzlich nur die Struktur der Informationen vor, die dann konkret für eine Anwendung, etwa ein Gerät, in einer Management Information Base (MIB) abgelegt sind. Jede Informationseinheit ist dort als Objekt ID (OID) definiert.

Zur Integration von SNMP-fähigen Geräten gibt es eine ganze Reihe von Möglichkeiten. Auf SNMP spezialisierte Netzwerk-Management-Software ist heute weitgehend abgelöst und in umfassenden Management-Lösungen aufgegangen, die unter anderem auch SNMP beherrschen. So bietet etwa die Firma HP statt ihres OpenView-Produkts nun den Systems Insight Manager an. Von IBM beispielsweise gibt es zum gleichen Zweck den Systems Director. In vielen Netzwerken werden heute statt solcher "Enterprise-Lösungen" lieber freie Monitoring-Lösungen wie Nagios, Icinga oder Zabbix eingesetzt, die allesamt SNMP beherrschen.

Darüber hinaus sind eine ganze Reihe von Programmen SNMP-fähig und lassen sich so in eine Management-Umgebung integrieren. Zum Beispiel gibt es für Telefonie-Programme wie Asterisk und Opensips eigene SNMP-Module. Auch der Viren- und Malware-Scanner Amavis bietet seine Statistiken auf Wunsch über SNMP an. Zum Management virtueller Maschinen, die in Linux-Hosts per Libvirt verwaltet werden, gibt es eine Bibliothek namens Libvirt-SNMP, die beide Welten zusammenbringt. Sie befindet sich allerdings noch in Entwicklung und muss für manche Distributionen noch selbst kompiliert werden. Allerdings ist sie beispielsweise schon Bestandteil von Fedora 19. Unter dem Namen Foghorn gibt es auch eine Software, die Ereignisse des D-Bus auf Linux in SNMP umsetzt.

Agenten

Router und bessere Switches besitzen wie auch Storage-Geräte meistens eingebauten SNMP-Support. Um sie per SNMP zu managen, muss der Administrator nur noch die passende MIB in das Management-System integrieren, um mit Namen auf die vorhandenen Subsysteme unter Interfaces zuzugreifen. Oft ist allerdings aus Sicherheitsgründen die SNMP-Funktionalität ab Werk ausgeschaltet, also muss der Anwender sie zuerst manuell aktivieren.

Bei Linux-Servern sieht die Sache anders aus. Prinzipiell gibt es ein Menge freier SNMP-Software, die man auf einer Distribution installieren kann, so etwa auch einen SNMP-Agenten, der das System überwacht und die Laufdaten an das Management-System übergibt. Die bessere Option ist allerdings oft ein spezifischer Agent, den ein Hardware-Hersteller zur Verfügung stellt. Dies tut er, wenn überhaupt, aber meistens nur für eine Handvoll (Enterprise-)Distributionen. Das SNMP-Paket auf Linux basiert meist auf Net-SNMP [1], während die Standard-MIBs die OIDs wie »HOST-RESOURCES-MIB::hrFSTable« bereitstellen. Ein Beispiel dafür, wie man solche Werte ausliest, findet sich im Kasten "Linux-Setup".

Linux-Setup

Wie üblich ist die SNMP-Konfiguration mit Linux distributionsspezifisch. Bei Ubuntu/Debian heißen die Agenten-Pakete »snmpd« , die Tools sind im »snmp« -Paket enthalten. Bei Fedora findet sich der Agent in »net-snmp« , die Tools im Paket »net-snmp-utils« . Wer auf Ubuntu- und Debian-Systemen nach der Installation einen Test mit »snmpwalk« , »snmpget« oder »snmptable« durchführt, wird im Normalfall mit einer Fehlermeldung konfrontiert, weil die MIBs noch nicht heruntergeladen sind. Dies lässt sich durch die Installation des Pakets »snmp-mibs-downloader« nachholen.

Ein erfolgreicher Test mit »snmptable -v1 -Os -Cb -c public localhost HOST-RESOURCES-MIB::hrFSTable« sieht so aus wie in Abbildung 1. Die Option »-Os« sorgt dafür, dass nur das letzte Element der OID ausgegeben wird, »-Cb« sorgt für abgekürzte Feldnamen. Wichtig ist auch, mit »-v1« die Version 1 von SNMP festzulegen, denn sonst erhält man ebenfalls eine Fehlermeldung, wenn man nicht SNMPv4 richtig konfiguriert hat. Der Parameter »-c public« authentifiziert den Aufruf mit der SNMP-"Community" »public« , die entsprechend in der Konfigurationsdatei des Agents festgelegt sein muss (meist »/etc/snmp/snmpd.conf« ) – mehr dazu im Abschnitt "Sicherheit" dieses Artikels. Eine weitere Fehlerquelle respektive voreingestellte Sicherheitsmaßnahme ist, dass auf vielen Distributionen der SNMP-Agent nur auf der Localhost-Adresse lauscht.

Abbildung 1: Bei richtiger Konfiguration gibt das Kommando snmptable die konfigurierten Dateisysteme eines Linux-Servers aus.

In der Windows-Welt hat sich im Laufe der Jahre hinsichtlich SNMP etwas verändert. Microsoft hat nämlich in Windows Server 2012 den SNMP-Support für veraltet (deprecated) erklärt. Stattdessen wird Windows-Admins empfohlen, künftig CIM zu verwenden (dazu später mehr). Allerdings steht die Software weiterhin zur Verfügung, sie muss nur extra aktiviert werden: Der Dienst ist im Feature »SNMP Services« (»SNMP-Dienst« ) enthalten, die Programme in »SNMP Tools« .

Wer selbst Hand anlegen möchte, findet dazu in den meisten Programmiersprachen Gelegenheit. Diverse Bibliotheken gehören zum Standardumfang der gängigen Linux-Distributionen, etwa die C-Bibliothek von Net-SNMP »net-snmp-devel« (Red Hat, Fedora) beziehungsweise »libsnmp-dev« (Debian/Ubuntu). Für C++-Programmierer gibt es SNMP++, für die Java-Welt SNMP4J. Skript-Programmierer können beispielsweise auf Pysnmp, PHP-SNMP oder Perl-Net-SNMP zurückgreifen.

comments powered by Disqus

Artikel der Woche

Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2018