SNMP (Simple Network Management Protocol) : le protocole de base pour la gestion de réseaux

Des ordinateurs aux serveurs, en passant par les commutateurs, routeurs, imprimantes et autres périphériques, un réseau réunit des appareils très différents. Plus le nombre de participants est important, plus l’effort nécessaire à l’administrateur et les difficultés rencontrées dans la gestion du réseau sont considérables. C’est la raison pour laquelle utiliser des outils de gestion est impératif lorsqu’il s’agit de garantir la fonctionnalité et la sécurité de tous les systèmes sur la durée. L’un des protocoles auquel de nombreuses solutions logicielles ont recours est le Simple Network Management Protocol (SNMP), aujourd’hui considéré comme l’un des principaux protocoles standard. Il est supporté par la quasi-totalité des terminaux.

Le SNMP : qu'est-ce que c’est ?

Après environ 2 ans de développement, la première version officielle du Simple Network Management Protocol, abrégé en SNMP, a été publiée en mai 1990 dans la requête RFC 1157 . Ce protocole réseau fait partie de la suite des protocoles Internet. Il est disponible aujourd'hui dans ses versions SNMPv2 et SNMPv3 , et le fruit des travaux d’un groupe de travail de l’IETF (Internet Engineering Task Force). La fonction principale du protocole SNMP est de permettre une surveillance et une gestion centralisée de toutes les composantes d’un réseau d’ordinateurs. À cet effet, il décrit la structure des paquets de communication nécessaires ainsi que le déroulement de la communication entre le poste central et les différents appareils.

Le transport des paquets doit être assuré à l’aide du protocole UDP sans connexion. Dans ce cadre, les données et les informations transportées sont déposées et enregistrées dans ce qu’on appelle la Management Information Base (MIB) dans une sorte de structure en arborescence.

Explication du SNMP : fonctionnement du Simple Network Management Protocol

La gestion de réseau via SNMP est basée sur un modèle agents/manager. Le poste de gestion central est ici le système depuis lequel l’administrateur surveille et gère les différents participants au réseau. Pour ce faire, un logiciel de gestion permettant l’interrogation SNMP de données ainsi que l’initiation de certaines actions est installé. Les agents, qui sont également des applications, viennent en contrepartie des différents composants réseau. Ils collectent les données pertinentes sur l’hôte cible et les transmettent au poste de gestion. Ils sont par ailleurs en mesure de procéder personnellement à des réglages et de déclencher certaines actions. Les applications agents de ce type sont déjà implémentées par défaut dans la plupart des systèmes Windows et Linux courants, sous la forme par exemple du Daemon snmpd (uniquement sous Linux).

Le protocole SNMP fixe sept types de messages possibles pour la communication entre le manager et l’agent :

  • Requête GET : les requêtes GET sont les messages standard permettant de consulter un ensemble de données défini sur l’appareil souhaité dans le réseau.
  • Requête GETNEXT : ce format de message est utilisé pour interroger les ensembles de données consécutifs, par ex. dans le cas de tableaux.
  • Requête GETBULK : l’application de gestion peut envoyer une requête GETBULK (à partir de la version SNMPv2) afin d’interroger un nombre défini d’ensembles de données avec une seule et même requête. Une requête GETBULK correspond à plusieurs requêtes GETNEXT consécutives.
  • Requête SET : les requêtes SET permettent au manager de modifier un ou plusieurs ensemble(s) de données de l’appareil souhaité dans le réseau ou de déclencher certaines actions. Un exemple de scénario type nécessitant plusieurs modifications simultanément : la configuration d’une adresse IP exigeant l’indication simultanée d’un masque de sous-réseau.
  • Réponse GET : si le manager a demandé un ou plusieurs ensemble(s) de données, ou initié des modifications ou des actions, l’agent répond en envoyant des réponses GET. Ces paquets de réponses contiennent soit les données demandées ou une confirmation des modifications apportées, soit un message d’erreur lorsque les requêtes n'ont pas reçu de réponses convenables.
  • Trap SNMP : les traps SNMP sont des messages envoyés par les agents sans instructions de la part du poste de gestion. Cela se produit lorsqu’un événement imprévu déterminé est survenu. Les traps peuvent communiquer de deux façons différentes sur le type d’événement survenu : la première possibilité, préservant les ressources, consiste à joindre un numéro d’identification unique. Le manager peut se référer à la base de données informative (MIB) déjà évoquée pour en connaître la signification. Avec la seconde possibilité, les traps SNMP fournissent des informations sur l’événement, mais contiennent également les données correspondantes sans avoir à afficher un numéro d’identification spécifique.
  • Requête INFORM : les requêtes INFORM assurent généralement la même fonction que les traps SNMP. Contrairement à ces dernières, les paquets INFORM se démarquent toutefois par l’envoi d’un accusé de réception par le manager. Par conséquent, l’agent peut renvoyer le message si celui-ci n’a pas atteint le manager à la première tentative.

Comme nous l’avons déjà évoqué, le Simple Network Management Protocol impose l’utilisation du protocole de transport sans connexion UDP pour la transmission des paquets de messages énumérés. Ceci permet de garantir une surveillance du réseau qui préserve particulièrement les ressources. Pour l’envoi des différentes requêtes GET aux agents (ainsi que pour les réponses correspondantes), le SNMP utilise le port UDP 161, tandis que les traps SNMP sont envoyés automatiquement à travers le port UDP 162.

Comparatif des différentes versions du protocole SNMP

Initialement, le SNMP ne permettait pas aux gestionnaires de communiquer entre eux et aux agents d’envoyer des messages avec accusé de réception. D’autre part, de nombreuses applications n’étaient que partiellement supportées au début du protocole malgré l’ambition d’être un standard ouvert. C’est pourquoi les correctifs du protocole apparus au cours des années suivantes ont principalement visé à intégrer des mécanismes correspondants dans le Simple Network Management Protocol. Une autre aspiration essentielle du groupe de travail IETF responsable du protocole a été, dès le début, d’accroître la sécurité du processus de gestion. On peut observer ce résultat dans la troisième version. Cette étape d’optimisation du protocole SNMP ainsi que d’autres étapes sont présentées de façon un peu plus détaillée dans la description suivante des différentes versions SNMPv1, SNMPv2 et SNMPv3.

SNMPv1

En tant que première version du protocole de gestion de réseau, la version SNMPv1 pose les bases du modèle gestionnaires/agents et les bases de la communication entre le poste de gestion et les différents agents. Le Simple Network Management Protocol y est décrit comme un protocole simple agissant au niveau de l’application et pouvant s’appuyer sur l’UDP (User Datagram Protocol) et l’Internet Protocol (IP), mais aussi sur des protocoles réseau comparables tels que le DDP AppleTalks (Datagram Delivery Protocol) ou Internet Packet Exchange (IPX). Le seul mécanisme de sécurité intégré est alors l’échange d’un nom de communauté envoyé avec les requêtes correspondantes.

SNMPv2

L’un des problèmes majeurs de la première version du protocole SNMP réside dans le fait que le nom de communauté assure la sécurité n’est transmis qu’en texte clair. C’est la raison pour laquelle les développeurs se sont rapidement penchés sur une nouvelle variante appelée Secure SNMP, dans laquelle cette chaîne serait transmise sous une forme chiffrée. Toutefois, cette version n’a jamais été publiée, car elle a été directement remplacée par la version SNMPv2. D’autres améliorations ont été apportées à la version initiale du protocole : un traitement des erreurs optimisé, la possibilité d’une communication de manager à manager ainsi que des commandes SET plus performantes. Le principal avantage comparé à la version SNMPv1 réside toutefois dans l’implémentation des nouveaux types de messages GETBULK (pour l’interrogation de plusieurs données dans une même requête) et INFORM (pour les accusés de réception des réponses des agents).

SNMPv3

Après la première étape, de moindre ampleur, franchie avec la deuxième version du protocole, l’IETF s’est pleinement consacrée à la sécurité dans la version SNMPv3 et a remplacé le nom de communauté par un nom d’utilisateur et un mot de passe. D’autre part, et contrairement aux versions antérieures, la troisième version du protocole inclut des fonctionnalités permettant de chiffrer la transmission des paquets SNMP. La version SNMPv3 offre en tout trois types d’authentification et de chiffrement différents :

Authentification

Chiffrement

Nom d’utilisateur

Mot de passe

noAuthNoPriv

non

non

oui

non

authNoPriv

oui

non

oui

oui

authPriv

oui

oui

oui

oui

Note

Si le poste de gestion supporte la troisième version du protocole SNMP, celle-ci doit impérativement être préférée aux versions antérieures du protocole. Il est également judicieux d'utiliser le niveau de sécurité SNMPv3 le plus élevé possible (authPriv) si l'appareil le permet.