Einführung
In diesem Lab lernen Sie, wie Sie sicheres Netzwerk-Monitoring auf einem Linux-System mit dem Simple Network Management Protocol Version 3 (SNMPv3) implementieren. Sie konzentrieren sich auf die Konfiguration des SNMP-Agenten (snmpd), um starke Authentifizierung und Verschlüsselung durchzusetzen und sicherzustellen, dass Verwaltungsdaten während der Übertragung geschützt sind und die Unsicherheiten älterer SNMP-Versionen überwunden werden.
Der Prozess beginnt mit der Installation der notwendigen SNMP-Agenten- und Client-Tools auf Ihrem System. Anschließend erstellen Sie einen dedizierten SNMPv3-Benutzer mit sicheren Anmeldeinformationen direkt in der Konfigurationsdatei. Abschließend verwenden Sie das Kommandozeilen-Tool snmpwalk, um sichere Abfragen gegen Ihren konfigurierten Agenten durchzuführen, Ihre Einrichtung zu überprüfen und zu erkunden, wie Sie spezifische Systeminformationen mithilfe von Object Identifiers (OIDs) abrufen können.
SNMP-Agent und Client-Tools installieren
In diesem Schritt installieren Sie die Kernkomponenten, die für die Netzwerküberwachung mit dem Simple Network Management Protocol (SNMP) erforderlich sind. Wir installieren sowohl den SNMP-Agenten, der auf dem zu überwachenden Gerät läuft, als auch die Client-Tools, die zum Abfragen des Agenten verwendet werden.
Zuerst ist es eine übliche Best Practice, die Paketliste Ihres Systems zu aktualisieren. Dies stellt sicher, dass Sie die neuesten und sichersten Softwareversionen erhalten, die in den Repositories verfügbar sind.
Führen Sie den folgenden Befehl aus, um den Paketindex auf Ihrem System zu aktualisieren:
sudo apt update
Sie sehen eine Ausgabe, die zeigt, wie die Paketlisten aus den Ubuntu-Repositories abgerufen werden.
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
...
Fetched 1,587 kB in 2s (924 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
Nachdem Ihre Paketliste aktualisiert wurde, können Sie den SNMP-Agenten (Daemon) und die Client-Utilities installieren. Der Agent wird durch das Paket snmpd bereitgestellt, und die Client-Tools (wie snmpwalk, snmpget) befinden sich im Paket snmp.
Führen Sie den folgenden Befehl aus, um beide Pakete zu installieren. Das Flag -y bestätigt die Installation automatisch, sodass Sie nicht dazu aufgefordert werden.
sudo apt install snmpd snmp -y
Der Installationsprozess lädt die notwendigen Dateien herunter und konfiguriert sie. Sobald er abgeschlossen ist, sollte der Dienst snmpd, der der Agenten-Daemon ist, automatisch gestartet werden.
Um zu überprüfen, ob der SNMP-Agent korrekt läuft, können Sie den Status des Dienstes snmpd mit systemctl überprüfen.
sudo systemctl status snmpd
Die Ausgabe sollte anzeigen, dass der Dienst active (running) ist. Dies bestätigt, dass der SNMP-Agent bereit ist, Anfragen zu empfangen.
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/lib/systemd/system/snmpd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-10-30 08:30:00 UTC; 5s ago
Main PID: 1234 (snmpd)
Tasks: 1 (limit: 4595)
Memory: 9.8M
CPU: 35ms
CGroup: /system.slice/snmpd.service
└─1234 /usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f
Wenn Sie den Statusbildschirm sehen, können Sie
qauf Ihrer Tastatur drücken, um ihn zu beenden und zur Eingabeaufforderung zurückzukehren.
Mit dem laufenden Agenten und den installierten Client-Tools ist Ihre Umgebung nun für die SNMP-Konfiguration und -Kommunikation vorbereitet.
Sicheren SNMPv3-Benutzer in snmpd.conf erstellen
In diesem Schritt konfigurieren Sie den SNMP-Agenten (snmpd) für die Verwendung von SNMPv3, das wesentliche Sicherheitsfunktionen bietet. Im Gegensatz zu älteren Versionen unterstützt SNMPv3 Authentifizierung (zur Überprüfung der Identität des Absenders) und Datenschutz (zur Verschlüsselung der Daten). Dies erreichen Sie, indem Sie einen neuen Benutzer direkt in der Konfigurationsdatei des Agenten, /etc/snmp/snmpd.conf, erstellen.
Bevor Sie Änderungen vornehmen, ist es eine kritische Best Practice, ein Backup der ursprünglichen Konfigurationsdatei zu erstellen. Dies ermöglicht es Ihnen, sie bei Problemen einfach wiederherzustellen.
Führen Sie den folgenden Befehl aus, um die Konfigurationsdatei zu kopieren:
sudo cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
Nun bearbeiten Sie die Hauptkonfigurationsdatei /etc/snmp/snmpd.conf, um einen neuen SNMPv3-Benutzer hinzuzufügen. Wir verwenden für diese Aufgabe den Texteditor nano.
Führen Sie diesen Befehl aus, um die Datei mit sudo-Berechtigungen zu öffnen:
sudo nano /etc/snmp/snmpd.conf
Scrollen Sie ganz zum Ende der Datei und fügen Sie die folgenden Zeilen hinzu. Diese Zeilen definieren einen neuen Benutzer namens labexuser mit starken Authentifizierungs- (SHA) und Datenschutz- (AES) Protokollen.
createUser: Diese Direktive erstellt den SNMPv3-Benutzer.labexuser: Der Benutzername für Ihren SNMPv3-Benutzer.SHA: Das Authentifizierungsprotokoll (sicherer als MD5).AuthPassLabEx: Die Authentifizierungs-Passphrase (muss mindestens 8 Zeichen lang sein).AES: Das Datenschutz- (Verschlüsselungs-) Protokoll (sicherer als DES).PrivPassLabEx: Die Datenschutz-Passphrase (muss mindestens 8 Zeichen lang sein).
rwuser: Diese Direktive gewährt dem Benutzer Lese-/Schreibzugriff auf den gesamten OID-Baum, wenn die Sicherheitsstufepriv(Authentifizierung und Datenschutz) verwendet wird.
Kopieren und fügen Sie den folgenden Konfigurationsblock am Ende der Datei ein:
## --- LabEx SNMPv3 User Configuration ---
## Create a secure SNMPv3 user for monitoring
createUser labexuser SHA "AuthPassLabEx" AES "PrivPassLabEx"
## Grant the new user read-write access with privacy
rwuser labexuser priv
## --- End of Configuration ---
Nachdem Sie den Text hinzugefügt haben, speichern Sie die Datei und beenden Sie nano, indem Sie Ctrl+O drücken, dann Enter, um den Dateinamen zu bestätigen, und schließlich Ctrl+X, um zu beenden.
Sie haben nun erfolgreich einen sicheren Benutzer für die SNMPv3-Kommunikation konfiguriert. Im nächsten Schritt starten Sie den Dienst neu, um diese Änderungen zu übernehmen.
snmpd-Dienst neu starten und überprüfen
In diesem Schritt wenden Sie die neue Benutzerkonfiguration an, die Sie im vorherigen Schritt hinzugefügt haben. Jedes Mal, wenn Sie die Konfigurationsdatei eines laufenden Dienstes wie snmpd ändern, werden die Änderungen nicht automatisch übernommen. Sie müssen den Dienst neu starten, damit er seine Konfigurationsdatei neu liest und die neuen Einstellungen lädt.
Verwenden Sie zuerst den Befehl systemctl, um den Dienst snmpd neu zu starten. Dies stoppt den aktuellen Prozess und startet einen neuen mit der aktualisierten Konfiguration, die Ihren labexuser enthält.
sudo systemctl restart snmpd
Dieser Befehl erzeugt normalerweise keine Ausgabe, wenn er erfolgreich ausgeführt wird.
Als Nächstes ist es entscheidend zu überprüfen, ob der Dienst ohne Probleme neu gestartet wurde. Wenn es Syntaxfehler in Ihrer Datei /etc/snmp/snmpd.conf gab, kann der Dienst möglicherweise nicht gestartet werden. Sie können seinen aktuellen Status überprüfen, um zu bestätigen, dass er korrekt läuft.
sudo systemctl status snmpd
Sie sollten eine Ausgabe sehen, die bestätigt, dass der Dienst active (running) ist. Achten Sie auf den Zeitstempel, der zeigen sollte, dass der Dienst sehr kürzlich gestartet wurde.
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/lib/systemd/system/snmpd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-10-30 08:35:00 UTC; 3s ago
Main PID: 5678 (snmpd)
Tasks: 1 (limit: 4595)
Memory: 10.1M
CPU: 40ms
CGroup: /system.slice/snmpd.service
└─5678 /usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f
Denken Sie daran,
qzu drücken, um die Statusansicht zu verlassen und zum Terminal zurückzukehren.
Die Anzeige des Status active (running) bestätigt, dass Ihre Konfigurationsänderungen gültig waren und der SNMP-Agent nun mit dem neuen labexuser für eine sichere Kommunikation läuft.
Sichere Abfragen mit SNMPv3-Tools durchführen
In diesem Schritt verwenden Sie SNMP-Client-Tools, um sichere Abfragen gegen den SNMP-Agenten auf Ihrem lokalen Rechner durchzuführen. Sie verwenden die labexuser-Anmeldeinformationen, die Sie in snmpd.conf konfiguriert haben, um die sichere SNMPv3-Kommunikation zu testen. Dies ist der Moment, um Ihre sichere Konfiguration in Aktion zu sehen.
SNMP-Befehle für SNMPv3 erfordern mehrere spezifische Flags zur Handhabung von Authentifizierung und Datenschutz. Hier ist eine Aufschlüsselung der Parameter, die Sie verwenden werden:
-v 3: Gibt an, dass Sie SNMP-Version 3 verwenden.-l authPriv: Setzt die Sicherheitsstufe aufauthPriv, was bedeutet, dass die Kommunikation sowohl Authentifizierung als auch Datenschutz (Verschlüsselung) erfordert. Dies ist die höchste Sicherheitsstufe.-u labexuser: Gibt den Benutzernamen an, der der von Ihnen erstelltelabexuserist.-a SHA: Definiert das Authentifizierungsprotokoll als SHA. Dies muss mit dem Protokoll übereinstimmen, das Sie insnmpd.conffestgelegt haben.-A "AuthPassLabEx": Stellt die Authentifizierungs-Passphrase bereit.-x AES: Definiert das Datenschutz- (Verschlüsselungs-) Protokoll als AES. Dies muss ebenfalls mit Ihrer Konfiguration übereinstimmen.-X "PrivPassLabEx": Stellt die Datenschutz-Passphrase bereit.localhost: Der Zielhost, auf dem der SNMP-Agent läuft. In diesem Fall ist es Ihr eigener Rechner.
Zuerst testen wir die Verbindung, indem wir den gesamten Systembaum durchlaufen. Der Befehl snmpwalk durchläuft OID-Bäume und gibt alle Objekte innerhalb eines Zweigs zurück.
Verständnis der OID-Struktur: Object Identifiers (OIDs) verwenden ein hierarchisches Nummerierungssystem. Die OID 1.3.6.1.2.1.1 repräsentiert die "system"-Gruppe in der Standard-SNMP-MIB-II:
1.3.6.1= internet1.3.6.1.2= mgmt (management)1.3.6.1.2.1= mib-2 (standard MIB)1.3.6.1.2.1.1= system group (enthält grundlegende Systeminformationen)
Führen Sie den folgenden Befehl aus, um den System-MIB-Baum zu durchlaufen:
snmpwalk -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1
Wenn der Befehl erfolgreich ist, sehen Sie mehrere systembezogene OIDs und ihre Werte. Dies bestätigt, dass Ihr SNMP-Manager erfolgreich mit dem Agenten (snmpd) authentifiziert wurde und die Abfrage über einen sicheren, verschlüsselten Kanal durchgeführt wurde.
SNMPv2-MIB::sysDescr.0 = STRING: Linux labex-vm 5.15.0-XX-generic #XX-Ubuntu SMP ...
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-TC::linux
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (123456) 0:20:34.56
SNMPv2-MIB::sysContact.0 = STRING: Me <me@example.org>
SNMPv2-MIB::sysName.0 = STRING: labex-vm
SNMPv2-MIB::sysLocation.0 = STRING: Sitting on the Dock of the Bay
...
Eine erfolgreiche Antwort beweist, dass Ihre gesamte SNMPv3-Einrichtung korrekt funktioniert. Wenn Sie falsche Anmeldeinformationen oder Protokolle verwendet hätten, wäre der Befehl mit einem Authentifizierungsfehler fehlgeschlagen.
Spezifische OIDs mit snmpget abfragen
In diesem Schritt lernen Sie, spezifische Systeminformationen mit dem Befehl snmpget abzurufen. Während snmpwalk ganze OID-Bäume durchläuft, ist snmpget dafür konzipiert, spezifische Object Identifiers (OIDs) für eine präzise Informationsbeschaffung abzufragen.
Nachdem Sie nun eine funktionierende und sichere SNMPv3-Einrichtung haben, können Sie spezifische Systeminformationen abfragen. Eine OID verweist eindeutig auf ein verwaltetes Informationselement innerhalb der Management Information Base (MIB) des Geräts.
Erklärung der OID-Hierarchie: Der SNMP-OID-Baum folgt der internationalen Standard-ISO/IEC-Objektidentifikator-Hierarchie:
1 (iso)
└── 3 (org)
└── 6 (dod)
└── 1 (internet)
└── 2 (mgmt)
└── 1 (mib-2)
└── 1 (system)
├── 1.0 (sysDescr)
├── 3.0 (sysUpTime)
├── 4.0 (sysContact)
├── 5.0 (sysName)
└── 6.0 (sysLocation)
Dies erklärt, warum Systeminformationen mit 1.3.6.1.2.1.1 beginnen – es ist der standardisierte Pfad zur Systemgruppe in MIB-II.
Lassen Sie uns eine spezifische und häufig verwendete OID abfragen: die Systembeschreibung. Diese OID ruft eine grundlegende Textbeschreibung des verwalteten Geräts ab.
Verständnis spezifischer OIDs: Innerhalb der Systemgruppe (1.3.6.1.2.1.1) hat jedes Informationselement eine spezifische Unterkennung:
1.3.6.1.2.1.1.1.0= sysDescr.0 (Systembeschreibung)1.3.6.1.2.1.1.3.0= sysUpTime.0 (Systemlaufzeit)1.3.6.1.2.1.1.4.0= sysContact.0 (Systemkontakt)1.3.6.1.2.1.1.5.0= sysName.0 (Systemname)1.3.6.1.2.1.1.6.0= sysLocation.0 (Systemstandort)
Die .0 am Ende zeigt an, dass es sich um einen Skalarwert (einzelne Instanz) und nicht um einen Tabelleneintrag handelt.
Führen Sie den folgenden Befehl aus, um die Systembeschreibung abzufragen:
snmpget -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1.1.0
Die Ausgabe zeigt die Systembeschreibung und bestätigt, dass Ihre SNMPv3-Authentifizierung und der Datenschutz korrekt funktionieren:
iso.3.6.1.2.1.1.1.0 = STRING: "Linux iZrj9ixg5sv0oem6yeu6aqZ 5.15.0-56-generic ..."
Als Nächstes fragen wir die Systemlaufzeit mit der numerischen OID 1.3.6.1.2.1.1.3.0 (die sysUpTime.0 entspricht) ab. Diese OID meldet die Zeit seit der letzten Reinitialisierung des Netzwerkmanagement-Teils des Systems:
snmpget -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1.3.0
Die Ausgabe zeigt die Laufzeit im "Timeticks"-Format, das Hundertstelsekunden darstellt, zusammen mit einem menschenlesbaren Format:
iso.3.6.1.2.1.1.3.0 = Timeticks: (48642) 0:08:06.42
Schließlich können Sie mehrere OIDs in einem einzigen Befehl abfragen, indem Sie sie am Ende auflisten. Holen wir uns sowohl die Systembeschreibung als auch die Kontaktinformationen zusammen mit ihren numerischen OIDs.
Warum numerische OIDs verwenden? In einigen Umgebungen werden symbolische Namen wie sysDescr.0 möglicherweise nicht erkannt, weil:
- MIB-Dateien nicht geladen oder installiert sind
- Die SNMP-Client-Konfiguration nicht die notwendigen MIB-Definitionen enthält
- Die Verwendung numerischer OIDs die Kompatibilität zwischen verschiedenen Systemen sicherstellt
Führen Sie diesen Befehl aus, um mehrere OIDs gleichzeitig abzufragen:
snmpget -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1.1.0 1.3.6.1.2.1.1.4.0
Dies gibt beide Werte in einer einzigen Antwort zurück:
iso.3.6.1.2.1.1.1.0 = STRING: "Linux iZrj9ixg5sv0oem6yeu6aqZ 5.15.0-56-generic ..."
iso.3.6.1.2.1.1.4.0 = STRING: "Me <me@example.org>"
Durch die erfolgreiche Abfrage dieser spezifischen OIDs haben Sie die Kernfähigkeit von SNMP für die sichere Netzwerküberwachung demonstriert. Sie können nun präzise Betriebsdaten von Ihren Geräten auf sichere, authentifizierte und verschlüsselte Weise abrufen.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie sichere Netzwerküberwachung auf einem Linux-System mit SNMPv3 implementieren. Sie begannen mit der Installation der Kernkomponenten, einschließlich des SNMP-Agenten (snmpd) und der Client-Tools (snmp), nachdem Sie das Paket-Repository des Systems aktualisiert hatten. Der Schwerpunkt lag auf der Sicherheit, die Sie durch die Erstellung eines neuen SNMPv3-Benutzers in der Datei snmpd.conf konfiguriert haben, komplett mit starken Authentifizierungs- und Datenschutzprotokollen (Verschlüsselung) zum Schutz der Daten während der Übertragung.
Nach der Einrichtung des sicheren Benutzers haben Sie den Dienst snmpd neu gestartet, um die neue Konfiguration anzuwenden, und überprüft, ob er korrekt ausgeführt wurde. Anschließend haben Sie SNMP-Client-Tools verwendet, um sichere Abfragen gegen den Agenten durchzuführen, wobei Sie sich mit den Anmeldeinformationen des von Ihnen erstellten SNMPv3-Benutzers authentifiziert haben. Sie haben geübt, snmpwalk zum Durchlaufen ganzer MIB-Baumzweige und snmpget zum Abrufen spezifischer Object Identifiers (OIDs) zu verwenden. Dies zeigte, wie Sie Systeminformationen wie Systembeschreibung, Laufzeit und Kontaktdaten sicher abfragen können, sowohl durch umfassende Baum-Walks als auch durch präzise Einzelabfragen.



