Le protocole SNMP
09/02/2005
 Christian CALECA 
Liste des cours

Le principe

Accueil ] [ Le principe ] [ Le protocole ] [ Install.  SNMP. ] [ La MIB ] [ Managers ] [ MRTG intro ] [ MRTG en production ]


Présentation générale

Une machine informatique, quelle que soit sa fonction, a généralement beaucoup de choses à dire. Elle le dit le plus souvent discrètement, si bien que peu de gens l'entendent.

La plupart de ses utilisateurs ne l'écoute pas, sauf quand elle se met à hurler ou à faire la gueule, ce qui est tout de même assez rare. Elle hurle de diverses façons, une alarme sonore, par exemple, lorsqu'elle est en surchauffe, un écran bleu pour Windows, lorsque le noyau se plante irrémédiablement, elle fait la gueule, par exemple, lorsqu'elle refuse simplement de démarrer... Le reste du temps, elle chuchote divers indicateurs d'état, et certaines remarques, qu'elle consigne généralement dans les "logs", sorte de journaux intimes, que, finalement, assez peu de gens consultent.

Les administrateurs sont les seuls à s'y intéresser. Vous serez peut-être surpris de voir à quel point votre machine vous parle. Dans Windows (NTx), vous avez au moins quatre journaux, que vous pouvez rendre plus ou moins verbeux, mais c'est bien sûr sous Linux que vous découvrirez le mieux tout ce qu'une machine a à dire. L'objectif étant ici de parler de SNMP, nous n'entrerons pas plus dans ces détails, sachez, si ce n'est pas encore le cas, que sous Linux, vous avez deux répertoires fortement intéressants :

Il y a enfin des informations dont le système ne se soucie pas obligatoirement, mais qui existent, remontées directement par le "firmware"[1], comme par exemple la température du processeur, la vitesse de rotation des ventilateurs.

Dans tout ça, il y a une foule d'informations qui intéressent les administrateurs et dont ils aimeraient disposer à distance via le réseau. Il est clair que lorsque le parc contient plusieurs centaines de machines, c'est tout de même plus agréable de disposer de toutes les informations en temps réel et de façon centralisée. 

De plus, l'administrateur peut apprécier de pouvoir régler tel ou tel paramètre sans avoir à se déplacer sur le site de la machine concernée.

SNMP est exactement conçu pour répondre à tous ces besoins.

Un agent sur chaque équipement

Chaque équipement que l'on voudra "manager" à distance devra disposer d'un agent SNMP. Cet agent est un serveur, c'est à dire qu'il reste à l'écoute d'un port particulier : le port UDP 161.

La principale fonction de cet agent est de rester à l'écoute des éventuelles requêtes que l'administrateur lui enverra. Lorsqu'il recevra une requête, il y répondra, s'il y est autorisé. Plus exactement, il répondra si la requête est émise par une entité autorisée. Autrement dit, cet agent est là pour écouter des requêtes et y répondre.

L'agent devra éventuellement pouvoir agir sur l'environnement local, si l'administrateur souhaite modifier un paramètre.

Par ailleurs, l'agent SNMP pourra éventuellement émettre des alertes de sa propre initiative, si il a été configuré pour ça. Par exemple, il pourra émettre une alerte si le débit sur une interface réseau atteint une valeur considérée par l'administrateur comme critique. Il peut y avoir une multitude d'alertes possibles, suivant la complexité de l'agent. La température du processeur, le taux d'occupation des disques durs, le taux d'occupation CPU...

On pourra trouver des agents SNMP sur des hôtes (ordinateurs) mais aussi sur des routeurs, des ponts, des switches...

Un "manager" sur la station d'administration

L'administrateur, sur sa machine d'administration, dispose d'un outil dit "manager". C'est avant tout un client, dans la mesure où c'est lui qui envoie les requêtes aux divers agents SNMP du réseau. Il devra aussi disposer d'une fonction serveur, car il doit rester à l'écoute des alertes que les divers équipements sont susceptibles d'émettre à tout moment.

Un petit dessin... Tous les équipements disposent d'un agent SNMP, la station d'administration dispose du "manager"

routeur

Dans un tel cas, l'administrateur peut, en théorie, observer le comportement de la totalité de son réseau depuis sa station d'administration. C'est vrai pour un LAN, c'est aussi vrai pour un WAN (entendez par là que l'équipement à administrer peut se trouver à des centaines de kilomètres).

Les "boîtes noires" (routeurs, switches...) sont équipés éventuellement d'un agent SNMP (c'est une question de prix).

Pour les serveurs et les stations il existe probablement un logiciel à installer, quelque soit le système (sérieux). Pour Linux, c'est "NET-SNMP" (ou "UCD-SNMP"), Windows XP professionel, Windows 2000 "pro" et "server" permettent d'installer un agent SNMP.

Le Manager dispose d'un serveur qui reste à l'écoute, sur le port UDP 162, des éventuels signaux d'alarme.

Pratiquement...

Juste pour donner un exemple, voyons ce que ça donne, si, depuis une machine Linux, nous interrogeons l'agent SNMP d'une station Windows XP.

Nous faisons ça avec un outil dont Linux a le secret, et que nous verrons plus loin. Sa particularité est de produire une sortie strictement illisible pour le non initié. Il s'agit de snmpwalk.

Le but n'est pas ici de tout comprendre mais juste de donner une idée des informations que l'on peut obtenir. La sortie faisant 1577 lignes, nous n'en verrons que quelques unes.

# Quelques infos sur la machine et son OS :
SNMPv2-MIB::sysDescr.0 = STRING: Hardware: x86 Family 15 Model 2 Stepping 4 
            AT/AT COMPATIBLE - Software: Windows 2000 Version 5.1 
            (Build 2600 Uniprocessor Free)
...
# Le type de carte réseau :
IF-MIB::ifDescr.2 = STRING: D-Link DFE-528TX PCI Adapter 
        - Miniport d'ordonnancement de paquets
...
#Quelques infos sur la configuration IP :
IP-MIB::ipAdEntAddr.127.0.0.1 = IpAddress: 127.0.0.1
IP-MIB::ipAdEntAddr.192.168.0.10 = IpAddress: 192.168.0.10
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.192.168.0.10 = INTEGER: 2
IP-MIB::ipAdEntNetMask.127.0.0.1 = IpAddress: 255.0.0.0
IP-MIB::ipAdEntNetMask.192.168.0.10 = IpAddress: 255.255.255.0
...
RFC1213-MIB::ipRouteNextHop.0.0.0.0 = IpAddress: 192.168.0.250
...
#Les ressources de mémoire de masse :
HOST-RESOURCES-MIB::hrStorageDescr.2 = STRING: C:\ Label:  Serial Number d803c0ad
HOST-RESOURCES-MIB::hrStorageDescr.3 = STRING: D:\
HOST-RESOURCES-MIB::hrStorageDescr.4 = STRING: E:\ Label:DATA  Serial Number 10822ea3
HOST-RESOURCES-MIB::hrStorageDescr.5 = STRING: F:\
HOST-RESOURCES-MIB::hrStorageDescr.6 = STRING: G:\ Label:ZIP-100  Serial Number 1de00d03
...
# Les imprimantes installées :
HOST-RESOURCES-MIB::hrDeviceDescr.1 = STRING: HP DeskJet 600
HOST-RESOURCES-MIB::hrDeviceDescr.2 = STRING: HP DeskJet 550C
...
# Les services en cours d'exécution :
HOST-RESOURCES-MIB::hrSWRunName.1516 = STRING: "rundll32.exe"
HOST-RESOURCES-MIB::hrSWRunName.1520 = STRING: "OLFSNT40.EXE"
HOST-RESOURCES-MIB::hrSWRunName.1820 = STRING: "NAVAPW32.EXE"
HOST-RESOURCES-MIB::hrSWRunName.1836 = STRING: "spampal.exe"
HOST-RESOURCES-MIB::hrSWRunName.2016 = STRING: "rundll32.exe"
HOST-RESOURCES-MIB::hrSWRunName.2128 = STRING: "msimn.exe"
...
# Les applications installées !!!
HOST-RESOURCES-MIB::hrSWInstalledName.9 = STRING: "Ethereal 0.9.8"
HOST-RESOURCES-MIB::hrSWInstalledName.10 = STRING: "Exodus Jabber Client (remove only)"
HOST-RESOURCES-MIB::hrSWInstalledName.11 = STRING: "FileZilla (remove only)"
...
HOST-RESOURCES-MIB::hrSWInstalledName.79 = STRING: "SpamPal: BadWords plugin"
HOST-RESOURCES-MIB::hrSWInstalledName.80 = STRING: "SpamPal"
...
# Ainsi que leur date d'installation...
HOST-RESOURCES-MIB::hrSWInstalledDate.9 = STRING: 2002-12-17,10:29:48.0
HOST-RESOURCES-MIB::hrSWInstalledDate.10 = STRING: 2002-12-15,15:53:18.0
HOST-RESOURCES-MIB::hrSWInstalledDate.11 = STRING: 2003-1-9,10:50:28.0
...
HOST-RESOURCES-MIB::hrSWInstalledDate.79 = STRING: 2003-7-2,17:48:24.0
HOST-RESOURCES-MIB::hrSWInstalledDate.80 = STRING: 2003-6-30,17:38:58.0
...

Encore une fois, ce ne sont que des morceaux choisis, il y en a 1577 lignes et toutes ne sont pas si facilement compréhensibles. Nous verrons par la suite que snmpwalk peut être utilisé de façon plus fine, pour n'obtenir qu'un bout de branche.

Comme vous pouvez le remarquer, SNMP peut se révéler être plutôt du genre indiscret. Est-il nécessaire d'indiquer que, dans l'installation par défaut de l'agent SNMP de Windows XP, celui-ci racontera votre vie à n'importe qui ? N'installez pas SNMP sans savoir ce que vous faites et sans vérifier sa configuration par défaut...


[1] firmware : logiciel très proche du matériel, logé dans une mémoire non volatile : ROM, EPROM, etc. dont le but est de gérer basiquement ledit matériel, notamment son initialisation à la mise sous tension. Le "driver" sert à interfacer le système d'exploitation avec le "firmware" d'un composant périphérique, comme une carte réseau, une carte son...

Dans le cas d'une carte mère, le "firmware" peut être assimilé au BIOS, bien qu'à mon sens, le firmware n'en soit qu'un sous ensemble.


Accueil ] [ Suivante ]