Der Autor hat das Internet Archive dazu ausgewählt, im Rahmen des Programms Write for DOnations eine Spende zu erhalten.

Einführung

Ein großer Teil der Tätigkeit eines Systemadministrators besteht darin, genaue Informationen über Ihre Server und Infrastruktur zu sammeln. Es gibt eine Reihe von Tools und Optionen, die zur Sammlung und Verarbeitung dieser Informationen dienen. Viele von ihnen basieren auf einer Technologie namens SNMP.

SNMP steht für Simple Network Management Protokol, einfaches Netzwerkverwaltungs-Protokoll. Es ist eine Methode, mit der Server Informationen über ihren aktuellen Status austauschen können, sowie ein Kanal, über den ein Administrator vordefinierte Werte ändern kann. Während das Protokoll selbst schlank ist, kann die Struktur von Programmen, die SNMP implementieren, schnell an Komplexität zunehmen. Weitere Informationen zu den Grundlagen des SNMP-Protokolls finden Sie in unserem Artikel Eine Einführung in SNMP.

In diesem Tutorial richten Sie die Tools zur Kommunikation mit SNMP ein. Zur Demonstration verwenden Sie zwei Ubuntu 18.04-Server. Einer enthält den SNMP-Manager, der mit dem Agenten zur Implementierung von Netzwerkgeräten spricht. Dieser wird als Manager-Server bezeichnet. Der andere Server enthält den SNMP-Agenten, der auf die Befehle des Manager-Servers reagiert. Dieser wird als Agenten-Server bezeichnet. Sie könnten sich dafür entscheiden, den Agenten auch auf dem Manager-Rechner zu installieren, aber wenn sie getrennt gehalten werden, lässt sich leichter zeigen, welche Funktionalität von jeder Komponente bereitgestellt wird.

Voraussetzungen

Um dieser Anleitung zu folgen, benötigen Sie:

Schritt 1 – Installieren des SNMP-Daemons und der Dienstprogramme

Um herauszufinden, wie SNMP auf einem System implementiert werden kann, beginnen Sie mit der Installation des Daemons und der Tools auf Ihren Ubuntu-Servern.

Melden Sie sich von Ihrem lokalen Rechner aus als Ihr non-root user am Manager-Server an:

  • ssh your_username@manager_server_ip_address

Aktualisieren Sie den Paketindex für den APT-Paketmanager:

  • sudo apt update

Installieren Sie anschließend die SNMP-Software:

  • sudo apt install snmp snmp-mibs-downloader

Das Paket snmp bietet eine Sammlung von Befehlszeilen-Tools zur Ausgabe von SNMP-Anfragen an Agenten. Das Paket snmp-mibs-downloader hilft bei der Installation und Verwaltung von Management Information Base (MIB)-Dateien, die Netzwerkobjekte verfolgen.

Öffnen Sie dann ein neues Terminal auf Ihrem lokalen Rechner und melden Sie sich bei dem Agenten-Server an:

  • ssh your_username@agent_server_ip_address

Aktualisieren Sie auf dem Agenten-Server den Paketindex:

  • sudo apt update

Installieren Sie dann den SNMP-Daemon

  • sudo apt install snmpd

Beachten Sie, dass Sie das Paket snmp-mibs-downloader nicht benötigen, da der Agenten-Server keine MIB-Dateien verwaltet.

Nachdem Sie nun diese Komponenten installiert haben, konfigurieren Sie Ihren Manager-Server.

Schritt 2 — Konfigurieren des SNMP Manager-Servers

Wie bereits erwähnt, wird der Großteil der Arbeit auf dem Agenten-Server stattfinden, sodass Ihre Konfiguration auf dem Manager-Server weniger aufwendig ist. Um sicherzustellen, dass SNMP-Tools die von Ihnen installierten zusätzlichen MIB-Daten verwenden können, müssen Sie nur eine Datei ändern.

Öffnen Sie auf Ihrem Manager-Server die Datei /etc/snmp/snmp.conf in Ihrem Texteditor mit sudo-Berechtigungen. Dieses Tutorial verwendet nano:

  • sudo nano /etc/snmp/snmp.conf

In dieser Datei gibt es einige Kommentare und eine einzige unkommentierte Zeile. Damit der Manager die MIB-Dateien importieren kann, kommentieren Sie die Zeile mibs : aus:

/etc/snmp/snmp.conf
# As the snmp packages come without MIB files due to license reasons, loading
# of MIBs is disabled by default. If you added the MIBs you can reenable
# loading them by commenting out the following line.
#mibs :

Speichern und schließen Sie snmp.conf, indem Sie STRG+X drücken, gefolgt von Y und dann der Eingabetaste, wenn Sie nano verwenden.

Die Konfiguration des Manager-Servers ist nun abgeschlossen, aber Sie müssen diesen Server immer noch verwenden, um bei der Konfiguration Ihres Agenten-Servers zu helfen, was Sie im nächsten Schritt tun werden.

Schritt 2 — Konfigurieren des SNMP Agenten-Servers

Als echtes Client-Server-System verfügt der Agenten-Server über keine der externen Tools, die zur Konfiguration seiner eigenen SNMP-Einrichtung erforderlich sind. Sie können einige Konfigurationsdateien ändern, um einige Änderungen vorzunehmen, aber die meisten Änderungen, die Sie vornehmen müssen, werden durch eine Verbindung zu Ihrem Agenten-Server von Ihrem Management-Server aus vorgenommen.

In diesem Tutorial verwenden Sie Version 3 des SNMP-Protokolls. Im Gegensatz zu SNMPv1 und v2 enthält bei SNMPv3 jede Nachricht Sicherheitsparameter, die verschlüsselt sind. In diesem Schritt konfigurieren Sie die SNMPv3-Authentifizierungs- und Zugriffskontrollregeln.

Um zu beginnen, öffnen Sie auf Ihrem Agenten-Server die Konfigurationsdatei des Daemons mit sudo-Berechtigungen:

  • sudo nano /etc/snmp/snmpd.conf

Sie müssen einige Änderungen darin vornehmen. Diese werden hauptsächlich für das Bootstrapping Ihrer Konfiguration verwendet, damit Sie diese von Ihrem anderen Server aus verwalten können.

Zuerst müssen Sie die Anweisung agentAddress ändern. Momentan ist sie so eingestellt, dass sie nur vom lokalen Rechner ausgehende Verbindungen zulässt. Sie müssen die aktuelle Zeile auskommentieren und die Zeile darunter, die alle Verbindungen ermöglicht, entkommentieren.

/etc/snmp/snmpd.conf
#  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)
agentAddress udp:161,udp6:[::1]:161

Anmerkung: Da das Zulassen aller Verbindungen auf diese Art keine optimale Sicherheitspraxis ist, empfiehlt es sich, diese bald wieder zu sperren, nachdem das Bootstrapping abgeschlossen ist.

Als Nächstes fügen Sie vorübergehend eine Zeile createUser ein. Diese Anweisungen werden normalerweise nicht in dieser Datei aufbewahrt; Sie werden sie in Kürze wieder entfernen.

Der Benutzer, den Sie erstellen, wird als bootstrap bezeichnet und wird als Vorlage verwendet, in der Sie Ihren ersten tatsächlichen Benutzer erstellen. Die SNMP-Pakete führen dies durch das Klonen der Eigenschaften des Benutzers aus.

Wenn Sie einen neuen Benutzer definieren, müssen Sie den Authentifizierungstyp (MD5 oder SHA) angeben und eine Passphrase mit mindestens acht Zeichen bereitstellen. Wenn Sie vorhaben, die Übertragung zu verschlüsseln, wie Sie es in diesem Tutorial tun werden, müssen Sie auch das Datenschutzprotokoll (DES oder AES) und optional eine Datenschutzprotokoll-Passphrase angeben. Wenn keine Passphrase für das Datenschutzprotokoll angegeben wird, wird die Authentifizierungs-Passphrase auch für das Datenschutzprotokoll verwendet.

Fügen Sie diese Zeile createUser am Ende der Datei hinzu:

/etc/snmp/snmpd.conf
...
createUser bootstrap MD5 temp_password DES

Nachdem Sie nun einen neuen Benutzer angegeben haben, können Sie die Zugriffsebene einrichten, die dieser Benutzer haben wird. In diesem Tutorial richten Sie diesen für Ihren Benutzer bootstrap als auch für den neuen Benutzer demo ein, den Sie anlegen werden. Sie werden Ihnen Lese- und Schreibberechtigungen erteilen, indem Sie die Anweisung rwuser verwenden (die Alternative ist rouser für den Nur-Lese-Zugriff).

Sie werden auch die Verwendung der Verschlüsselung erzwingen, indem Sie nach dem Benutzer priv angeben. Wenn Sie den Benutzer auf einen bestimmten Teil der MIB beschränken möchten, können Sie am Ende der Zeile den höchsten Objektidentifikator (OID) angeben, auf den der Benutzer Zugriff haben soll.

Für die Zwecke dieses Tutorials werden Ihre beiden Zeilen wie folgt aussehen:

/etc/snmp/snmpd.conf
...
rwuser bootstrap priv
rwuser demo 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 auf Ihrem Agenten-Server neu:

  • sudo systemctl restart snmpd

Der SNMP-Daemon horcht auf Port :161 auf Verbindungen. Konfigurieren Sie UFW, um Verbindungen vom Manager-Server zu diesem Port zu erlauben:

  • sudo ufw allow from manager_server_ip_address to any port 161

Mehr über UFW erfahren Sie in Einrichten einer Firewall mit UFW unter Ubuntu 18.04.

Nachdem nun der Agenten-Server konfiguriert ist, können Sie sich über den Manager-Server mit Ihrem Agenten-Server verbinden, um die Verbindung zu überprüfen.

Schritt 4 — Verifizieren der Authentifizierung zum Agenten-Server

In diesem Schritt führen Sie einen Test durch, um sicherzustellen, dass Sie mit Ihrem Konto bootstrap eine Verbindung zum Agenten-Server herstellen können. Zuvor wird in diesem Tutorial jedoch ein wenig über die allgemeine Struktur des Sendens eines SNMP-Befehls gesprochen.

Wenn Sie die in dem Paket snmp (die net-snmp Software Suite) enthaltenen Tools verwenden, gibt es einige Muster, wie Sie die Befehle aufrufen müssen. Als Erstes müssen Sie sich bei dem SNMP-Daemon authentifizieren, mit dem Sie kommunizieren möchten. Dazu müssen in der Regel einige Informationen bereitgestellt werden. Die häufigsten sind die folgenden:

  • -v: Dieses Flag wird zur Angabe der Version des SNMP-Protokolls verwendet, die Sie verwenden möchten. Dieses Tutorial verwendet v3.
  • -c: Dieses Flag wird verwendet, wenn Sie SNMP v1 oder v2-ähnliche Community-Strings zur Authentifizierung verwenden. Da Sie eine benutzerbasierte Authentifizierung im Stil von v3 verwenden, brauchen Sie dies nicht zu tun.
  • -u: Dieser Parameter wird verwendet, um den Benutzernamen anzugeben, als den Sie sich authentifizieren möchten. Um mit SNMP etwas zu lesen oder zu ändern, müssen Sie sich mit einem bekannten Benutzernamen authentifizieren.
  • -l: Dieser Parameter wird verwendet, um die Sicherheitsebene anzugeben, mit der Sie sich verbinden. Die möglichen Werte sind noAuthNoPriv für keine Authentifizierung und keine Verschlüsselung, authNoPriv für die Authentifizierung aber keine Verschlüsselung sowie authPriv für die Authentifizierung und Verschlüsselung. Der Benutzername, den Sie verwenden, muss so konfiguriert sein, dass er auf der von Ihnen angegebenen Sicherheitsstufe funktioniert, sonst wird die Authentifizierung nicht erfolgreich sein.
  • -a: Dieser Parameter wird verwendet, um das verwendete Authentifizierungsprotokoll anzugeben. Die möglichen Werte sind MD5 oder SHA. Dies muss mit den Informationen übereinstimmen, die beim Anlegen des Benutzers angegeben wurden.
  • -x: Dieser Parameter wird verwendet, um das verwendete Verschlüsselungsprotokoll anzugeben. Die möglichen Werte sind DES oder AES. Dies muss mit den Informationen übereinstimmen, die beim Anlegen des Benutzers angegeben wurden. Dies ist immer dann erforderlich, wenn die Berechtigungsspezifikation des Benutzers priv dahinter enthält, wodurch die Verschlüsselung obligatorisch wird.
  • -A: Wird verwendet, um die Authentifizierungs-Passphrase anzugeben, die bei der Erstellung des Benutzers angegeben wurde.
  • -X: Dies ist die Verschlüsselungs-Passphrase, die bei der Erstellung des Benutzers angegeben wurde. Wenn keine Passphrase 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 dahinter hat, das eine Verschlüsselung erfordert.

Anhand dieser Informationen können Sie Ihre Befehle erstellen. In Anbetracht der Art und Weise, wie Sie Ihren Benutzer bootstrap einrichten, werden die Befehle, die Sie mit diesem Konto verwenden, wie folgt aussehen:

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

Testen Sie von Ihrem Manager-Server aus, um sicherzustellen, dass Ihr Konto bootstrap verfügbar ist. Geben Sie Folgendes ein, um die Systeminformationen für den Agenten-Server anzuzeigen:

  • snmpget -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address 1.3.6.1.2.1.1.1.0

Die Zeichenfolge 1.3.6.1.2.1.1.1.0 ist die OID, die für die Anzeige von Systeminformationen verantwortlich ist. Sie gibt die Ausgabe von uname -a auf dem Remote-System zurück.

Dadurch erhalten Sie folgenden Output:

Output
SNMPv2-MIB::sysDescr.0 = STRING: Linux agent 4.15.0-66-generic #75-Ubuntu SMP Tue Oct 1 05:24:09 UTC 2019 x86_64

Nachdem Sie nun überprüft haben, dass Sie sich auf dem Server, auf dem der SNMP-Daemon ausgeführt wird, authentifizieren können, können Sie mit der Erstellung Ihres regulären Benutzerkontos fortfahren.

Schritt 5 — Einrichten des regulären Benutzerkontos

Obwohl Sie die Berechtigungen für das Benutzerkonto demo in der Datei snmpd.conf angegeben haben, haben Sie diesen Benutzer noch nicht wirklich erstellt. In diesem Schritt verwenden Sie den Benutzer bootstrap als Vorlage für Ihren neuen Benutzer. Sie werden dies mit dem Tool snmpusm tun, das für die Benutzerverwaltung verwendet wird.

Auf dem Manager-Server können Sie den Benutzer aus der Vorlage mithilfe des Tools snmpusm und der folgenden allgemeinen Syntax anlegen.

snmpusm authentication_info agent_server_ip_address create new_user existing_user

Mit dem, was Sie über die zu übermittelnden Authentifizierungs-Flags wissen, und unter Nutzung des bereits vorhandenen Benutzerkontos (bootstrap) können Sie einen Benutzer erstellen, der zu den bereits definierten Benutzerrechten passt (demo).

Der Befehl sieht wie folgt aus:

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

Sie erhalten die folgende Meldung:

Output
User successfully created.

Sie haben nun einen voll funktionsfähigen Benutzer namens demo auf Ihrem Agenten-Server. Es verwendet jedoch nach wie vor die gleichen Authentifizierungsinformationen wie das Konto bootstrap. Um die Sicherheit zu erhöhen, können Sie das Passwort ändern. Dieses Mal verwenden Sie das Konto demo zur Authentifizierung. Denken Sie daran, dass Passwörter mindestens acht Zeichen lang sein müssen:

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

Sie erhalten die folgende Meldung zurück:

Output
SNMPv3 Key(s) successfully changed.

Sie können Ihre neuen Berechtigungsnachweise und Ihr Passwort testen, indem Sie den Agenten-Server fragen, wie lange der SNMP-Dienst bereits ausgeführt wird. Sie verwenden den Befehl snmpget, um einen einzelnen Wert von dem Agenten-Server zu erhalten.

Nutzen Sie diesmal die von Ihnen heruntergeladenen zusätzlichen MIB-Definitionen, um den Wert nach Namen anstelle der numerischen ID von OID zu erfragen.

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

Sie erhalten einen Wert zurück, der das letzte Mal repräsentiert, als der entfernte SNMP-Daemon neu gestartet wurde:

Output
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (53309) 0:08:53.09

Sie haben nun ein funktionierendes Benutzerkonto namens demo. Im nächsten Schritt vereinfachen Sie das Arbeiten mit SNMP-Befehlen durch die Konfiguration des Client.

Schritt 6 – Erstellen einer Client-Konfigurationsdatei

Sie haben zu diesem Punkt wahrscheinlich bemerkt, dass die Authentifizierungsdetails für alle Ihre SNMP-Befehle bei jeder Anfrage ziemlich statisch sind. Anstatt diese jedes Mal einzugeben, können Sie eine clientseitige Konfigurationsdatei erstellen, die die Berechtigungsnachweise enthält, mit denen Sie sich verbinden.

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

Wenn Sie Ihre Anmeldedaten für jeden gültigen Benutzer auf Ihrem Management-Rechner freigeben möchten, können Sie Ihre Konfigurationsdetails in der globalen Datei snmp.conf auf dem Manager-Server ablegen. Sie müssten diese Datei mit sudo-Berechtigungen öffnen:

  • sudo nano /etc/snmp/snmp.conf

Wenn Sie jedoch die Berechtigungsnachweise für die Authentifizierung nur für Ihren Benutzer definieren möchten, können Sie ein verstecktes Verzeichnis .snmp im Stammverzeichnis Ihres Benutzers auf dem Manager-Server erstellen und die Datei dort anlegen:

  • mkdir ~/.snmp
  • nano ~/.snmp/snmp.conf

Unabhängig von Ihrer Entscheidung, wo Sie Ihre Konfiguration ablegen, bleibt der Inhalt derselbe.

Die Befehle, die Sie zur Authentifizierung verwenden, sind in der folgenden Tabelle aufgeführt. In der rechten Spalte sehen Sie die Namen der Anweisungen, die zur Erstellung dieser Konfigurationsdetails innerhalb der Datei snmp.conf verwendet werden:

Befehls-Flag Beschreibung Übersetzte snmp.conf-Anweisung
-u username Der SNMPv3-Benutzername, mit dem sich authentifiziert wird. defSecurityName username
-l authPriv Die Sicherheitsstufe, mit der sich authentifiziert wird. defSecurityLevel authPriv
-a MD5 Das zu verwendende Authentifizierungsprotokoll. defAuthType MD5
-x DES Das zu verwendende Datenschutz (Verschlüsselungs)-Protokoll. defPrivType DES
-A passphrase Die Authentifizierungs-Passphrase für den angegebenen Benutzernamen. defAuthPassphrase passphrase
-X passphrase Die Datenschutz-Passphrase aus dem angegebenen Benutzernamen. defPrivPassphrase passphrase

Anhand dieser Informationen können Sie eine entsprechende Datei snmp.conf erstellen. Für diesen Leitfaden sieht sie wie folgt aus:

snmp.conf
defSecurityName demo
defSecurityLevel authPriv
defAuthType MD5
defPrivType DES
defAuthPassphrase new_password
defPrivPassphrase new_password

Wenn Sie dies abgeschlossen haben, speichern und schließen Sie die Datei.

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

Anstatt einzugeben:

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

Können Sie eingeben:

  • snmpget agent_server_ip_address sysUpTime.0

Wie Sie sehen können, reduziert sich dadurch die Menge der Informationen, die Sie in jeder Anfrage bereitstellen müssen. Als Nächstes entfernen Sie das Konto bootstrap, um die Netzwerksicherheit zu erhöhen.

Schritt 7 – Entfernen des Kontos Bootstrap

Nachdem Ihr reguläres Konto nun korrekt konfiguriert ist, können Sie das unsichere Konto bootstrap entfernen.

Öffnen Sie auf Ihrem Agenten-Server erneut die Datei /etc/snmp/snmpd.conf mit sudo-Berechtigungen.

  • sudo nano /etc/snmp/snmpd.conf

Suchen und kommentieren (oder entfernen) Sie beide Zeilen aus, die Sie zuvor hinzugefügt haben und die auf den Benutzer bootstrap verweisen:

/etc/snmp/snmpd.conf
...
#createUser bootstrap MD5 temp_password DES
#rwuser bootstrap priv
...

Speichern und schließen Sie die Datei.

Starten Sie nun den SNMP-Daemon neu:

  • sudo systemctl restart snmpd

Damit wird die Empfehlung erfüllt, keine Anweisung createUser in der normalen Datei snmpd.conf zu haben. Hierdurch werden auch Berechtigungen von dem temporären Benutzer entfernt.

Wenn Sie den Benutzer bootstrap vollständig aus der usmUserTable entfernen möchten, können Sie dies tun, indem Sie diesen Befehl vom Manager-Server aus erteilen:

  • snmpusm agent_server_ip_address delete bootstrap

Sie erhalten die folgende Antwort:

Output
User successfully deleted.

Zusammenfassung

Zu diesem Zeitpunkt haben Sie eine vollständig konfigurierte Client-Server-Einrichtung, die über das SNMP-Protokoll sicher kommunizieren kann. Sie können nun zusätzliche Daemons auf anderen Hosts hinzufügen und den Kontozugriff über Ihre gesamte Infrastruktur konfigurieren.

Für weitere Studien können Sie unser Tutorial Verwenden der Net-SNMP Tool-Suite zur Verwaltung und Überwachung von Servern verwenden, um mehr über SNMP-Tools und ihre Verwendung zum Abrufen von Werten nacheinander oder in großen Mengen sowie zum Ändern von Daten zu erfahren.

0 Comments

Creative Commons License