Dieser Artikel beschäftigt sich mit den Besonderheiten der Überwachung von Netzwerkgeräten mithilfe des SNMPv3-Protokolls. Wir werden über SNMPv3 sprechen, ich werde meine Erfahrungen beim Erstellen vollständiger Vorlagen in Zabbix teilen und zeigen, welche Erfolge bei der Organisation von verteiltem Alarmwesen in einem großen Netzwerk erzielt werden können. Das SNMP-Protokoll ist beim Monitoring von Netzwerkgeräten von zentraler Bedeutung, während Zabbix hervorragend geeignet ist, um eine große Anzahl von Objekten zu überwachen und bedeutende Mengen an eingehenden Metriken zu aggregieren.
Ein paar Worte zu SNMPv3
Lassen Sie uns mit dem Zweck des SNMPv3-Protokolls und den Besonderheiten seiner Verwendung beginnen. Die Aufgaben von SNMP bestehen in der Überwachung von Netzwerkgeräten und dem einfachen Management durch das Senden einfacher Befehle (zum Beispiel das Ein- und Ausschalten von Netzwerkschnittstellen oder das Neustarten von Geräten).
Der Hauptunterschied zwischen dem SNMPv3-Protokoll und seinen Vorgängerversionen sind die klassischen Sicherheitsfunktionen [1-3], und zwar:
- Authentifizierung (Authentication), die bestimmt, dass die Anfrage von einer vertrauenswürdigen Quelle stammt;
- Verschlüsselung (Encryption), um die Offenlegung der übermittelten Daten bei deren Abfangung durch Dritte zu verhindern;
- Integrität (Integrity), d.h. die Garantie, dass das Paket während der Übertragung nicht manipuliert wurde.
SNMPv3 sieht die Verwendung eines Sicherheitsmodells vor, bei dem die Authentifizierungsstrategie für einen bestimmten Benutzer und die Gruppe, zu der er gehört, festgelegt wird (in den vorherigen SNMP-Versionen wurde im Anfragepaket von dem Server zum Überwachungsobjekt nur die "Community", ein Textstring mit einem "Passwort", das im Klartext übertragen wurde, verglichen).
SNMPv3 führt das Konzept von Sicherheitsstufen ein — akzeptablen Sicherheitsniveaus, die die Ausrüstungseinstellungen und das Verhalten des SNMP-Agenten des Überwachungsobjekts bestimmen. Die Kombination aus Sicherheitsmodell und Sicherheitsstufe bestimmt, welcher Sicherheitsmechanismus bei der Verarbeitung des SNMP-Pakets verwendet wird [4].
Die Tabelle beschreibt die Kombinationen von Modellen und Sicherheitsstufen von SNMPv3 (die ersten drei Spalten habe ich im Original belassen):

Dementsprechend werden wir SNMPv3 im Authentifizierungsmodus mit Einsatz von Verschlüsselung nutzen.
Konfiguration von SNMPv3
Die Überwachung von Netzwerkgeräten erfordert eine einheitliche Konfiguration des SNMPv3-Protokolls sowohl auf dem Überwachungsserver als auch auf dem zu überwachenden Objekt.
Lass uns mit der Konfiguration des Cisco-Netzwerkgeräts beginnen, die minimal erforderliche Konfiguration sieht wie folgt aus (zur Konfiguration verwenden wir die CLI, ich habe die Namen und Passwörter vereinfacht, um Verwirrung zu vermeiden):
snmp-server group snmpv3group v3 priv read snmpv3name
snmp-server user snmpv3user snmpv3group v3 auth md5 md5v3v3v3 priv des des56v3v3v3
snmp-server view snmpv3name iso includedDie erste Zeile snmp-server group definiert die Gruppe der SNMPv3-Benutzer (snmpv3group), den Lesezugriff (read) und das Zugriffsrecht der Gruppe snmpv3group auf bestimmte Zweige des MIB-Baums des Überwachungsobjekts (snmpv3name definiert später in der Konfiguration, auf welche Zweige des MIB-Baums die Gruppe snmpv3group zugreifen kann).
Die zweite Zeile snmp-server user definiert den Benutzer snmpv3user, seine Zugehörigkeit zur Gruppe snmpv3group sowie die Anwendung der Authentifizierung md5 (Passwort für md5 — md5v3v3v3) und der Verschlüsselung des (Passwort für des — des56v3v3v3). Natürlich ist es besser, anstelle von des aes zu verwenden, ich führe es hier nur als Beispiel an. Auch bei der Definition des Benutzers kann eine Zugriffssteuerungsliste (ACL) hinzugefügt werden, die die IP-Adressen der Überwachungsserver regelt, die berechtigt sind, dieses Gerät zu überwachen — das ist ebenfalls Best Practice, aber ich möchte unser Beispiel nicht komplizieren.
Die dritte Zeile snmp-server view definiert den Code-Namen, der die Zweige des MIB-Baums snmpv3name festlegt, damit die Benutzergruppe snmpv3group diese abfragen kann. ISO, anstatt eine bestimmte Zweigstellung strikt zu definieren, ermöglicht es der Benutzergruppe snmpv3group, auf alle Objekte des MIB-Baums des Überwachungsobjekts zuzugreifen.
Eine ähnliche Konfiguration des Huawei-Geräts (auch in CLI) sieht wie folgt aus:
snmp-agent mib-view included snmpv3name iso
snmp-agent group v3 snmpv3group privacy read-view snmpv3name
snmp-agent usm-user v3 snmpv3user group snmpv3group
snmp-agent usm-user v3 snmpv3user authentication-mode md5
md5v3v3v3
snmp-agent usm-user v3 snmpv3user privacy-mode des56
des56v3v3v3Nach der Konfiguration der Netzwerkgeräte ist es notwendig, den Zugriff vom Überwachungsserver über das SNMPv3-Protokoll zu überprüfen, ich werde snmpwalk verwenden:
snmpwalk -v 3 -u snmpv3user -l authPriv -A md5v3v3v3 -a md5 -x des -X des56v3v3v3 10.10.10.252 
Ein anschaulicheres Werkzeug zum Abfragen spezifischer OID-Objekte unter Verwendung von MIB-Dateien ist snmpget:
![]()
Nun wenden wir uns der Konfiguration eines typischen Datenelements für SNMPv3 im Rahmen des Zabbix-Templates zu. Zur Vereinfachung und Unabhängigkeit von MIB verwende ich digitale OIDs:

Ich verwende in den Schlüsselbereichen benutzerdefinierte Makros, da sie für alle Datenelemente im Template gleich sein werden. Sie können im Rahmen des Templates festgelegt werden, wenn in Ihrem Netzwerk alle Netzwerkgeräte die gleichen SNMPv3-Parameter haben, oder im Rahmen des Netzwerkobjekts, wenn die SNMPv3-Parameter für verschiedene Überwachungsobjekte unterschiedlich sind:

Bitte beachten Sie, dass das Überwachungssystem nur über den Benutzernamen sowie Passwörter zur Authentifizierung und Verschlüsselung verfügt. Die Benutzergruppe und der MIB-Objektbereich, auf die zugegriffen werden darf, werden am Überwachungsobjekt festgelegt.
Kommen wir nun zur Ausfüllung des Templates.
Das Überwachungstemplate in Zabbix
Eine einfache Regel bei der Erstellung von Überwachungsvorlagen ist, sie so detailliert wie möglich zu gestalten:

Ich lege großen Wert auf die Inventarisierung, um mit einem großen Netzwerk besser arbeiten zu können. Darauf komme ich später zurück, aber jetzt zu den Triggern:

Zur besseren Visualisierung der Trigger sind in ihren Namen systematische Makros {HOST.CONN} integriert, damit im Dashboard im Abschnitt Alarming nicht nur die Gerätenamen, sondern auch die IP-Adressen angezeigt werden, obwohl dies eher eine Frage des Komforts als der Notwendigkeit ist. Um die Erreichbarkeit eines Geräts zu bestimmen, benutze ich neben dem üblichen Echo-Request auch die Überprüfung der Erreichbarkeit des Knotens über das SNMP-Protokoll, wenn das Objekt über ICMP erreichbar ist, aber nicht auf SNMP-Requests antwortet – eine solche Situation kann zum Beispiel bei doppelten IP-Adressen auf unterschiedlichen Geräten aufgrund fehlerhaft konfigurierter Firewalls oder falscher SNMP-Einstellungen bei den Überwachungsobjekten auftreten. Wenn nur die Erreichbarkeit der Knoten über ICMP überprüft wird, könnten bei der Untersuchung von Vorfällen im Netzwerk keine Monitoring-Daten vorliegen, deshalb muss ihr Eingang überwacht werden.
Lassen Sie uns zur Erkennung der Netzwerk-Schnittstellen übergehen – dies ist die wichtigste Überwachungsfunktion für Netzwerkgeräte. Da es auf einem Netzwerkgerät Hunderte von Schnittstellen geben kann, ist es notwendig, unnötige zu filtern, um die Visualisierung nicht zu überladen und die Datenbank nicht unnötig zu belasten.
Ich benutze die Standard-Entdeckungsfunktion für SNMP mit einer großen Anzahl an entdeckbaren Parametern für eine flexiblere Filterung:
discovery[{#IFDESCR},1.3.6.1.2.1.2.2.1.2,{#IFALIAS},1.3.6.1.2.1.31.1.1.1.18,{#IFADMINSTATUS},1.3.6.1.2.1.2.2.1.7] 
Bei einer solchen Entdeckung können die Netzwerkschnittstellen nach ihren Typen, benutzerdefinierten Beschreibungen «description» und den administrativen Status der Ports gefiltert werden. Die Filter und regulären Ausdrücke zur Filterung sehen in meinem Fall folgendermaßen aus:


Bei der Entdeckung werden folgende Schnittstellen ausgeschlossen:
- manuell deaktivierte (adminstatus<>1), dank IFADMINSTATUS;
- ohne textliche Beschreibung, dank IFALIAS;
- mit dem Symbol * in der textlichen Beschreibung, dank IFALIAS;
- die dienstlich oder technisch sind, dank IFDESCR (in meinem Fall werden in den regulären Ausdrücken IFALIAS und IFDESCR mit einem regulären Ausdruck 'alias' geprüft).
Die Vorlage zur Datenerfassung über das SNMPv3-Protokoll ist fast fertig. Lassen Sie uns nicht näher auf die Prototypen der Datenelemente für Netzwerkschnittstellen eingehen, sondern zu den Ergebnissen übergehen.
Ergebnisse der Überwachung
Für den Anfang – Inventarisierung eines kleinen Netzwerks:

Wenn Vorlagen für jede Serie von Netzwerkgeräten erstellt werden, kann eine übersichtliche Komposition von zusammengefassten Daten zu aktuell verwendeter Software, Seriennummern und einer Benachrichtigung für die Reinigungskraft beim Betreten des Serverraums (aufgrund geringer Uptime) erreicht werden. Hier ist ein Auszug aus meiner Liste der Vorlagen:

Und jetzt – das Hauptüberwachungsdashboard mit nach Wichtigkeitsstufen verteilten Triggern:

Dank eines ganzheitlichen Ansatzes für Vorlagen für jedes Gerätemodell im Netzwerk kann innerhalb eines Überwachungssystems ein Werkzeug zur Vorhersage von Fehlfunktionen und Störungen organisiert werden (vorausgesetzt es sind geeignete Sensoren und Metriken vorhanden). Zabbix eignet sich gut zur Überwachung von Netzwerk-, Server- und Dienstinfrastrukturen, und die Wartung der Netzwerkausrüstung veranschaulicht ihre Möglichkeiten.
Liste der verwendeten Quellen:1. Hucaby D. CCNP Routing and Switching SWITCH 300-115 Offizieller Zertifikationsleitfaden. Cisco Press, 2014. S. 325-329.
2. RFC 3410.
3. RFC 3415.
4. SNMP-Konfigurationshandbuch, Cisco IOS XE Release 3SE. Kapitel: SNMP Version 3.
Quelle: habr.com
