Une introduction à SNMP (Simple Network Management Protocol)

introduction

En tant qu’administrateur système, vous collectez en grande partie des informations précises sur vos serveurs et votre infrastructure. Il existe un certain nombre d’outils et d’options pour collecter et traiter ce type d’informations. Bon nombre d’entre eux reposent sur une technologie appelée * SNMP *.

SNMP est synonyme de protocole de gestion de réseau simple. C’est un moyen pour les serveurs de partager des informations sur leur état actuel, ainsi qu’un canal par lequel un administrateur peut modifier des valeurs prédéfinies. Bien que le protocole lui-même soit très simple, la structure des programmes qui implémentent SNMP peut être très complexe.

Dans ce guide, nous vous présenterons les bases du protocole SNMP. Nous examinerons ses utilisations, la manière dont le protocole est généralement utilisé dans un réseau, les différences entre ses versions de protocole, etc.

Concepts de base

SNMP est un protocole implémenté sur la couche application de la pile réseau (cliquez ici pour en savoir plus sur https://www.digitalocean.com/community/tutorials/an-inintroduction-to-networking-terminology-interfaces-and-protocols #NetworkLayers [couches réseau]). Le protocole a été créé dans le but de rassembler des informations de systèmes très différents de manière cohérente. Bien qu’il puisse être utilisé en connexion avec un large éventail de systèmes, la méthode d’interrogation des informations et les chemins d’accès aux informations pertinentes sont normalisés.

Il existe plusieurs versions du protocole SNMP et de nombreux périphériques matériels en réseau implémentent une forme d’accès SNMP. La version la plus largement utilisée est SNMPv1, mais à de nombreux égards, elle n’est pas sécurisée. Sa popularité provient en grande partie de son omniprésence et de sa longue période dans la nature. À moins que vous n’ayez une bonne raison de ne pas le faire, nous vous recommandons d’utiliser SNMPv3, qui fournit des fonctionnalités de sécurité plus avancées.

En général, un réseau profilé par SNMP sera principalement composé de périphériques contenant des agents SNMP *. Un agent est un programme qui peut collecter des informations sur un composant matériel, les organiser en entrées prédéfinies et répondre aux requêtes à l’aide du protocole SNMP.

Le composant de ce modèle qui demande aux agents des informations est appelé un * gestionnaire * SNMP. Ces ordinateurs disposent généralement de données sur tous les périphériques compatibles SNMP de leur réseau et peuvent émettre des demandes pour rassembler des informations et définir certaines propriétés.

Gestionnaires SNMP

Un gestionnaire SNMP est un ordinateur configuré pour interroger l’agent SNMP pour obtenir des informations. Le composant de gestion, lorsqu’il ne traite que de ses fonctionnalités principales, est en réalité beaucoup moins complexe que la configuration du client, car le composant de gestion demande simplement des données.

Le gestionnaire peut être n’importe quelle machine pouvant envoyer des demandes de requête aux agents SNMP avec les informations d’identification correctes. Parfois, cela est implémenté dans le cadre d’une suite de surveillance, tandis que d’autres fois, il s’agit d’un administrateur utilisant de simples utilitaires pour créer une requête rapide.

Presque toutes les commandes définies dans le protocole SNMP (nous les détaillerons plus loin) sont conçues pour être envoyées par un composant de gestionnaire. Ceux-ci incluent + GetRequest +, + GetNextRequest +, + GetBulkRequest +, + SetRequest +, + InformRequest +, et + Response +. En plus de cela, un gestionnaire est également conçu pour répondre aux messages + Trap, et` + Response`.

Agents SNMP

Les agents SNMP effectuent l’essentiel du travail. Ils sont chargés de collecter des informations sur le système local et de les stocker dans un format qui peut être interrogé. Mettre à jour une base de données appelée «base d’informations de gestion» ou * MIB *.

La MIB est une structure hiérarchique prédéfinie qui stocke des informations pouvant être interrogées ou définies. Cette option est disponible pour les requêtes SNMP bien formées provenant d’un hôte authentifié avec les informations d’identification correctes (un gestionnaire SNMP).

L’ordinateur de l’agent configure les gestionnaires qui doivent avoir accès à ses informations. Il peut également servir d’intermédiaire pour signaler des informations sur les périphériques auxquels il peut se connecter et qui ne sont pas configurés pour le trafic SNMP. Cela offre une grande flexibilité dans la mise en ligne de vos composants et l’accès SNMP.

Les agents SNMP répondent à la plupart des commandes définies par le protocole. Ceux-ci incluent + GetRequest +, + GetNextRequest +, + GetBulkRequest +, + SetRequest + et + InformRequest +. De plus, un agent est conçu pour envoyer des messages + Trap +.

Comprendre la base d’informations de gestion

La partie la plus difficile à comprendre du système SNMP est probablement la * MIB *, ou base d’informations de gestion. La MIB est une base de données qui respecte un standard auquel adhèrent le gestionnaire et les agents. Il s’agit d’une structure hiérarchique qui, dans de nombreux domaines, est globalement normalisée, mais également suffisamment flexible pour permettre des ajouts spécifiques à un fournisseur.

La structure de la MIB est mieux comprise comme une arborescence hiérarchique descendante. Chaque branche qui se désactive est identifiée par un numéro d’identification (commençant par 1) et une chaîne d’identification unique pour ce niveau de la hiérarchie. Vous pouvez utiliser les chaînes et les chiffres de manière interchangeable.

Pour faire référence à un nœud spécifique de l’arborescence, vous devez suivre le chemin de la racine non nommée de l’arborescence jusqu’au nœud en question. La lignée de ses identifiants parents (numéros ou chaînes) est enchaînée, en commençant par la plus générale, pour former une adresse. Chaque jonction dans la hiérarchie est représentée par un point dans cette notation, de sorte que l’adresse finit par être une série de chaînes d’ID ou de nombres séparés par des points. Toute cette adresse est appelée identifiant d’objet ou * OID *.

Les fournisseurs de matériel qui incorporent des agents SNMP dans leurs périphériques implémentent parfois des branches personnalisées avec leurs propres champs et points de données. Cependant, il existe des branches MIB standard bien définies et pouvant être utilisées par tout périphérique.

Les branches standard dont nous parlerons seront toutes sous la même structure de branche mère. Cette branche définit les informations conformes à la spécification MIB-2, norme révisée pour les périphériques compatibles.

Le chemin de base de cette branche est:

1.3.6.1.2.1

Cela peut aussi être représenté dans des chaînes comme:

iso.org.dod.internet.mgmt.mib-2

La section + 1.3.6.1 + ou + iso.org.dod.internet + est l’OID qui définit les ressources Internet. Le + 2 + ou + mgmt + qui suit dans notre chemin de base correspond à une sous-catégorie de gestion. Le signe + 1 + ou + mib-2 + définit la spécification MIB-2.

Ceci est une belle ressource pour vous familiariser avec l’arbre MIB. Cette page particulière représente les nœuds de connexion à la jonction dont nous avons parlé. Vous pouvez vérifier ce qui se trouve plus haut dans l’arbre en vérifiant les références «supérieur» et «filiale», respectivement.

Un autre outil similaire est un SNMP Object Navigator fourni par Cisco. Cela peut être utilisé pour explorer la hiérarchie afin de trouver les informations dont vous avez besoin. Un arbre similar est fourni par SolarWinds.

Fondamentalement, si nous voulons interroger nos périphériques pour obtenir des informations, la plupart des chemins commenceront par + 1.3.6.1.2.1 +. Vous pouvez parcourir les interfaces de l’arborescence pour connaître le type d’informations à interroger et à définir.

Commandes de protocole SNMP

Une des raisons pour lesquelles SNMP a connu une telle adoption est la simplicité des commandes disponibles. Il y a très peu d’opérations à mettre en œuvre ou à retenir, mais elles sont suffisamment souples pour répondre aux exigences du protocole en termes d’utilité.

Les PDU ou unités de données de protocole suivantes décrivent les types de messagerie exacts autorisés par le protocole:

  • * Get *: un message Get est envoyé par un responsable à un agent pour lui demander la valeur d’un OID spécifique. Un message de réponse est répondu à cette demande et renvoyé au gestionnaire avec les données.

  • * GetNext *: un message GetNext permet à un gestionnaire de demander le prochain objet séquentiel de la MIB. Vous pouvez ainsi parcourir la structure de la base MIB sans vous soucier des OID à interroger.

  • * Set *: un message Set est envoyé par un gestionnaire à un agent afin de modifier la valeur détenue par une variable sur l’agent. Cela peut être utilisé pour contrôler les informations de configuration ou pour modifier autrement l’état des hôtes distants. C’est la seule opération d’écriture définie par le protocole.

  • * GetBulk *: les demandes de ce responsable à agent fonctionnent comme si plusieurs demandes GetNext avaient été effectuées. La réponse au gestionnaire contiendra autant de données que possible (dans les limites définies par la demande) que le paquet le permet.

  • * Réponse *: Ce message, envoyé par un agent, est utilisé pour renvoyer toute information demandée au responsable. Il sert à la fois de transport des données demandées et d’accusé de réception de la demande. Si les données demandées ne peuvent pas être renvoyées, la réponse contient des champs d’erreur qui peuvent être définis avec des informations supplémentaires. Un message de réponse doit être renvoyé pour l’une des demandes ci-dessus, ainsi que des messages Inform.

  • * Piège *: un message de piège est généralement envoyé par un agent à un responsable. Les interruptions sont des notifications asynchrones en ce sens qu’elles ne sont pas sollicitées par le gestionnaire qui les reçoit. Ils sont principalement utilisés par les agents pour informer les gestionnaires des événements qui se produisent sur leurs périphériques gérés.

  • * Informer *: pour confirmer la réception d’une interruption, un responsable envoie un message Informer à l’agent. Si l’agent ne reçoit pas ce message, il peut continuer à renvoyer le message d’interruption.

Avec ces sept types d’unités de données, SNMP est capable d’interroger et d’envoyer des informations sur vos périphériques en réseau.

Versions de protocole

Le protocole SNMP a subi de nombreux changements depuis son introduction. La spécification initiale a été formulée avec les RFC 1065, 1066 et 1067 en 1988. Par le simple fait qu’elle existe depuis si longtemps, cette version est toujours largement supportée. Cependant, le protocole pose de nombreux problèmes de sécurité, notamment l’authentification en texte brut. Son utilisation est donc vivement déconseillée, notamment lorsqu’elle est utilisée sur des réseaux non protégés.

Les travaux sur la version 2 du protocole ont été lancés en 1993 et ​​offrent des améliorations substantielles par rapport à la norme précédente. Cette version contenait un nouveau modèle de sécurité «basé sur le parti» destiné à résoudre les problèmes de sécurité inhérents à la révision précédente. Cependant, le nouveau modèle n’était pas très populaire car difficile à comprendre et à mettre en œuvre.

De ce fait, quelques «retombées» de la version 2 ont été créées. Chacune d’elles a conservé l’essentiel des améliorations apportées à la version 2, tout en remplaçant le modèle de sécurité. Dans SNMPv2c, l’authentification basée sur la communauté, le même modèle que celui utilisé dans la version 1, a été réintroduite. C’était la version la plus populaire du protocole v2. Une autre implémentation, appelée SNMPv2u, utilise la sécurité basée sur l’utilisateur, bien que cela n’ait jamais été très populaire. Cela permettait les paramètres d’authentification par utilisateur.

En 1998, la troisième version (et la version actuelle) du protocole SNMP est entrée comme proposition de spécification. Du point de vue de l’utilisateur, le changement le plus pertinent a été l’adoption d’un système de sécurité basé sur l’utilisateur. Il vous permet de définir les exigences d’authentification d’un utilisateur selon l’un des modèles suivants:

  • * NoAuthNoPriv *: les utilisateurs qui se connectent à ce niveau ne disposent d’aucune authentification ni de la confidentialité des messages qu’ils envoient et reçoivent.

  • * AuthNoPriv *: Les connexions utilisant ce modèle doivent s’authentifier, mais les messages sont envoyés sans chiffrement.

  • * AuthPriv *: l’authentification est requise et les messages sont cryptés.

En plus de l’authentification, un mécanisme de contrôle d’accès a été mis en place pour fournir un contrôle granulaire sur les branches auxquelles un utilisateur peut accéder. La version 3 permet également de tirer parti de la sécurité fournie par les protocoles de transport, tels que SSH ou TLS.

Conclusion

Maintenant que vous avez une bonne idée du fonctionnement du protocole, vous disposez des bases nécessaires pour implémenter le protocole SNMP dans votre propre infrastructure.

Dans le next guide, nous ' Vous expliquerez comment installer et configurer les composants nécessaires pour tirer parti de SNMP sur vos systèmes.