guest@6admin.io:~$

SNMP : un protocole pas si simple

SNMP signifie Simple Network Management Protocol. Le “Simple” est l’ironie du siècle: le protocole utilise des OIDs (Object Identifiers) qui sont des arborescences de numéros, des MIB (Management Information Base) qui traduisent les numéros en noms, des communautés (public, private) qui servent de mot de passe en clair et des versions (v1, v2c, v3) dont chacune a ses particularités.

Les OIDs: l’arbre

Chaque donnée dans SNMP a un OID: une séquence de numéros séparés par des points. L’arbre standard:

1.3.6.1.2.1.1    = system (uptime, contact, hostname)
1.3.6.1.2.1.2    = interfaces (list, stats)
1.3.6.1.4.1.2021 = UCD-SNMP-MIB (disk, load, memory, processes)
1.3.6.1.4.1.9    = Cisco (propriétaire)

Le 1.3.6.1.4.1 est le nœud “enterprise”, où chaque constructeur a sa branche. Cisco = 9, HP = 11, etc. Sous la branche enterprise, chaque constructeur invente sa hiérarchie et les MIB qui traduisent ces numéros en noms lisibles sont des fichiers texte à installer dans le client SNMP.

Les requêtes

# Le nom du système
snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.1.5.0

# L'uptime
snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.1.3.0

# La table des interfaces (walk)
snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.2.1.2

# Le load average (dans la branche UCD)
snmpget -v2c -c public 192.168.1.1 1.3.6.1.4.1.2021.10.1.3.1

Le snmpget demande une valeur précise, le snmpwalk énumère toutes les valeurs sous un OID. Le -c public est la communauté: en SNMP v1 et v2c, la communauté est le seul “mot de passe” et il voyage en clair dans chaque paquet.

Ce que ça sert

SNMP est le protocole que Cacti utilise pour collecter les métriques: traffic réseau (OID des interfaces), CPU, mémoire, disque, température. Le polling Cacti interroge les équipements toutes les 5 minutes par SNMP et stocke dans RRDtool, qui génère les graphiques de monitoring.

Le SNMP est aussi le protocole que les équipements réseau parlent nativement: switches, routeurs, firewall, serveurs. Un scan SNMP sur le réseau révèle chaque équipement qui parle SNMP avec la communauté public (le défaut, rarement changé) et ces équipements exposent leur configuration, leurs interfaces, leurs tables ARP.

Le danger

Le SNMP v1/v2c envoie la communauté en clair. Un sniffer sur le réseau voit public dans chaque paquet SNMP et peut alors interroger les équipements lui-même. Le SNMP v3 chiffre et authentifie, mais il est plus complexe à configurer et beaucoup de réseaux tournent encore en v2c avec public.

Le défaut SNMP (community=public, port 161/udp ouvert, tout le monde peut lire) est le genre de défaut qui ne se voit pas: pas de logs d’erreur, pas d’alerte, juste des données qui fuient silencieusement vers quiconque connaît le protocole.

[edit: 2026] SNMP v3 est devenu le standard pour les équipements récents, mais v2c avec public survit dans les parcs legacy. Les outils modernes de monitoring (Prometheus, Grafana) ont ajouté des exporters SNMP, mais le protocole reste SNMP. Les OID sont toujours des arbres de numéros, les MIB sont toujours des fichiers texte que personne ne lit et la communauté public fuit toujours.