Protocole SNMP

SNMP (Simple Network Management Protocol) est un protocole de communication permettant de gérer/superviser/diagnostiquer les périphériques réseau : switchs, UPS, pare-feux matériels, routeurs, etc.

La plupart des solutions de supervision utilisent ce protocole.

Fonctionnement

SNMP est un datagramme fonctionnant selon un modèle manager-agent via les ports UDP 161 et 162.

Les agents sont les périphériques réseau (switchs, UPS, pare-feux matériels, routeurs, etc.) et le manager envoie des requêtes à l’agent, lequel retourne des réponses

Les agents

Les agents sont des entités qui se trouvent au niveau de chaque interface, connectant au réseau l’équ@ipement et permettant de récupérer des informations sur différents objets issus de la MIB.

L’agent SNMP fournit des OID (Object Identifiers) = des paires clé-valeur uniques.

Les managers

Un manager SNMP (ou Serveur SNMP) peut effectuer des requêtes aux agents avec ces paires clé-valeur à propos d’informations spécifiques.

Les OID SNMP peuvent être lus ou écrits.

Données des périphériques

MIB

Une MIB (Management Information Base) est une base de données arborescente contenues dans chaque équ@ipement où sont stockés ses informations.

Les outils de supervision interrogent cette base.

La MIB est présentées sous forme d’une arborescence où chaque noeud est un identifiant appelé OID (Object Identifier).

OID

L’OID est unique et universel. Il est représenté sous forme d’une énumération de nombres séparés par des “.”. Les nombres sont placés de manière hiérarchique selon une norme établie par des RFC. Pour récolter une information, il suffit de suivre l’arborescence et d’envoyer à l’équ@ipement tous les nombres depuis la racine jusqu’à l’information voulues.

Supervision

SNMP peut être utilisé avec le polling ou les traps.

Pooling

Le polling consiste à envoyer une requête à intervalles réguliers pour obtenir une valeur en retour (vérification active).

Si la requête échoue, il est possible qu’il y ait un problème avec le pér@iphérique.

Note : SNMP est un protocole UDP, il faut réitérer la requête pour confirmer le problème

Traps

Les traps sont envoyés au manager par un agent (ou plusieurs intervalles d’agents) lorqu’un problème doit être signalé (vérification passive).

Il est possible de configurer un pér@iphérique réseau pour qu’il envoie un trap SNMP lors de certains événements (ex: ligne coupée).

Traps host

Quand un événement trap apparait, l’agent sur le pér@iphérique va envoyer le trap vers une destination pré-configurée : le trap host.

Le trap host possède son propre agent SNMP qui va accepter et traiter les traps lorsqu’ils arrivent.

Traps handler

Le traitement des traps est effectué par des trap handlers.

Le trap handler réagit au trap, par exemple em envoyant un mail d’alerte.

Administration et configuration

Configuration

Le fichier de configurations est :

  • /etc/snmp/snmpd.conf

Administration

Pour utiliser SNMP, il existe 2 commandes princ@ipales :

  • snmpwalk : sortir des informations du pér@iphérique
  • snmpget : obtenir des informations sur un OID

Snmpwalk

Help (Extraits)

Extrait de l’aide :

snmpwalk --help (return code: 1)
USAGE: snmpwalk [OPTIONS] AGENT [OID]

Version: 5.7.3
Web: http://www.net-snmp.org/
Email: [email protected]

OPTIONS:
-h, --help display this help message
-H display configuration file directives understood
-v 1|2c|3 specifies SNMP version to use
-V, --version display package version number SNMP Version 1 or 2c specific
-c COMMUNITY set the community string SNMP Version 3 specific
-a PROTOCOL set authentication protocol (MD5|SHA)
-A PASSPHRASE set authentication protocol pass phrase
-e ENGINE-ID set security engine ID (e.g. 800000020109840301)
-E ENGINE-ID set context engine ID (e.g. 800000020109840301)
-l LEVEL set security level (noAuthNoPriv|authNoPriv|authPriv)
-n CONTEXT set context name (e.g. bridge1)
-u USER-NAME set security name (e.g. bert)
-x PROTOCOL set privacy protocol (DES|AES)
-X PASSPHRASE set privacy protocol pass phrase
-Z BOOTS,TIME set destination engine boots/time
General communication options
-r RETRIES set the number of retries
-t TIMEOUT set the request timeout (in seconds)
Exemples

Interrogez les informations système d’un hôte distant à l’aide de SNMPv1 et d’une chaîne de communauté (mot de passe en clair) :

# snmpwalk -v1 -c community @ip

Interrogez les informations système sur un hôte distant par OID à l’aide de SNMPv2 sur un port spécifié :

# snmpwalk -v2c -c community @ip:port oid

Interrogez les informations système sur un hôte distant par OID à l’aide de SNMPv3 et d’une authentification sans chiffrement :

# snmpwalk -v3 -l authNoPriv -u username -a MD5|SHA -A passphrase @ip oid

Interrogez les informations système sur un hôte distant par OID à l’aide de SNMPv3 et d’une authentification avec chiffrement :

# snmpwalk -v3 -l authPriv -u username -a MD5|SHA -A auth_passphrase -x DES|AES -X enc_passphrase @ip oid

Interrogez les informations système sur un hôte distant par OID à l’aide de SNMPv3 sans authentification ni chiffrement :

# snmpwalk -v3 -l noAuthNoPriv -u username @ip oid

Snmpget

Help

L’aide :

USAGE: snmpget [OPTIONS] AGENT OID [OID]...

OPTIONS:
-h, --help display this help message
-H display configuration file directives understood
-v 1|2c|3 specifies SNMP version to use
-V, --version display package version number
SNMP Version 1 or 2c specific
-c COMMUNITY set the community string
Exemples

Informations sur un OID :

# snmpget -v1 -c public <device IP> OID

Récupérer des données à partir d’un hôte distant en fonction de son nom d’hôte, des informations d’authentification et d’un OID :

# snmpget -v 1 -c demopublic test.net-snmp.org system.sysUpTime.0
system.sysUpTime.0 = Timeticks: (586731977) 67 days, 21:48:39.77

Documentation

MAN snmpcmd
https://[email protected]/snmp-simple-network-management-protocol/
http://igm.univ-mlv.fr/~dr/XPOSE2010/supervision/liens.html
https://2001.jres.org/actes/snmpvhttp.pdf
https://doc.ubuntu-fr.org/snmp
https://www.noction.com/blog-francais/snmp-traps-expliques
https://[email protected]/snmp/
https://www.thegeekdiary.com/snmpwalk-command-examples-in-linux/
https://www.paessler.com/fr/whatisansnmpcommunitystring
https://docs.oracle.com/cd/E19469-01/820-6413-13/SNMP_commands_reference_appendix.html
https://snmplabs.thola.io/snmpclitools/snmpget.html
https://net-snmp.sourceforge.io/tutorial/tutorial-5/commands/snmpget.html

> Partager <