So installieren und konfigurieren Sie einen SNMP-Daemon und -Client unter Ubuntu 14.04

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 unserem letzten Handbuch haben wir die Grundlagen des SNMP-Protokolls zu https://www.digitalocean.com/community/tutorials/an-einführung-in-snmp-einfaches-Netzwerkmanagement-protokoll kennengelernt. In diesem Handbuch wird zunächst gezeigt, wie die Tools für die Kommunikation über SNMP eingerichtet werden. Wir werden zwei Ubuntu 14.04-Server verwenden, um dies zu demonstrieren, aber die meisten anderen Systeme sollten in der Lage sein, einige Änderungen vorzunehmen.

Installieren Sie den SNMP-Daemon und die Dienstprogramme

Wir können damit beginnen, zu untersuchen, wie SNMP auf einem System implementiert werden kann, indem der Dämon und die Tools auf einigen Ubuntu-Systemen installiert werden.

Wir werden zwei Server verwenden, von denen einer den Manager-Teil und der andere den Agenten enthält. Wir können den Agenten auch auf dem Manager-Computer installieren. Wenn Sie ihn jedoch getrennt halten, können Sie leichter nachvollziehen, welche Funktionen die einzelnen Komponenten bieten.

Aktualisieren Sie auf dem ersten Server die apt-Datenbank und installieren Sie die Manager-Komponente. Außerdem werden wir ein weiteres Paket mit dem Namen "+ snmp-mibs-downloader +" herunterladen, das einige proprietäre Informationen zu Standard-MIBs enthält, mit denen wir namentlich auf den größten Teil des MIB-Baums zugreifen können:

sudo apt-get update
sudo apt-get install snmp snmp-mibs-downloader

Auf unserem zweiten Server, auf dem der Daemon ausgeführt wird, können wir die erforderlichen Komponenten installieren, indem wir Folgendes eingeben:

sudo apt-get update
sudo apt-get install snmpd

Nachdem Sie diese Komponenten installiert haben, müssen wir unser Setup konfigurieren.

SNMP-Manager konfigurieren

Wie oben erwähnt, geschieht der größte Teil der Arbeit in der Agentenkomponente, sodass unsere Konfiguration auf diesem Computer eigentlich recht einfach ist. Wir müssen nur eine Datei ändern, um sicherzustellen, dass unser Client die zusätzlichen MIB-Daten verwenden kann, die wir installiert haben.

Öffnen Sie die Datei "+ / etc / snmp / snmpd.conf" in Ihrem Texteditor mit sudo-Berechtigungen:

sudo nano /etc/snmp/snmp.conf

In dieser Datei befinden sich einige Kommentare und eine einzelne nicht kommentierte Zeile. Damit der Manager die MIB-Dateien importieren kann, müssen wir nur die Zeile + mibs: + auskommentieren:

mibs :

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Wir sind nun mit der Konfiguration des Manager-Teils fertig, müssen diesen Server jedoch weiterhin verwenden, um unseren Agentencomputer zu konfigurieren.

Konfigurieren des SNMP-Agentencomputers

Als echtes Client-Server-System verfügt der Agent-Computer über keine externen Tools, die zum Konfigurieren seines eigenen SNMP-Setups erforderlich sind. Wir können einige Konfigurationsdateien ändern, um einige Änderungen vorzunehmen, aber die meisten Änderungen, die wir vornehmen müssen, werden durch Herstellen einer Verbindung von unserem Verwaltungsserver zu unserem Agentenserver vorgenommen.

Um zu beginnen, müssen wir auf unserem Agentencomputer die Konfigurationsdatei des Dämons mit sudo-Berechtigungen öffnen:

sudo nano /etc/snmp/snmpd.conf

Im Inneren müssen wir einige Änderungen vornehmen. Diese werden hauptsächlich verwendet, um unsere Konfiguration zu booten, damit wir sie von unserem anderen Server aus verwalten können.

Zuerst müssen wir die Direktive "+ agentAddress +" ändern. Derzeit sind nur Verbindungen zulässig, die vom lokalen Computer ausgehen. Wir müssen die aktuelle Zeile auskommentieren und die Zeile darunter auskommentieren, die alle Verbindungen zulässt (wir werden dies bald sperren):

#  Listen for connections from the local system only
agentAddress  udp:127.0.0.1:161
#  Listen for connections on all interfaces (both IPv4 *and* IPv6)

Als nächstes müssen wir vorübergehend eine Zeile + createUser + einfügen. Diese Anweisungen werden normalerweise nicht in dieser Datei gespeichert, aber wir werden sie gleich wieder entfernen, sodass es keine große Rolle spielt.

Der Benutzer, den wir erstellen, heißt "+ bootstrap +" und wird als Vorlage verwendet, um unseren ersten "echten" Benutzer zu erstellen. Die SNMP-Pakete führen dies durch, indem sie die Eigenschaften des Benutzers klonen.

Bei der Definition eines neuen Benutzers müssen Sie den Authentifizierungstyp (MD5 oder SHA) sowie eine Passphrase angeben, die mindestens 8 Zeichen lang sein muss. Wenn Sie vorhaben, für die Übertragung wie wir eine Verschlüsselung zu verwenden, müssen Sie auch das Datenschutzprotokoll (DES oder AES) und optional eine Passphrase für das Datenschutzprotokoll angeben. Wenn keine Passphrase für das Datenschutzprotokoll angegeben wird, wird die Passphrase für die Authentifizierung auch für das Datenschutzprotokoll verwendet.

Unsere Benutzererstellungszeile sieht folgendermaßen aus:

createUser bootstrap MD5 temp_password DES

Nachdem wir einen neuen Benutzer angegeben haben, müssen wir die Zugriffsebene für diesen Benutzer einrichten. Wir werden dies für unseren "+ bootstrap " Benutzer und auch für den neuen Benutzer, den wir erstellen werden, einrichten, der " demo " heißt. Wir erlauben ihnen den Lese- und Schreibzugriff mit der Direktive " rwuser " (die Alternative ist " rouser +" für den schreibgeschützten Zugriff).

Wir werden die Verwendung der Verschlüsselung erzwingen, indem wir nach unserem Benutzer "+ priv +" angeben. Wenn wir den Benutzer auf einen bestimmten Teil der MIB beschränken möchten, können wir die OID der höchsten Ebene angeben, auf die der Benutzer am Ende der Zeile zugreifen soll.

Für unsere Zwecke werden beide Zeilen ziemlich einfach sein:

rwuser bootstrap priv
rwuser  priv

Wenn Sie mit diesen Änderungen fertig sind, speichern und schließen Sie die Datei.

Um diese Änderungen zu implementieren, starten Sie den Dienst + snmpd + neu:

sudo service snmpd restart

Jetzt können wir von dem Computer, auf dem Sie die Verwaltungssoftware installiert haben, eine Verbindung zu unserem Agentenserver herstellen, um unseren regulären Benutzer zu erstellen.

Wir werden dies mit dem "+ snmpusm +" - Tool tun, das für die Benutzerverwaltung verwendet wird. Sie müssen die IP-Adresse Ihres Agentenservers kennen, damit dies ordnungsgemäß funktioniert.

Bevor wir beginnen, werden wir ein wenig über die allgemeine Struktur des Sendens eines SNMP-Befehls sprechen.

Die allgemeine Struktur von SNMP-Befehlen

Wenn Sie die im Paket + snmp + enthaltenen Tools (die Software-Suite + net-snmp +) verwenden, werden Sie einige Muster bemerken, wie Sie die Befehle aufrufen müssen.

Als Erstes müssen Sie sich bei dem SNMP-Dämon authentifizieren, mit dem Sie kommunizieren möchten. Dabei müssen in der Regel einige Informationen bereitgestellt werden. Die häufigsten sind unten:

  • * -v VERSION *: Mit diesem Flag geben Sie die Version des SNMP-Protokolls an, die Sie verwenden möchten. In diesem Handbuch wird Version 3 verwendet.

  • * -c COMMUNITY *: Dieses Flag wird verwendet, wenn Sie für die Authentifizierung Community-Zeichenfolgen im SNMP-v1- oder -v2-Stil verwenden. Da wir eine benutzerbasierte Authentifizierung im v3-Stil verwenden, wird dies nicht benötigt.

  • * -u USER-NAME *: Mit diesem Parameter geben Sie den Benutzernamen an, unter dem Sie sich authentifizieren möchten. Um etwas mit SNMP zu lesen oder zu ändern, müssen Sie sich mit einem bekannten Benutzernamen authentifizieren.

  • * -l LEVEL *: Hiermit wird die Sicherheitsstufe angegeben, mit der Sie eine Verbindung herstellen. Die möglichen Werte sind "+ noAuthNoPriv " für keine Authentifizierung und keine Verschlüsselung, " authNoPriv " für Authentifizierung, aber keine Verschlüsselung und " authPriv +" für Authentifizierung und Verschlüsselung. Der von Ihnen verwendete Benutzername muss so konfiguriert sein, dass er die von Ihnen angegebene Sicherheitsstufe einhält. Andernfalls schlägt die Authentifizierung fehl.

  • * -a PROTOKOLL *: Mit diesem Parameter wird das Authentifizierungs-Protokoll angegeben, das verwendet wird. Die möglichen Werte sind "+ MD5 " oder " SHA +". Dies muss mit den Informationen übereinstimmen, die beim Erstellen des Benutzers angegeben wurden.

  • * -x PROTOKOLL *: Mit diesem Parameter wird das verwendete Verschlüsselungsprotokoll angegeben. Die möglichen Werte sind "+ DES " oder " AES ". Dies muss mit den Informationen übereinstimmen, die beim Erstellen des Benutzers angegeben wurden. Dies ist immer dann erforderlich, wenn die Berechtigungsspezifikation des Benutzers ein " priv +" nach sich zieht, wodurch die Verschlüsselung obligatorisch wird.

  • * -A PASSPHRASE *: Hiermit wird die Authentifizierungs-Passphrase angegeben, die beim Erstellen des Benutzers angegeben wurde.

  • * -X PASSPHRASE *: Dies ist die Verschlüsselungs-Passphrase, die beim Erstellen des Benutzers angegeben wurde. Wenn keiner angegeben wurde, aber ein Verschlüsselungsalgorithmus angegeben wurde, wird die Authentifizierungs-Passphrase verwendet. Dies ist erforderlich, wenn der Parameter "+ -x " angegeben wird oder wenn die Berechtigungsspezifikation eines Benutzers ein " priv +" enthält, das verschlüsselt werden muss.

Mit diesen Informationen können wir beginnen, unsere Befehle zu konstruieren. In Anbetracht dessen, wie wir unseren Bootstrap-Benutzer eingerichtet haben, sehen die Befehle, die wir mit diesem Konto verwenden, folgendermaßen aus:

-u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password

Sie können beispielsweise auf Ihrem Verwaltungsserver testen, ob Ihr Bootstrap-Konto verfügbar ist, indem Sie Folgendes eingeben:

snmpget -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password  1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux target 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64

Die Zeichenfolge "+ 1.3.6.1.2.1.1.1.0 " ist die OID, die für die Anzeige von Systeminformationen verantwortlich ist. Grundsätzlich wird die Ausgabe von " uname -a +" auf dem Remote-System zurückgegeben.

Nachdem wir überprüft haben, dass wir uns ordnungsgemäß bei dem Server authentifizieren können, auf dem der SNMP-Dämon ausgeführt wird, können wir mit der Erstellung unseres regulären Benutzerkontos fortfahren.

Richten Sie das reguläre Benutzerkonto ein

Obwohl wir die Berechtigungen für das Benutzerkonto "+ demo " in unserer Datei " snmpd.conf " festgelegt haben, haben wir diesen Benutzer noch nicht erstellt. Wir werden den Benutzer " bootstrap" als Vorlage für unseren neuen Benutzer verwenden.

Auf dem Management Server können wir den Benutzer aus der Vorlage mit dem Tool + snmpusm + und der folgenden allgemeinen Syntax erstellen:

snmpusm   create

Wenn wir also das verwenden, was wir über die zu übergebenden Authentifizierungsflags wissen, und das bereits vorhandene Benutzerkonto nutzen (+ bootstrap +), können wir einen Benutzer erstellen, der den bereits definierten Benutzerberechtigungen entspricht (+ demo +) .

Der Befehl sieht folgendermaßen aus:

snmpusm -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password  create demo bootstrap

Sie sollten die folgende Nachricht erhalten:

User successfully created.

Wir haben jetzt einen voll funktionsfähigen Benutzer namens "+ demo " auf unserem Remote-Server. Es werden jedoch weiterhin die gleichen Authentifizierungsinformationen wie für das Konto " bootstrap " verwendet. Wir sollten das Passwort in etwas anderes ändern. Dieses Mal verwenden wir das " Demo +" - Konto zur Authentifizierung. Denken Sie daran, Passwörter * müssen * mindestens 8 Zeichen lang sein:

snmpusm -u demo -l authPriv -a MD5 -x DES -A temp_password -X temp_password  passwd temp_password

Sie sollten die folgende Nachricht zurückerhalten:

SNMPv3 Key(s) successfully changed.

Wir können unsere neuen Anmeldeinformationen und Kennwörter testen, indem wir unseren Remote-Server fragen, wie lange der SNMP-Dienst ausgeführt wurde. Wir werden den Befehl + snmpget + verwenden, um einen einzelnen Wert von der anderen Maschine zu erhalten.

Dieses Mal werden wir die zusätzlichen MIB-Definitionen nutzen, die wir heruntergeladen haben. Wir können diese verwenden, um anstelle der numerischen OID-ID nach dem Namen des Werts zu fragen.

snmpget -u demo -l authPriv -a MD5 -x DES -A  -X   sysUpTime.0

Sie sollten einen Wert zurückerhalten, der den letzten Neustart des Remote-SNMP-Daemons darstellt:

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (383018) 1:03:50.18

Erstellen einer Client-Konfigurationsdatei

Zu diesem Zeitpunkt ist Ihnen wahrscheinlich aufgefallen, dass die Authentifizierungsdetails für alle Ihre SNMP-Befehle bei jeder Anforderung relativ statisch sind. Anstatt diese jedes Mal einzugeben, können wir eine clientseitige Konfigurationsdatei erstellen, die die Anmeldeinformationen enthält, mit denen wir eine Verbindung herstellen.

Die Client-Konfigurationsdatei kann an zwei verschiedenen Orten abgelegt werden, je nachdem, wie weit verbreitet Sie sie freigeben möchten.

Wenn Sie Ihre Anmeldeinformationen mit einem gültigen Benutzer auf Ihrem Verwaltungscomputer teilen möchten, können Sie Ihre Konfigurationsdetails in die globale Datei "+ snmp.conf +" einfügen. Sie müssten diese Datei mit sudo-Berechtigungen öffnen:

sudo nano /etc/snmp/snmp.conf

Wenn Sie jedoch die Authentifizierungsdaten nur für Ihren Benutzer definieren möchten, können Sie ein verstecktes "+ .snmp +" - Verzeichnis im Ausgangsverzeichnis Ihres Benutzers erstellen und die Datei dort erstellen:

mkdir ~/.snmp
cd ~/.snmp
nano snmp.conf

Unabhängig davon, wo Sie Ihre Konfiguration platzieren, bleibt der Inhalt gleich.

Die Befehle, die wir zur Authentifizierung verwenden, sind in der folgenden Tabelle aufgeführt. In der rechten Spalte sehen Sie die Direktivennamen, mit denen diese Konfigurationsdetails in der Datei + snmp.conf + festgelegt werden sollen:

Command Flag Description Translated snmp.conf directive

-u

The SNMPv3 username to authenticate as.

defSecurityName

-l authPriv

The security level to authenticate with.

defSecurityLevel authPriv

-a MD5

The authentication protocol to use.

defAuthType MD5

-x DES

The privacy (encryption) protocol to use.

defPrivType DES

-A

The authentication passphrase for the supplied username.

defAuthPassphrase

-X

The privacy passphrase fro the supplied username.

defPrivPassphrase

Mit diesen Informationen können Sie eine geeignete "+ snmp.conf +" - Datei erstellen. Für unseren Guide sieht das so aus:

defSecurityName demo
defSecurityLevel authPriv
defAuthType MD5
defPrivType DES
defAuthPassphrase
defPrivPassphrase

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Jetzt können Sie Befehle absetzen, ohne die Authentifizierungsdetails anzugeben. Sie benötigen nur den SNMP-Befehl, den Host und die Befehlsargumente.

Anstatt zu tippen:

snmpget -u  -l authPriv -a MD5 -x DES -A  -X   sysUpTime.0

Wir können einfach Folgendes eingeben:

snmpget  sysUpTime.0

Wie Sie sehen, reduziert dies die Menge an Informationen, die wir für jede Anfrage benötigen, erheblich.

Entfernen des Bootstrap-Kontos

Nachdem Ihr reguläres Konto korrekt konfiguriert wurde, können wir das "+ bootstrap +" - Konto entfernen, da es ziemlich unsicher ist.

Öffnen Sie auf Ihrem Agentenserver die Datei "+ / etc / snmp / snmpd.conf +" erneut mit sudo-Berechtigungen.

Suchen Sie die beiden zuvor hinzugefügten Zeilen, die auf den Benutzer + bootstrap + verweisen, und kommentieren Sie sie aus (oder entfernen Sie sie):

createUser bootstrap MD5 temp_password DES
rwuser bootstrap priv

Speichern und schließen Sie die Datei.

Starten Sie nun den SNMP-Daemon neu:

sudo service snmpd restart

Dies wird die Empfehlung erfüllen, keine Direktiven "+ createUser " in der normalen Datei " snmpd.conf +" zu haben. Es werden auch Berechtigungen von diesem temporären Benutzer entfernt.

Wenn Sie den Benutzer "+ bootstrap" vollständig aus der usmUserTable entfernen möchten, können Sie dies tun, indem Sie den folgenden Befehl vom Verwaltungsserver aus ausführen:

snmpusm  delete bootstrap

Sie erhalten folgende Antwort:

User successfully deleted.

Fazit

Zu diesem Zeitpunkt sollten Sie über ein vollständig konfiguriertes Client-Server-Setup verfügen, das eine sichere Kommunikation über das SNMP-Protokoll ermöglicht. Sie können problemlos zusätzliche Daemons auf anderen Hosts hinzufügen und den Kontozugriff für die gesamte Infrastruktur konfigurieren.

In der nächsten Anleitung werden wir einige https://www.digitalocean.com/community/tutorials/how-to-use-the-net-snmp-tool-suite-to-manage-and-monitor- Server [die grundlegende Verwendung der net-snmp-Tools], mit denen wir gearbeitet haben. Wir werden zeigen, wie Sie Werte einzeln oder in großen Mengen abrufen und wie Sie Daten ändern.

Related