SNMP signifie Simple Network Management Protocol. Le mot « simple » est sans doute le plus bel euphémisme de l'histoire des réseaux : un administrateur qui découvre une MIB de constructeur de quatre mille lignes le comprend assez vite. Pourtant, SNMP est partout. Votre commutateur le parle, votre onduleur aussi, comme l'imprimante du deuxième étage, la carte de gestion du serveur, la baie de stockage et le NAS du service comptable. Pour tous ces équipements sur lesquels on n'installera jamais d'agent, c'est souvent la seule fenêtre disponible.
01Le principe en une minute
Deux rôles. L'agent tourne sur l'équipement et répond aux questions. Le gestionnaire, votre outil de supervision, pose les questions. Tout passe en UDP, sans connexion.
| Opération | Sens | Port | Usage |
|---|---|---|---|
| GET | Gestionnaire vers agent | 161/udp | Lire une valeur précise |
| GETNEXT, GETBULK | Gestionnaire vers agent | 161/udp | Parcourir un tableau, ce que fait un walk |
| SET | Gestionnaire vers agent | 161/udp | Modifier une valeur. À désactiver. |
| TRAP, INFORM | Agent vers gestionnaire | 162/udp | L'équipement signale un événement de lui-même |
L'immense majorité de la supervision repose sur la scrutation : toutes les minutes, le gestionnaire lit les mêmes valeurs et en déduit l'état et les tendances. Les traps sont un complément utile, rarement un socle (voir les pièges plus bas).
02OID et MIB : l'annuaire
Chaque valeur lisible porte une adresse unique, l'OID, une suite de nombres qui
décrit un chemin dans un arbre mondial. Cet arbre est partagé par toute l'industrie : la branche
1.3.6.1.2.1 contient les objets standard, communs à tous les constructeurs, et la
branche 1.3.6.1.4.1 attribue un numéro à chaque entreprise qui en a fait la demande,
pour ses objets propres.
1.3.6.1.2.1.1.1.0 sysDescr description de l'equipement 1.3.6.1.2.1.1.3.0 sysUpTime temps depuis le dernier redemarrage de l'agent 1.3.6.1.2.1.1.5.0 sysName nom de l'equipement 1.3.6.1.2.1.2.2 ifTable interfaces reseau, compteurs 32 bits 1.3.6.1.2.1.31.1.1 ifXTable interfaces reseau, compteurs 64 bits 1.3.6.1.2.1.25 HOST-RESOURCES-MIB : disques, memoire, processus 1.3.6.1.2.1.33 UPS-MIB onduleurs, normalise 1.3.6.1.2.1.43 Printer-MIB imprimantes, consommables compris 1.3.6.1.4.1.9 Cisco 1.3.6.1.4.1.318 APC, onduleurs et PDU 1.3.6.1.4.1.674 Dell, dont les cartes iDRAC
La MIB est le dictionnaire qui traduit ces nombres en noms et en types :
IF-MIB::ifHCInOctets plutôt que 1.3.6.1.2.1.31.1.1.1.6. Les MIB standard
sont fournies avec les outils ; celles des constructeurs se téléchargent sur leurs sites, souvent
cachées derrière trois menus et un formulaire.
Oui, tout le monde a fait la blague, et non, aucun administrateur n'a jamais réussi à oublier une MIB de constructeur après l'avoir lue. C'est même plutôt l'inverse.
03Trois versions, une seule à retenir
| Version | Authentification | Chiffrement | Verdict |
|---|---|---|---|
| v1 (1988) | Une « communauté », mot de passe en clair | Aucun | À proscrire |
| v2c | Communauté en clair | Aucun | Acceptable sur un réseau d'administration isolé |
| v3 | Utilisateur, SHA | AES | La seule à utiliser dès que possible |
La v2c apporte deux améliorations décisives sur la v1 : les compteurs 64 bits et la lecture en
masse (GETBULK). Elle reste très répandue parce que de nombreux équipements anciens ne savent rien
faire d'autre. La v3 ajoute ce qui manquait, l'identité et le chiffrement, avec trois niveaux de
sécurité dont un seul mérite d'être retenu : authPriv, authentifié et chiffré.
04L'interroger à la main
# depot non-free necessaire pour le telechargeur de MIB standard apt install snmp snmp-mibs-downloader # Debian desactive le chargement des MIB par defaut : le reactiver sed -i 's/^mibs :/# mibs :/' /etc/snmp/snmp.conf
# v3, authentifie et chiffre : la forme a utiliser snmpget -v3 -l authPriv -u supervision -a SHA -A 'mot-de-passe-auth' \ -x AES -X 'mot-de-passe-chiffrement' 10.10.0.2 SNMPv2-MIB::sysDescr.0 # v2c, sur un equipement plus ancien snmpget -v2c -c communaute-secrete 10.10.0.2 SNMPv2-MIB::sysUpTime.0 # parcourir les interfaces, en masse snmpbulkwalk -v2c -c communaute-secrete 10.10.0.2 IF-MIB::ifXTable # tout ce que l'equipement expose : souvent tres long, mais instructif snmpbulkwalk -v2c -c communaute-secrete 10.10.0.2 . > inventaire.txt # traduire un OID numerique trouve dans une doc ou un journal snmptranslate 1.3.6.1.2.1.33.1.2.3.0
Avant de chercher un modèle de supervision, faites un walk complet et lisez-le en diagonale. On y découvre régulièrement des températures, des tensions ou des états de ventilateurs que la documentation du constructeur ne mentionne nulle part.
05Ce que SNMP sait et que vos agents ignorent
Un agent Zabbix ou un node_exporter voit le système d'exploitation. Il ne voit ni le réseau autour de la machine, ni le matériel sous elle, ni tous les équipements qui n'ont pas de système d'exploitation accessible. C'est là que SNMP devient indispensable.
| Information | Où la lire | Pourquoi c'est précieux |
|---|---|---|
| Erreurs et rejets par port de commutateur | IF-MIB, ifInErrors et ifInDiscards | Un câble abîmé ou un problème de négociation ralentit tout sans jamais rien casser franchement |
| Sur quel port se trouve une machine | BRIDGE-MIB et Q-BRIDGE-MIB, table des adresses MAC | Retrouver un serveur dans une baie mal documentée, sans y aller |
| Autonomie restante de l'onduleur | UPS-MIB, upsEstimatedMinutesRemaining | Savoir combien de temps il reste pour éteindre proprement, pas seulement que le secteur est coupé |
| Consommation par prise de PDU | MIB du constructeur | Prévoir la capacité électrique d'une baie, chiffrer l'empreinte énergétique d'un client |
| Ventilateurs, alimentations, RAID matériel | Carte de gestion, iDRAC, iLO, IPMI | Ces informations restent lisibles même quand le système du serveur est planté |
| Consommation PoE | POWER-ETHERNET-MIB | Comprendre pourquoi la borne Wi-Fi ou la caméra du parking redémarre |
| Niveau des consommables | Printer-MIB, prtMarkerSuppliesLevel | Le ticket « plus de toner » ouvert avant que quelqu'un ne le découvre |
| Disques et volumes d'un NAS | MIB du constructeur | Les NAS de bureau sont les grands oubliés de la supervision, et rarement sauvegardés |
| Sondes de température et d'humidité | Boîtiers dédiés, souvent SNMP seulement | La climatisation du local technique tombe en panne un vendredi soir d'août, toujours |
Le cas des cartes de gestion mérite d'insister : un serveur dont le système a planté ne répond plus à aucun agent, mais sa carte iDRAC ou iLO, alimentée séparément, continue de dire si c'est une alimentation, un ventilateur ou une barrette mémoire. C'est l'information qui décide si l'on envoie un technicien avec une pièce, ou sans.
06Les pièges classiques
Les compteurs 32 bits qui tournent trop vite
Les compteurs d'octets de la table ifTable font 32 bits : ils reviennent à zéro
après environ 4,3 Go. À 1 Gb/s, cela arrive en 34 secondes. Scrutés toutes les
minutes, ils produisent des débits absurdes. Utilisez toujours les compteurs 64 bits de
ifXTable, préfixés HC pour high capacity :
ifHCInOctets et ifHCOutOctets.
Les index qui changent
Une interface est désignée par un numéro, ifIndex, que certains équipements
renumérotent après un redémarrage ou l'ajout d'un module. Les outils de supervision modernes
retrouvent les interfaces par leur nom grâce à la découverte ; méfiez-vous des configurations qui
pointent un OID avec un index écrit en dur.
Les traps qui se perdent
Un trap est un datagramme UDP envoyé une seule fois. S'il se perd, ou si le gestionnaire redémarre à ce moment, personne ne le saura. Et l'équipement qui tombe complètement n'envoie évidemment aucun trap pour le dire. Les traps servent à réagir plus vite ; la scrutation régulière reste le filet de sécurité.
Un agent qui ment par omission
Certains agents SNMP répondent avec des valeurs figées quand le sous-système qu'ils décrivent ne répond plus : une température qui ne bouge plus depuis trois jours est rarement une bonne nouvelle. Une alerte sur l'absence de variation vaut parfois autant qu'une alerte sur un seuil.
07SNMP dans vos outils de supervision
| Outil | Comment | Commentaire |
|---|---|---|
| Zabbix | Interface SNMP sur l'hôte, modèles « by SNMP » | Le plus complet : des centaines de modèles, découverte des interfaces, réception des traps |
| Prometheus | snmp_exporter | Puissant, mais chaque MIB se compile avec le générateur fourni : prévoir du temps |
| Telegraf et InfluxDB | Greffon d'entrée snmp | Simple pour quelques valeurs ciblées |
| LibreNMS | Outil dédié, découverte automatique | Excellent si le réseau est le sujet principal |
| Beszel et Uptime Kuma | Non, ou presque | Kuma sait lire une valeur SNMP isolée ; pour un parc d'équipements, passez à un autre outil |
Côté Linux, un serveur peut lui-même répondre en SNMP avec snmpd. Cela n'a guère
d'intérêt si un agent de supervision y tourne déjà ; c'est en revanche utile pour un outil qui ne
sait parler que SNMP.
apt install snmpd systemctl stop snmpd # l'utilisateur v3 se declare snmpd arrete : la ligne est convertie en cle au demarrage echo 'createUser supervision SHA "mot-de-passe-auth" AES "mot-de-passe-chiffrement"' \ >> /var/lib/snmp/snmpd.conf # /etc/snmp/snmpd.conf : ecouter sur le reseau d'administration, lecture chiffree seulement # agentaddress udp:10.10.0.21:161 # rouser supervision priv systemctl start snmpd
08Sécurité : la partie qui fâche
SNMP a longtemps été l'une des premières portes d'entrée des tests d'intrusion, et il l'est
encore. Une communauté v2c laissée sur sa valeur d'usine, public, livre la
configuration de l'équipement, ses interfaces, ses tables de routage et parfois ses comptes. Avec
private en écriture, on peut la modifier.
- Jamais exposé sur Internet. Un agent SNMP joignable de l'extérieur est aussi un amplificateur d'attaques par déni de service : une petite requête GETBULK produit une grosse réponse, envoyée vers l'adresse usurpée de la victime.
- v3 en authPriv partout où l'équipement le permet, v2c seulement sur un réseau d'administration cloisonné, avec une communauté longue et unique par site.
- Lecture seule. Désactivez l'écriture sur tous les équipements : la supervision n'en a pas besoin, et c'est une source d'ennuis sans contrepartie.
- Liste d'accès par adresse source sur chaque équipement : seuls les collecteurs, serveurs ou proxies de supervision, ont le droit d'interroger.
- Changer les valeurs d'usine dès la mise en service. Les communautés
publicetprivatesont, à ce jour encore, parmi les mots de passe les plus efficaces jamais inventés. Pour l'attaquant.
Une supervision qui veille pendant que vous dormez
Nous concevons, installons et exploitons des plateformes de supervision pour des PME, des hébergeurs et des collectivités : Zabbix, Prometheus et Grafana, ou plus léger quand le besoin l'est. Reprise d'une supervision existante, réglage des alertes qui sonnent pour rien, astreinte : nous intervenons au forfait comme au long cours.