Eine Einführung in SNMP (Simple Network Management Protocol)

Einführung

Ein großer Teil Ihrer Systemadministrationstätigkeit besteht darin, genaue Informationen zu Ihren Servern und Ihrer Infrastruktur zu sammeln. Es gibt eine Reihe von Tools und Optionen zum Sammeln und Verarbeiten dieser Art von Informationen. Viele von ihnen basieren auf einer Technologie namens * SNMP *.

SNMP steht für einfaches Netzwerkverwaltungsprotokoll. Auf diese Weise können Server Informationen über ihren aktuellen Status austauschen und über einen Kanal können Administratoren vordefinierte Werte ändern. Während das Protokoll selbst sehr einfach ist, kann die Struktur von Programmen, die SNMP implementieren, sehr komplex sein.

In diesem Handbuch stellen wir Ihnen die Grundlagen des SNMP-Protokolls vor. Wir werden seine Verwendung, die Art und Weise, wie das Protokoll normalerweise in einem Netzwerk verwendet wird, die Unterschiede in seinen Protokollversionen und vieles mehr untersuchen.

Grundlegendes Konzept

SNMP ist ein Protokoll, das auf der Anwendungsebene des Netzwerkstapels implementiert ist (klicken Sie hier, um mehr über https://www.digitalocean.com/community/tutorials/aneinführung-in-networking-terminology-interfaces-and-protocols zu erfahren #NetworkLayers [Netzwerkebenen]). Das Protokoll wurde erstellt, um Informationen aus sehr unterschiedlichen Systemen auf konsistente Weise zu sammeln. Obwohl es in Verbindung mit einer Vielzahl von Systemen verwendet werden kann, sind die Methode zur Abfrage von Informationen und die Pfade zu den relevanten Informationen standardisiert.

Es gibt mehrere Versionen des SNMP-Protokolls und viele vernetzte Hardwaregeräte implementieren eine Form des SNMP-Zugriffs. Die am häufigsten verwendete Version ist SNMPv1, sie ist jedoch in vielerlei Hinsicht unsicher. Seine Popularität beruht größtenteils auf seiner Allgegenwart und langen Zeit in freier Wildbahn. Sofern Sie keinen triftigen Grund haben, empfehlen wir die Verwendung von SNMPv3, das erweiterte Sicherheitsfunktionen bietet.

Im Allgemeinen besteht ein Netzwerk, das von SNMP profiliert wird, hauptsächlich aus Geräten, die SNMP * Agenten * enthalten. Ein Agent ist ein Programm, mit dem Informationen zu einer Hardwareeinheit erfasst, in vordefinierten Einträgen organisiert und mithilfe des SNMP-Protokolls auf Abfragen geantwortet werden können.

Die Komponente dieses Modells, die Agenten nach Informationen abfragt, wird als SNMP * Manager * bezeichnet. Diese Computer verfügen im Allgemeinen über Daten zu allen SNMP-fähigen Geräten in ihrem Netzwerk und können Anforderungen zum Sammeln von Informationen und zum Festlegen bestimmter Eigenschaften ausgeben.

SNMP-Manager

Ein SNMP-Manager ist ein Computer, der so konfiguriert ist, dass er den SNMP-Agenten nach Informationen abfragt. Die Verwaltungskomponente ist viel weniger komplex als die Clientkonfiguration, wenn nur die Kernfunktionalität erörtert wird, da die Verwaltungskomponente lediglich Daten anfordert.

Der Manager kann ein beliebiger Computer sein, der Abfrageanforderungen mit den richtigen Anmeldeinformationen an SNMP-Agenten senden kann. Manchmal wird dies als Teil einer Überwachungssuite implementiert, während dies manchmal ein Administrator ist, der einige einfache Dienstprogramme verwendet, um eine schnelle Anforderung zu erstellen.

Nahezu alle im SNMP-Protokoll definierten Befehle (auf die wir später noch näher eingehen werden) sind so konzipiert, dass sie von einer Manager-Komponente gesendet werden. Dazu gehören "+ GetRequest ", " GetNextRequest ", " GetBulkRequest ", " SetRequest ", " InformRequest " und " Response ". Darüber hinaus ist ein Manager so konzipiert, dass er auf Nachrichten mit den Bezeichnungen " Trap" und "+ Response" reagiert.

SNMP-Agenten

SNMP-Agenten erledigen den größten Teil der Arbeit. Sie sind dafür verantwortlich, Informationen über das lokale System zu sammeln und in einem abfragbaren Format zu speichern. Aktualisieren einer Datenbank, die als "Management Information Base" oder "MIB" bezeichnet wird.

Die MIB ist eine hierarchische, vordefinierte Struktur, in der Informationen gespeichert werden, die abgefragt oder festgelegt werden können. Dies steht wohlgeformten SNMP-Anforderungen zur Verfügung, die von einem Host stammen, der sich mit den richtigen Anmeldeinformationen (einem SNMP-Manager) authentifiziert hat.

Der Agent-Computer konfiguriert, welche Manager Zugriff auf seine Informationen haben sollen. Es kann auch als Vermittler fungieren, um Informationen zu Geräten zu melden, mit denen eine Verbindung hergestellt werden kann und die nicht für SNMP-Datenverkehr konfiguriert sind. Dies bietet viel Flexibilität, um Ihre Komponenten online und über SNMP zugänglich zu machen.

SNMP-Agenten reagieren auf die meisten vom Protokoll definierten Befehle. Dazu gehören "+ GetRequest ", " GetNextRequest ", " GetBulkRequest ", " SetRequest " und " InformRequest ". Darüber hinaus ist ein Agent so konzipiert, dass er " Trap +" - Nachrichten sendet.

Grundlegendes zur Verwaltungsinformationsbasis

Der am schwierigsten zu verstehende Teil des SNMP-Systems ist wahrscheinlich die * MIB * oder Verwaltungsinformationsbasis. Die MIB ist eine Datenbank, die einem Standard folgt, den Manager und Agenten einhalten. Es handelt sich um eine hierarchische Struktur, die in vielen Bereichen global standardisiert, aber auch flexibel genug ist, um herstellerspezifische Ergänzungen zu ermöglichen.

Die MIB-Struktur wird am besten als hierarchischer Baum von oben nach unten verstanden. Jeder abzweigende Zweig ist sowohl mit einer Identifikationsnummer (beginnend mit 1) als auch mit einer Identifikationszeichenfolge gekennzeichnet, die für diese Hierarchieebene eindeutig sind. Sie können die Zeichenfolgen und Zahlen austauschbar verwenden.

Um auf einen bestimmten Knoten des Baums zu verweisen, müssen Sie den Pfad vom unbenannten Stamm des Baums zum betreffenden Knoten verfolgen. Die Abstammung der übergeordneten IDs (Zahlen oder Zeichenfolgen) werden beginnend mit der allgemeinsten zu einer Adresse zusammengefasst. Jede Kreuzung in der Hierarchie wird in dieser Notation durch einen Punkt dargestellt, sodass die Adresse eine Reihe von ID-Zeichenfolgen oder -Nummern ist, die durch Punkte getrennt sind. Diese gesamte Adresse wird als Objektkennung oder * OID * bezeichnet.

Hardwareanbieter, die SNMP-Agenten in ihre Geräte einbetten, implementieren manchmal benutzerdefinierte Zweige mit eigenen Feldern und Datenpunkten. Es gibt jedoch Standard-MIB-Zweige, die gut definiert sind und von jedem Gerät verwendet werden können.

Die Standardzweige, die wir diskutieren werden, werden alle unter derselben übergeordneten Zweigstruktur liegen. In diesem Zweig werden Informationen definiert, die der MIB-2-Spezifikation entsprechen, einem überarbeiteten Standard für kompatible Geräte.

Der Basispfad zu diesem Zweig lautet:

1.3.6.1.2.1

Dies kann auch in Zeichenfolgen dargestellt werden:

iso.org.dod.internet.mgmt.mib-2

Der Abschnitt "+ 1.3.6.1 " oder " iso.org.dod.internet " ist die OID, die Internetressourcen definiert. Das " 2 " oder " mgmt ", das in unserem Basispfad folgt, ist für eine Verwaltungsunterkategorie. Das ` 1 ` oder ` mib-2 +` darunter definiert die MIB-2-Spezifikation.

Dies ist eine http://www.alvestrand.no/objectid/1.3.6.1.2.1.html große Ressource, um sich mit dem MIB-Baum vertraut zu machen. Diese spezielle Seite stellt die Verbindungsknoten an der Kreuzung dar, über die wir gesprochen haben. Sie können überprüfen, was sich weiter oben und unten im Baum befindet, indem Sie die Referenzen "übergeordnet" und "untergeordnet" überprüfen.

Ein weiteres ähnliches Tool ist der von Cisco bereitgestellte SNMP Object Navigator. Auf diese Weise können Sie einen Drilldown in die Hierarchie durchführen, um die benötigten Informationen zu finden. Ein ähnlicher Baum wird von SolarWinds bereitgestellt.

Wenn wir unsere Geräte nach Informationen abfragen möchten, beginnen die meisten Pfade mit + 1.3.6.1.2.1 +. Sie können die Baumschnittstellen durchsuchen, um zu erfahren, welche Informationen zum Abfragen und Festlegen verfügbar sind.

SNMP-Protokollbefehle

Einer der Gründe, warum SNMP eine derart hohe Akzeptanz aufweist, ist die Einfachheit der verfügbaren Befehle. Es gibt nur sehr wenige Operationen, die implementiert oder gespeichert werden müssen, aber sie sind flexibel genug, um die Dienstprogrammanforderungen des Protokolls zu erfüllen.

Die folgenden PDUs oder Protokolldateneinheiten beschreiben die genauen Nachrichtentypen, die vom Protokoll zugelassen werden:

  • * Get *: Eine Get-Nachricht wird von einem Manager an einen Agenten gesendet, um den Wert einer bestimmten OID anzufordern. Diese Anforderung wird mit einer Antwortnachricht beantwortet, die mit den Daten an den Manager zurückgesendet wird.

  • * GetNext *: Mit einer GetNext-Nachricht kann ein Manager das nächste sequenzielle Objekt in der MIB anfordern. Auf diese Weise können Sie die Struktur der MIB durchlaufen, ohne sich Gedanken darüber machen zu müssen, welche OIDs abgefragt werden sollen.

  • * Set *: Eine Set-Nachricht wird von einem Manager an einen Agenten gesendet, um den Wert zu ändern, der von einer Variablen auf dem Agenten gespeichert wird. Dies kann verwendet werden, um Konfigurationsinformationen zu steuern oder den Status von Remote-Hosts auf andere Weise zu ändern. Dies ist die einzige vom Protokoll definierte Schreiboperation.

  • * GetBulk *: Diese Anfrage des Managers an den Agenten funktioniert so, als ob mehrere GetNext-Anfragen gestellt wurden. Die Antwort an den Manager enthält so viele Daten wie möglich (innerhalb der durch die Anforderung festgelegten Einschränkungen), wie das Paket zulässt.

  • * Antwort *: Mit dieser von einem Agenten gesendeten Nachricht werden alle angeforderten Informationen an den Manager zurückgesendet. Sie dient sowohl als Transport für die angeforderten Daten als auch als Empfangsbestätigung der Anfrage. Wenn die angeforderten Daten nicht zurückgegeben werden können, enthält die Antwort Fehlerfelder, die mit weiteren Informationen gesetzt werden können. Für jede der oben genannten Anforderungen muss eine Antwortnachricht sowie eine Benachrichtigung zurückgegeben werden.

  • * Trap *: Eine Trap-Nachricht wird in der Regel von einem Agenten an einen Manager gesendet. Traps sind asynchrone Benachrichtigungen, da sie vom Manager, der sie empfängt, nicht angefordert werden. Sie werden hauptsächlich von Agenten verwendet, um Manager über Ereignisse zu informieren, die auf ihren verwalteten Geräten stattfinden.

  • * Informieren *: Um den Empfang eines Traps zu bestätigen, sendet ein Manager eine Informierungsnachricht an den Agenten zurück. Wenn der Agent diese Nachricht nicht empfängt, sendet er möglicherweise die Trap-Nachricht erneut.

Mit diesen sieben Dateneinheitentypen kann SNMP Informationen zu Ihren Netzwerkgeräten abfragen und senden.

Protokollversionen

Das SNMP-Protokoll hat seit seiner Einführung viele Änderungen erfahren. Die ursprüngliche Spezifikation wurde 1988 mit RFC 1065, 1066 und 1067 formuliert. Aufgrund der Tatsache, dass es diese Version schon so lange gibt, wird sie immer noch weitgehend unterstützt. Es gibt jedoch viele Sicherheitsprobleme mit dem Protokoll, einschließlich der Authentifizierung im Klartext. Daher wird von seiner Verwendung dringend abgeraten, insbesondere wenn es in ungeschützten Netzwerken verwendet wird.

Die Arbeit an Version 2 des Protokolls wurde 1993 eingeleitet und bietet einige wesentliche Verbesserungen gegenüber dem früheren Standard. In dieser Version war ein neues parteibasiertes Sicherheitsmodell enthalten, mit dem die mit der vorherigen Überarbeitung verbundenen Sicherheitsprobleme behoben werden sollen. Das neue Modell war jedoch nicht sehr beliebt, da es schwer zu verstehen und umzusetzen war.

Aus diesem Grund wurden einige „Ausgründungen“ von Version 2 erstellt, von denen jede den Großteil der Verbesserungen von Version 2 behielt, aber das Sicherheitsmodell austauschte. In SNMPv2c wurde die Community-basierte Authentifizierung, die dem in Version 1 verwendeten Modell entspricht, wieder eingeführt. Dies war die beliebteste Version des v2-Protokolls. Eine andere Implementierung namens SNMPv2u verwendet benutzerbasierte Sicherheit, obwohl dies nie sehr populär war. Dies ermöglichte Einstellungen für die Benutzerauthentifizierung.

1998 wurde die dritte (und aktuelle) Version des SNMP-Protokolls als Spezifikationsvorschlag eingereicht. Aus Benutzersicht war die wichtigste Änderung die Einführung eines benutzerbasierten Sicherheitssystems. Hiermit können Sie die Authentifizierungsanforderungen eines Benutzers als eines der folgenden Modelle festlegen:

  • * NoAuthNoPriv *: Benutzer, die eine Verbindung mit dieser Ebene herstellen, haben keine Authentifizierung und keinen Datenschutz für die Nachrichten, die sie senden und empfangen.

  • * AuthNoPriv *: Verbindungen, die dieses Modell verwenden, müssen authentifiziert werden, aber Nachrichten werden unverschlüsselt gesendet.

  • * AuthPriv *: Authentifizierung ist erforderlich und Nachrichten werden verschlüsselt.

Zusätzlich zur Authentifizierung wurde ein Zugriffskontrollmechanismus implementiert, um eine differenzierte Kontrolle darüber zu ermöglichen, auf welche Zweige ein Benutzer zugreifen kann. Version 3 bietet auch die Möglichkeit, die Sicherheit der Transportprotokolle wie SSH oder TLS zu nutzen.

Fazit

Nachdem Sie eine gute Vorstellung von der Funktionsweise des Protokolls haben, verfügen Sie über die erforderlichen Grundlagen, um SNMP in Ihrer eigenen Infrastruktur zu implementieren.

In der https://www.digitalocean.com/community/tutorials/anleitungshandbuch zum installieren und konfigurieren von nmpdaemon und client on Ubuntu In diesem Abschnitt erfahren Sie, wie Sie die Komponenten installieren und konfigurieren, die für die Nutzung von SNMP auf Ihren Systemen erforderlich sind.