Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

📡 SNMP – Monitoring, MIBs/OIDs & Protocoles v1/v2c/v3

Guide complet IDEO-Lab sur le protocole de gestion et de supervision réseau.

1.1

Concept & Architecture

Simple Network Mgmt Protocol (NMS, Agent, MIB).

SNMP NMS Agent
1.2

Ports & Transport

UDP 161 (GET/SET) vs. UDP 162 (TRAP).

UDP 161 UDP 162 UDP
1.3

Opérations de Base

GET, GETNEXT, GETBULK (Pull), TRAP (Push), SET.

GET TRAP SET
2.1

SNMPv1 (Legacy)

ObsolĂšte. Community String (Texte clair). 32-bit.

SNMPv1 Community Non sécurisé
2.2

SNMPv2c (Courant)

Le plus utilisé (LAN). Community (Texte clair). 64-bit.

SNMPv2c GETBULK 64-bit
2.3

SNMPv3 (Sécurisé)

Moderne. USM (User), Auth (MD5/SHA), Priv (AES).

SNMPv3 AuthPriv AES
3.1

La MIB (Dictionnaire)

Management Information Base. Le "dictionnaire" des OIDs.

MIB Dictionnaire
3.2

L'OID (Adresse)

Object Identifier. L'adresse numérique unique (ex: .1.3.6...).

OID Adresse
3.3

Structure (Arbre MIB)

Hiérarchie (iso.org.dod.internet.mgmt.mib-2...).

Arbre Hiérarchie
4.1

Polling (Pull) : GET

NMS interroge l'Agent (Performance, CPU, RAM).

Polling Pull Performance
4.2

Alerting (Push) : TRAP

L'Agent alerte le NMS (Faults, Port Down, Reboot).

TRAP Push Alertes
4.3

Gestion : SET

Opération d'écriture (ex: shutdown interface). Risqué.

SET Écriture
5.1

Outil : snmpwalk

Outil CLI (Linux) pour "marcher" (GETNEXT) sur un arbre OID.

snmpwalk CLI Diagnostic
5.2

Outil : snmpget

Outil CLI (Linux) pour lire un seul OID.

snmpget CLI
5.3

Outils : NMS (Plateformes)

Zabbix, Nagios, PRTG, SolarWinds, Prometheus.

Zabbix Nagios Prometheus
6.1

Cheat-sheet : Versions

Comparatif v1, v2c, v3 (Sécurité, Fonctions).

Comparatif v1/v2c/v3
6.2

Cheat-sheet : OIDs Clés

OIDs communs (sysUpTime, ifDescr, ifInOctets...).

OID Cheatsheet
6.3

Cheat-sheet : CLI

Exemples de commandes snmpwalk et snmpget.

CLI snmpwalk
1.1 Concept & Architecture
Simple Network Management Protocol

SNMP est un protocole de la couche Application (Couche 7) conçu pour superviser (monitorer) et gérer des équipements sur un réseau IP (Routeurs, Switchs, Serveurs, Imprimantes, NAS...).

C'est le standard universel pour la collecte de mĂ©triques de performance (CPU, RAM, Bande Passante) et de statut (État des ports).

Architecture (Manager / Agent)

SNMP fonctionne sur un modĂšle "Manager-Agent" :

  • Manager (NMS) : Le serveur de supervision (ex: Zabbix, Nagios). C'est lui qui "pose les questions" (Polling).
  • Agent : Le logiciel qui tourne sur l'Ă©quipement supervisĂ© (ex: le switch Cisco, le serveur Windows). Il "connaĂźt les rĂ©ponses" et les expose.
  • MIB (Management Information Base) : (Voir 3.1) Le "dictionnaire" que le NMS utilise pour savoir quelles questions il peut poser Ă  l'Agent.
[ NMS (Manager) ]
(ex: Zabbix)
      │
      │ RequĂȘte : "Quel est ton CPU ?" (GET)
      │ Alerte : "Port 1/1 Down !" (TRAP)
      │
      ▌
[ AGENT (Appareil) ]
(ex: Switch Cisco)
1.2 Ports & Transport (UDP 161/162)

SNMP utilise UDP comme protocole de transport (Couche 4), car il est rapide, sans connexion (stateless) et a un faible overhead, ce qui est idĂ©al pour des requĂȘtes de monitoring rĂ©pĂ©titives (polling).

Il utilise deux ports "Well-Known" distincts :

Port UDP 161 (Polling)

Utilisé pour la communication NMS -> Agent (Pull).

  • Source : NMS (Port alĂ©atoire > 1023)
  • Destination : Agent (Port 161)

Opérations : GET, GETNEXT, GETBULK, SET.

Port UDP 162 (Alertes)

Utilisé pour la communication Agent -> NMS (Push).

  • Source : Agent (Port alĂ©atoire > 1023)
  • Destination : NMS (Port 162)

Opérations : TRAP, INFORM.

1.3 Opérations de Base

SNMP définit plusieurs types de messages (PDU - Protocol Data Units) :

OpérationTypeDirectionDescription
GETPullNMS -> AgentDemande la valeur d'un OID spécifique (ex: "CPU ?").
GETNEXTPullNMS -> AgentDemande la valeur de l'OID suivant dans l'arbre (utilisé par snmpwalk).
GETBULKPullNMS -> Agent(v2c/v3) Demande plusieurs OIDs (ex: les 10 suivants) en 1 seule requĂȘte (trĂšs efficace).
SETPushNMS -> AgentÉcrit une valeur sur l'agent (ex: "Éteindre le port 1"). (NĂ©cessite R/W).
TRAPPushAgent -> NMSAlerte non sollicitée (non confirmée) envoyée par l'agent (ex: "Port Down !").
INFORMPushAgent -> NMS(v2c/v3) Une TRAP confirmée (le NMS doit envoyer un ACK).
RESPONSERéponseAgent -> NMSLa réponse à un GET, SET, ou INFORM.
2.1 SNMPv1 (Legacy)

La version originale de SNMP (1988, RFC 1157). Statut : Totalement obsolĂšte.

Sécurité : Community String (Chaßne de Communauté)

L'authentification (trÚs faible) est gérée par une "chaßne de communauté", qui est un mot de passe partagé.

  • public : (DĂ©faut) AccĂšs en Lecture Seule (Read-Only - RO). Permet les GET.
  • private : (DĂ©faut) AccĂšs en Lecture/Écriture (Read-Write - RW). Permet les SET.

Faille Critique : Les community strings sont envoyées en Texte Clair (Clear Text) dans les paquets UDP. Un attaquant "sniffant" (écoutant) le réseau peut les capturer en quelques secondes.

Limitations
  • SĂ©curitĂ© (texte clair).
  • Ne supporte pas GETBULK (inefficace).
  • Supporte uniquement des compteurs 32 bits (un compteur 32 bits pour le trafic d'une interface 1 Gbps "wrappe" (revient Ă  zĂ©ro) en ~34 secondes, rendant le monitoring de bande passante inutilisable).
2.2 SNMPv2c (Le Standard Non-Sécurisé)

C'est la version la plus utilisée aujourd'hui dans les réseaux internes (LAN). (SNMPv2c = v2 avec "community strings").

Sécurité : Identique à v1

SNMPv2c utilise toujours des Community Strings en texte clair (public, private). Il n'est pas plus sécurisé que v1.

Son utilisation est acceptable uniquement sur un réseau de management "de confiance" (ex: un VLAN de supervision), protégé par des ACLs/Firewalls.

Améliorations Clés (par rapport à v1)
  • GETBULK : L'ajout majeur. Permet Ă  un NMS de demander plusieurs OIDs (ex: 10) en une seule requĂȘte GET, rĂ©duisant massivement la charge CPU et rĂ©seau du polling.
  • Compteurs 64 bits (Counter64) : Ajoute des compteurs 64 bits (ifHCInOctets), essentiels pour monitorer la bande passante sur les interfaces modernes (1 Gbps, 10 Gbps) sans "wraparound" (retour Ă  zĂ©ro) rapide.
  • INFORM : Ajoute les TRAPs confirmĂ©s (avec ACK).
2.3 SNMPv3 (Le Standard Sécurisé)

SNMPv3 est le standard moderne qui adresse toutes les failles de sécurité de v1/v2c. Il est complexe à configurer mais essentiel pour les réseaux non-fiables (WAN).

USM (User-based Security Model)

v3 n'utilise plus de "community strings". Il utilise un Nom d'Utilisateur et des Niveaux de Sécurité (Auth/Priv).

Niveau de SécuritéNom (CLI)Authentification (Auth)Chiffrement (Priv)
1noAuthNoPrivNon (Utilisateur seulement)Non
2authNoPrivOui (MD5 ou SHA)Non
3authPrivOui (MD5 ou SHA)Oui (DES, 3DES, AES)
  • authNoPriv (RecommandĂ©) : Garantit l'AuthenticitĂ© (l'expĂ©diteur est bien le NMS) et l'IntĂ©gritĂ© (le paquet n'a pas Ă©tĂ© modifiĂ©) grĂące au hachage (HMAC-MD5/SHA).
  • authPriv (Max SĂ©curitĂ©) : Garantit l'AuthenticitĂ©, l'IntĂ©gritĂ© ET la ConfidentialitĂ© (le contenu du paquet est chiffrĂ© en AES).
3.1 MIB (Management Information Base)
Le "Dictionnaire" (Nom -> OID)

Une MIB (Management Information Base) est un fichier texte (structuré) qui sert de "dictionnaire" ou de "carte" pour les données SNMP. Il traduit les noms numériques (OID) en noms lisibles par l'homme, et vice-versa.

Les NMS (Nagios, Zabbix) doivent charger les fichiers MIB (fournis par le constructeur, ex: CISCO-PROCESS-MIB.mib) pour comprendre les OIDs spécifiques à cet équipement.

Sans la MIB, le NMS demande :
  "Donne-moi .1.3.6.1.2.1.1.1.0"
  Réponse : "Cisco Router 2901"

Avec la MIB (chargée), l'admin configure :
  Check : "sysDescr.0" (Human-readable)
  (Le NMS traduit "sysDescr.0" en .1.3.6.1.2.1.1.1.0)
3.2 OID (Object Identifier)
L'"Adresse" de la Donnée

Un OID (Object Identifier) est l'adresse numérique unique qui identifie une variable (un "objet") spécifique dans la MIB.

C'est une structure arborescente (hiĂ©rarchique) oĂč chaque chiffre reprĂ©sente un "nƓud".

OID Scalaire (Objet unique)

Un objet qui n'a qu'une seule instance. Il se termine toujours par .0.

# Le nom lisible (MIB) : sysUpTime
# L'OID : .1.3.6.1.2.1.1.3
# L'instance (Scalaire) : .0

OID complet : .1.3.6.1.2.1.1.3.0
OID Tabulaire (Tableau)

Un objet qui a plusieurs instances (ex: les interfaces réseau).

# Le nom lisible (MIB) : ifDescr (Description d'interface)
# L'OID (Table) : .1.3.6.1.2.1.2.2.1.2

# Les instances (Tabulaire) :
OID: .1.3.6.1.2.1.2.2.1.2.1 (Interface 1) -> "FastEthernet0/1"
OID: .1.3.6.1.2.1.2.2.1.2.2 (Interface 2) -> "FastEthernet0/2"
OID: .1.3.6.1.2.1.2.2.1.2.3 (Interface 3) -> "Vlan1"
3.3 Structure (Arbre MIB)

Tous les OIDs sont organisés dans une structure hiérarchique (arborescente) globale.

. (Root)
 └ 1 (iso)
   └ 3 (org)
     └ 6 (dod)
       └ 1 (internet)
         ├─ 2 (mgmt)
         │  └ 1 (mib-2)
         │    ├─ 1 (system)
         │    │  ├─ 1 (sysDescr)  -> .1.3.6.1.2.1.1.1
         │    │  └─ 3 (sysUpTime) -> .1.3.6.1.2.1.1.3
         │    ├─ 2 (interfaces)
         │    │  └ 2 (ifTable)
         │    │    └ 1 (ifEntry)
         │    │      ├─ 2 (ifDescr)   -> .1.3.6.1.2.1.2.2.1.2
         │    │      └─ 10 (ifInOctets) -> .1.3.6.1.2.1.2.2.1.10
         │    ...
         └─ 4 (private)
            └ 1 (enterprise)
              ├─ 9 (cisco)
              │  └ ... (MIBs propriĂ©taires Cisco)
              ├─ 2021 (ucd-snmp)
              └─ ... (Autres constructeurs)
4.1 Polling (Pull) : GET / GETBULK

C'est le mode de supervision Pull (Tirer), initié par le NMS. C'est le mode utilisé pour la supervision de performance (métriques qui changent constamment).

Processus (Polling)
  1. Le NMS (Manager) est configuré pour interroger (Poll) un Agent (ex: 192.168.1.1) toutes les 5 minutes.
  2. Toutes les 5 minutes, le NMS envoie une sĂ©rie de requĂȘtes GET (ou GETBULK) Ă  l'Agent sur le port UDP 161.
  3. RequĂȘtes : "OID 1.3.6...1.3.0 (sysUpTime) ?", "OID ...2.2.1.10.1 (ifInOctets.1) ?", "OID ...2.2.1.16.1 (ifOutOctets.1) ?".
  4. L'Agent répond (RESPONSE) avec les valeurs actuelles (ex: Uptime=12345, In=50000, Out=20000).
  5. Le NMS stocke ces valeurs (horodatées) dans sa base de données (RRDtool, TSDB) et trace le graphique.
4.2 Alerting (Push) : TRAP & INFORM

C'est le mode de supervision Push (Pousser), initié par l'Agent. C'est le mode utilisé pour la supervision d'événements (Faults).

TRAP (Non confirmé)

C'est une alerte non sollicitée envoyée par l'Agent vers le NMS (sur UDP 162).

Usage : ÉvĂ©nements importants et soudains.

1. Une alimentation (PSU) sur un Switch tombe en panne.
2. L'Agent (Switch) génÚre immédiatement une TRAP
   (ex: "linkDown", "configChanged", "psuFailed").
3. Il l'envoie (PUSH) au NMS (UDP 162).
4. Le NMS reçoit la TRAP et génÚre une Alerte CRITICAL.

(Permet une alerte instantanée, sans attendre
 le prochain cycle de polling de 5 min).

Inconvénient : Les TRAPs sont en UDP "Fire and Forget". Si le paquet est perdu, l'alerte est perdue.

INFORM (Confirmé)

(Introduit en v2c/v3).

Un INFORM est un TRAP qui nécessite un accusé de réception (RESPONSE) de la part du NMS.

Si l'Agent n'a pas reçu d'ACK, il réessaiera d'envoyer l'INFORM. C'est un mécanisme "fiable" (similaire à TCP) pour les alertes critiques.

4.3 Gestion : SET

L'opĂ©ration SET est une requĂȘte d'Ă©criture (Write), initiĂ©e par le NMS (Manager) vers l'Agent (Switch).

Elle permet de modifier la configuration de l'équipement à distance via SNMP.

Exemple d'Usage

L'OID ifAdminStatus (.1.3.6.1.2.1.2.2.1.7) contrÎle l'état d'une interface (1=up, 2=down).

# Commande pour ÉTEINDRE l'interface 1 (Fa0/1)

$ snmpset -v2c -c [RW_COMMUNITY] 192.168.1.1 \
    .1.3.6.1.2.1.2.2.1.7.1 i 2

(OĂč "i" = integer et "2" = down)

Risque de Sécurité Majeur :

Cette opération nécessite la Community Read-Write (RW) (ex: "private") ou un utilisateur v3 avec droits d'écriture.

Si un attaquant obtient cette community, il a un contrÎle total sur l'équipement (shutdown de tous les ports, modification de la config...). C'est pourquoi la sécurité (SNMPv3, ACLs) est vitale.

5.1 Outil : snmpwalk

snmpwalk (inclus dans net-snmp sur Linux) est l'outil de diagnostic n°1. Il effectue une sĂ©rie de requĂȘtes GETNEXT (ou GETBULK) pour "marcher" (walk) le long d'un arbre OID et afficher toutes les valeurs qu'il trouve.

Syntaxe (v2c)
snmpwalk -v [version] -c [community] [IP] [OID_de_départ (optionnel)]
Exemples
# "Walk" tout l'arbre (trĂšs verbeux)
$ snmpwalk -v2c -c public 192.168.1.1

# "Walk" uniquement la branche "system" (1.3.6.1.2.1.1)
$ snmpwalk -v2c -c public 192.168.1.1 system
iso.3.6.1.2.1.1.1.0 = STRING: "Cisco IOS..." (sysDescr)
iso.3.6.1.2.1.1.3.0 = Timeticks: (1234567) 1 day... (sysUpTime)
iso.3.6.1.2.1.1.5.0 = STRING: "Switch-Core-1" (sysName)
...

# "Walk" la table des interfaces (ifDescr)
$ snmpwalk -v2c -c public 192.168.1.1 .1.3.6.1.2.1.2.2.1.2
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "FastEthernet0/1"
iso.3.6.1.2.1.2.2.1.2.2 = STRING: "FastEthernet0/2"
iso.3.6.1.2.1.2.2.1.2.25 = STRING: "Vlan1"
5.2 Outil : snmpget

snmpget effectue une seule requĂȘte GET pour rĂ©cupĂ©rer la valeur d'un ou plusieurs OIDs spĂ©cifiques.

C'est l'outil utilisé par les scripts de supervision (ex: Nagios check_snmp) pour vérifier une métrique précise.

Syntaxe (v2c)
snmpget -v [version] -c [community] [IP] [OID 1] [OID 2] ...
Exemples
# Récupérer le sysUpTime
$ snmpget -v2c -c public 192.168.1.1 .1.3.6.1.2.1.1.3.0
iso.3.6.1.2.1.1.3.0 = Timeticks: (1234567) 1 day, 10:17:36.7

# Récupérer le nom (sysName) ET la description (sysDescr)
$ snmpget -v2c -c public 192.168.1.1 sysName.0 sysDescr.0
iso.3.6.1.2.1.1.5.0 = STRING: "Switch-Core-1"
iso.3.6.1.2.1.1.1.0 = STRING: "Cisco IOS..."
5.3 Outils : NMS (Network Management System)

snmpwalk/get sont pour le diagnostic. Un NMS est la plateforme (le "Manager") qui automatise la collecte (Polling, Traps) et fournit une interface web (Graphiques, Alertes).

OutilModĂšleDescription
Nagios / Icinga 2Open SourceBasé sur des "Checks" (Scripts). check_snmp exécute un snmpget et compare à un seuil (OK/Warn/Crit).
ZabbixOpen SourceAll-in-one. Excellent support SNMP (agentless). GĂšre le polling, les traps, et le graphing nativement.
PrometheusOpen SourceModÚle "Pull". N'utilise pas SNMP directement, mais utilise un snmp_exporter qui traduit le SNMP en métriques Prometheus.
PRTG / SolarWindsCommercialTrÚs user-friendly. Spécialisés dans le SNMP "Auto-Discovery" (scanne un appareil et ajoute automatiquement les métriques).
6.1 Cheat-sheet : Comparatif des Versions SNMP
CritĂšreSNMPv1SNMPv2cSNMPv3
SécuritéCommunity (Texte clair)Community (Texte clair)USM (User + Auth/Priv)
ChiffrementNonNonOui (AES/DES)
IntégritéNonNonOui (MD5/SHA)
OpérationsGET, SET, TRAPGET, SET, TRAP, GETBULK, INFORMGET, SET, TRAP, GETBULK, INFORM
Compteurs32 bits32 bits & 64 bits32 bits & 64 bits
UsageObsolÚteStandard (LAN de confiance)Standard (Sécurisé / WAN)
6.2 Cheat-sheet : OIDs Clés (MIB-2)

Ce sont les OIDs les plus couramment supervisés (standard MIB-2, .1.3.6.1.2.1...).

OID (Nom)OID (Numérique)TypeDescription
sysDescr.0...1.1.1.0ScalaireDescription (ex: "Cisco IOS...").
sysUpTime.0...1.1.3.0ScalaireTemps depuis le dernier reboot (Timeticks).
sysName.0...1.1.5.0ScalaireNom d'hĂŽte (ex: "Switch-Core-1").
ifNumber.0...2.1.0ScalaireNombre d'interfaces sur l'appareil.
ifDescr...2.2.1.2TabulaireDescription (ex: "Gi0/1"). (.1.3.6.1.2.1.2.2.1.2.1 = ifDescr pour Index 1).
ifOperStatus...2.2.1.8TabulaireÉtat opĂ©rationnel (1=up, 2=down). (...8.1 = Status pour Index 1).
ifInOctets...2.2.1.10Tabulaire (32b)Compteur d'octets entrants (Bande passante).
ifOutOctets...2.2.1.16Tabulaire (32b)Compteur d'octets sortants (Bande passante).
ifHCInOctets...31.1.1.1.6Tabulaire (64b)Compteur 64 bits (Haute Capacité) (Utiliser celui-ci !).
ifHCOutOctets...31.1.1.1.10Tabulaire (64b)Compteur 64 bits (Haute Capacité) (Utiliser celui-ci !).
6.3 Cheat-sheet : Commandes net-snmp (Linux)
snmpget (Lire 1 OID)
# v2c (non-sécurisé)
snmpget -v2c -c public 192.168.1.1 .1.3.6.1.2.1.1.3.0

# v3 (sécurisé, Auth/Priv)
snmpget -v3 -l authPriv -u [USER] -a [SHA|MD5] -A [AUTH_PASS] -x [AES|DES] -X [PRIV_PASS] [IP] [OID]
snmpwalk (Lire un arbre)
# v2c
snmpwalk -v2c -c public 192.168.1.1 .1.3.6.1.2.1.2.2.1.2

# v3
snmpwalk -v3 -l authPriv -u [USER] ... [IP] [OID]
snmpset (Écrire 1 OID)
# v2c (Éteindre l'interface 1)
# i = integer, 2 = down
snmpset -v2c -c private 192.168.1.1 .1.3.6.1.2.1.2.2.1.7.1 i 2