# Simple Network Management Protocol

Simple Network Management Protocol (abrégé SNMP), en français « protocole simple de gestion de réseau », est un protocole de communication qui permet aux administrateurs réseau de gérer les équipements du réseau, de superviser et de diagnostiquer des problèmes réseaux et matériels à distance.

## Principe

Les systèmes de gestion de réseau sont basés sur trois éléments principaux : un superviseur (manager), des nœuds (nodes) et des agents. Dans la terminologie SNMP, le synonyme manager est plus souvent employé que superviseur. Le superviseur est la console qui permet à l'administrateur réseau d'exécuter des requêtes de gestion (management). Les agents sont des entités qui se trouvent au niveau de chaque interface, connectant au réseau l'équipement géré (nœud) et permettant de récupérer des informations sur différents objets.
Commutateurs, concentrateurs, routeurs, postes de travail et serveurs (physiques ou virtuels) sont des exemples d'équipements contenant des objets gérables. Ces objets gérables peuvent être des informations matérielles, des paramètres de configuration, des statistiques de performance et autres objets qui sont directement liés au comportement en cours de l'équipement en question. Ces objets sont classés dans une sorte de base de données arborescente définie par l'ISO appelée MIB (« Management Information Base »). SNMP permet le dialogue entre le superviseur et les agents afin de recueillir les objets souhaités dans la MIB.
L'architecture de gestion du réseau proposée par le protocole SNMP est donc fondée sur trois principaux éléments :
* les équipements gérés (managed devices) sont des éléments du réseau (ponts, commutateurs, concentrateurs, routeurs ou serveurs), contenant des « objets de gestion » (managed objects) pouvant être des informations sur le matériel, des éléments de configuration ou des informations statistiques ;
* les agents, c'est-à-dire les applications de gestion de réseau résidant dans un périphérique, sont chargés de transmettre les données locales de gestion du périphérique au format SNMP ;
* les systèmes de gestion de réseau (network management systems notés NMS), c'est-à-dire les consoles à travers lesquelles les administrateurs peuvent réaliser des tâches d'administration.

## En pratique

Concrètement, dans le cadre d'un réseau, SNMP est utilisé :
* pour administrer les équipements ;
* pour surveiller le comportement des équipements.
Une requête SNMP est un datagramme UDP habituellement envoyé par le manager à destination du port 161 de l'agent. Les schémas de sécurité dépendent des versions de SNMP (v1, v2 ou v3). Dans les versions 1 et 2, une requête SNMP contient un nom appelé communauté, utilisé comme un mot de passe. Sur de nombreux équipements, la valeur par défaut de communauté est public ou private. Pour des raisons de sécurité, il convient de modifier cette valeur. Un nom de communauté différent peut être envisagé pour les droits en lecture et ceux en écriture. Les versions 1 et 2 du protocole SNMP comportent de nombreuses lacunes de sécurité. C'est pourquoi les bonnes pratiques recommandent de n'utiliser que la version 3. Cette dernière se base sur le chiffrement DES avec deux mots de passe ou clés sur 64 bits partagés entre l'agent et le manager :
* un pour l'authentification
* un pour le chiffrement
Si un mot de passe venait à être trouvé, ce procédé permet de ne pas compromettre à la fois la sécurité du chiffrement et de l'authentification.
Pour les tâches d'administration de serveurs sensibles via SNMP (reboot, etc.), la version 3 montre tout de même certaines limites en sécurité (chiffrement plutôt faible). Pour pallier cela et ainsi renforcer la sécurité des échanges SNMP, la RFC 3826 traite de l'implémentation d'AES dans ce dernier.
Un grand nombre de logiciels libres et propriétaires utilisent SNMP pour interroger régulièrement les équipements et produire des graphes rendant compte de l'évolution des réseaux ou des systèmes informatiques (Centreon, NetCrunch 5, MRTG, Cacti, Shinken, Nagios, RG System, Zabbix, PRTG, Observium, LibreNMS).
Le protocole SNMP définit aussi un concept d'interruptions (traps en anglais). Une fois défini, si un certain événement se produit, comme le dépassement d'un seuil, l'agent envoie un paquet UDP sur le port 162 du serveur de supervision.

### Autres utilisations

Le protocole SNMP peut aussi être utilisé dans le domaine industriel. SNMP sert à transporter des informations ne concernant pas le réseau informatique et transporte alors des informations applicatives industrielles.
Le SNMP permet également de rétablir l'accès à un pare-feu.