SNMP – Simple                 Network Management                 Protocol
Plan : Partie 1 : généralités, historique
Partie 2 : architecture
Partie 3 : protocole
Partie 4 : représentation des données
- de surveiller « à chaud » les éléments du réseau (routeur, station de travail, imprimante…) en collectant des informations sur leurs états et leurs comportements
1998
- Fait basculer le modèle client-serveur de SNMPv1/v2 dans le modèle peer-to-peer et modulaire
- Fournit un réel support en matière de sécurité
: confidentialité, authentification, intégrité des messages
n SNMP est donc (comme la majorité des systèmes d’administration) de type client – serveur
...
n Un protocole de niveau applicatif permettant à deux entités SNMP de dialoguer
Architecture SNMPv1/v2 – manager/agent
- Un manager (entité logicielle) centralise les informations en provenance des équipements du réseau par l’intermédiaire d’agents agissant pour le compte du manager
Entité à administrer
-  Exemples d’objets :
-  L’interopérabilité entre SNMPv1 et SNMPv2c n’est pas préservée
-Â Â 2 solutions :
Station d’administration
-  Propose une nouvelle terminologie : on ne parle plus de manager, d’agent mais d’entité
...
-  Une entité SNMP est exposée à plusieurs dangers :
-Â Â A cet effet, SNMP propose
SNMPv3
-  Les algorithmes de hachage MD5 et Secure Hash (SHA) sont utilisés pour calculer des hashs
Mécanismes de sécurisation de SNMPv3
- Une synchronisation avec des indicateurs de temporisation permet de se prémunir de certaines attaques de modification de flux
n Un contrôle d’accès aux informations et aux terminaux administrés est proposé
Partie 2 – Protocole SNMP v1/2
...
Ces primitives offrent deux fonctionnalités fondamentales : l’interrogation et l’assignation
n Commandes d’interrogation (Getxxx)
n SetRequest : commande permet d’affecter une valeur à un ou plusieurs objets(Setxxx)
PDUs ::= CHOICE
{ get-request GetRequest-PDU,
get-next-request GetNextRequest-PDU, get-response GetResponse-PDU,
set-request SetRequest-PDU, trap Trap-PDU
}
managers
- Le message SNMP dans son ensemble est une séquence de 3 champs :
Version (Integer)        Communauté (Octet String)  Protocol Data Unit, ou PDU (type construit)
Message         ::=       SEQUENCE  {        Â
version --         version-1        for      this     RFC
INTEGERÂ Â Â Â Â Â {Â Â Â Â Â Â Â Â Â version-1(0)Â Â Â Â },
community
community     OCTET
name   STRING,       --                                                                                Â
data -- e.g., PDUs if trivial
ANY -- authentication is being used
}
type                                        Varbin list (sequence) Varbin (sequence)
Object
identifier     Valeur    …
PDU (
(integer)Â Â Â Â Â Â Â Â Â Â erreur (integer)Â Â Â Â Â Â Â Â Â Â Â index
d’erreur (integer)                   Â
)
version (integer)         communauté (octet string)     Protocol Data Unit, ou PDU
PDU ::= SEQUENCE {
request-id INTEGER,
error-status -- sometimes ignored INTEGER { noError(0), tooBig(1),
noSuchName(2), badValue(3), readOnly(4), genErr(5) },
error-index INTEGER, -- sometimes ignored
variable-bindings -- values are sometimes ignored VarBindList }
n  Index d’erreur :
Valeur du code d’erreur |
explication |
|
0x00 |
aucune erreur n’est survenue |
|
0x01 |
réponse trop longue pour être transportée |
|
0x02 |
le nom de l’objet demandé n’a pas été trouvé |
|
0x03 |
le type de donnée de la requête ne « matche » pas celui se trouvant dans l’agent SNMP |
|
0x04 |
le manager a tenté d’assigner une valeur à un paramètre accessible ne lecture seulement |
0x05 – Erreur générale |
Code d’erreur |
Explication |
0x06 |
Accès non permis |
0x07 |
e type n’est pas le bon |
0x08 |
a taille de la valeur excède la taille permise |
0x09 |
roblème d’encodage |
0x10 |
aleur fausse/impossible |
0x11 |
ssignation à une variable n’existant pas dans la MIB |
0x12 |
’objet de la MIB est inconsistant et n’accepte pas d’affection |
0x13 |
|
es ressources nécessaires à l’affection sont indisponibles |
|
0x14 |
rreur lors de l’assignation |
type PDU ( integer ) |
entreprise (OID) |
adresse ( network address ) |
code générique (integer) |
code spécifique (integer) |
période ( timeticks ) |
Varbin list (sequence) Varbin (sequence) OID valeur                  … |
Trap-PDU ::= [4] IMPLICIT SEQUENCE {
Enterprise OBJECT IDENTIFIER, agent-addr NetworkAddress, -- trap
generic-trap INTEGER { coldStart(0), warmStart(1), linkDown(2), linkUp(3), authenticationFailure(4), egpNeighborLoss(5), enterpriseSpecific(6) },
specific-trap INTEGER, time-stamp TimeTicks
variable-bindings VarBindList }
- Avec SNMPv2, la structure d’une trap se simplifie : les informations sont stockées dans le champs Varbin list sous la forme d’attributs (OID-valeur)
version (integer)         communauté (octet string)     Protocol Data Unit, ou PDU
Varbin list (sequence)
Varbin (sequence)              …
OID valeur
standardisé
- Une MIB comprend un ensemble d’objets administrés (ou objet MIB ou simplement par abus de langage, MIB)
- La hiérarchie est organisée en deux parties :
- Private (4) : les vendeurs peuvent définir des branches privées incluant les objets MIB de leurs propres produits
informations
-  Dans cette hiérarchie, un objet de la MIB est identifié de façon non ambiguë par
root
sysName(5)}
sysName OBJECT IDENTIFIER ::= { system 5 }
.1.3.6.1.2.1.1.5
iso (1)
org (3)
dod (6)
internet (1)
snmpV2 (6)
mgmt (2) experimental (3) private (4)
mib-2 (1)
system (1)
- Chaque information d’administration est identifiée de façon unique et globale (c’est- à -dire au sein d’une même espace de nommage)
- Un objet contenu dans une MIB est défini par
extrait de la RFC 1155
OBJECT-TYPE MACRO ::= BEGIN TYPE NOTATION ::=
"SYNTAX" type (TYPE ObjectSyntax) "ACCESS"
Access
"STATUS" Status VALUE NOTATION ::= value
(VALUE ObjectName)
Access ::= "read-only" | "read-write" | "write-only" | "not-accessible"
Status ::= "mandatory" | "optional" | "obsolete" END
Syntaxe SMIv2 d’un objet    MIB            – extrait de la RFC 2578
OBJECT-TYPE MACRO ::= BEGIN TYPE NOTATION ::=
"SYNTAX" Syntax UnitsPart "MAX-ACCESS" Access
"STATUS" Status
"DESCRIPTION" Text ReferPart IndexPart DefValPart
Suite syntaxe SMIv2 d’un objet MIB – extrait de la RFC 2578
UnitsPart ::= "UNITS" Text | empty
Status ::= "current" | "deprecated" |"obsolete"
ReferPart ::= "REFERENCE" Text | empty
IndexPart ::= "INDEX" "{" IndexTypes "}" | "AUGMENTS" "{" Entry "}" | empty
IndexTypes ::= IndexType | IndexTypes "," IndexType
 IndexType ::= "IMPLIED" Index | IndexÂ
SNMPv2
Droit d’accès |
Description |
read-only |
Accès en lecture |
read-write |
Accès en lecture et écriture |
write-only |
Accès en écriture |
not-accessible |
Non accessible |
read-create |
Accès à la création (avec SMIv2), |
accessible-for-notify |
Accès pour trap (avec SMIv2) |
Description |
|
mandatory |
Présence obligatoire (SNMPv1) |
optional |
Présence optionnelle (SNMPv1) |
obsolete |
Est obsolète (SNMPv1 et SNMPv2) |
deprecated |
est toujours supporté mais deviendra obsolète dans le futur ou sera remplacé par un objet plus adapté (SNMPv2) |
current |
actuel (SNMPv2) |
Nom de l’objet
rptrMonitorTransmitCollisions OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
de type counter
Accessible en lecture seulement
STATUS deprecated DESCRIPTION « … »
Objet désuet avec SMIv2, mais pouvant continuer à être utilisé pour des raisons de comptabilité Description textuelle
REFERENCE « [IEEE 802.3 Mgt], 30.4.1.8, aTransmitCollisions. "» ::= OID
Nom |
Type |
Nombre d’octets |
Signification |
INTEGER |
ASN.1 |
4 |
Entier |
BIT STRING |
ASN.1 défini par SNMPv2 |
≥ 0 |
Suite de 1 Ã 32 bits |
OCTET STRING |
ASN.1 |
≥ 0 |
Chaîne de caractères (0 to 65,535 octets) |
OBJECT INDENTIFIER |
ASN.1 |
Ø 0 |
Identifiant |
NULL |
ASN.1 |
NULL |
Nom |
Type |
Nombre d’octets |
Signification |
||
Counter Counter32, Counter64 |
Entier pour SMIv1, Entier positif pour SNMPv2 |
4 ou 5 |
|||
TimeTicks |
Entier |
4 |
Compte une durée en centième de seconde depuis un instant donné |
||
Gauge, Gauge32 |
Entier positif Même chose que Gauge |
4 |
Entier positif dont la valeur ne passe jamais à 0 en cas de dépassement |
||
IpAddress |
OCTET STRING |
4 |
Adresse IPv4 sous forme décimale pointée. Pas de IPv6 en SMIv1 et 2 |
||
NetworkAdr ess |
OCTET STRING |
4 |
Même chose que IpAdress mais peut représenter différents types d’adresses |
||
Nom |
Type |
Nombre d’octets |
Signification |
Opaque |
OCTET STRING |
donnée opaque utilisée pour représenter des informations arbitraires non-conformes aux autres types SMI. Devient obsolète avec SMIv2 |
|
Integer32 |
INTEGER |
4 |
Entier codé sur 32 bits même pour une unité centrale de 64. SMIv2 |
Unsigned32 |
4 |
Entier positif codé sur 32 bits. SMIv2 |
|
BITS |
Énumération de bits |
- Au niveau le plus bas, les variables SNMP sont définies en tant
- Les objets apparentés sont réunis dans des groupes assemblés en modules
Groupe |
Description |
|||||||||||||||||||||||||||||||||||||||||||||||
System |
Nom, emplacement et description de l’entité |
|||||||||||||||||||||||||||||||||||||||||||||||
Interfaces |
Interfaces réseau et trafic mesuré |
|||||||||||||||||||||||||||||||||||||||||||||||
AT |
Traduction d’adresse (usage peu recommandé) |
|||||||||||||||||||||||||||||||||||||||||||||||
IP |
Statistiques sur les paquets IP |
|||||||||||||||||||||||||||||||||||||||||||||||
ICMP |
Statistiques sur les messages ICMP reçus |
|||||||||||||||||||||||||||||||||||||||||||||||
TCP |
Algorithmes, paramètres et statistiques TCP |
|||||||||||||||||||||||||||||||||||||||||||||||
UDP |
Statistiques de trafic UDP |
|||||||||||||||||||||||||||||||||||||||||||||||
EGP |
Statistique de trafic EGP (usage historique) |
|||||||||||||||||||||||||||||||||||||||||||||||
Transmission |
Réservé |
|||||||||||||||||||||||||||||||||||||||||||||||
SNMP |
Statistiques de trafic SNMP DEFINITIONS ::= BEGIN IMPORTS mgmt, OBJECT-TYPE, NetworkAddress, IpAddress, Counter, Gauge, TimeTicks FROM RFC1065-SMI; mib OBJECT IDENTIFIER ::= { mgmt 1 } system OBJECT IDENTIFIER ::= { mib 1 } interfaces OBJECT IDENTIFIER ::= { mib 2 } at OBJECT IDENTIFIER ::= { mib 3 } ip OBJECT IDENTIFIER ::= { mib 4 } icmp OBJECT IDENTIFIER ::= { mib 5 } tcp OBJECT IDENTIFIER ::= { mib 6 } udp OBJECT IDENTIFIER ::= { mib 7 } egp OBJECT IDENTIFIER ::= { mib 8 } END sysDescr OBJECT-TYPE SYNTAX       OCTET STRING       ACCESS        read-only        STATUS        mandatory ::= { system          1         } sysObjectID OBJECT-TYPE SYNTAX       OBJECT IDENTIFIER                     ACCESS STATUS        read-only mandatory ::= { system          2         }mib-2 sysUpTime OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only system STATUS mandatory ::= { system 3 } … sysDesc sysObjectID sysUpTime syContact sysName sysLocation sysServices - Les objets se regroupent dans un module qui
- Définit ses exigences en matière d’implémentation SNMPv2-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, … FROM SNMPv2-SMI DisplayString, … MODULE-IDENTITY LAST-UPDATED "200210160000Z" ORGANIZATION "IETF SNMPv3 Working Group" REVISION "200210160000Z" DESCRIPTION "This revision of this MIB module was published as REVISION "199511090000Z"  DESCRIPTION "…" ::= { snmpModules 1 } -- the System group system OBJECT IDENTIFIER ::= { mib-2 1 } sysDescr OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) MAX-ACCESS read-only STATUS current DESCRIPTION "A textual description of the entity. This value should include the full name and version identification of the system's hardware type, software operating-system, and networking software." ::= { system 1 } …. n Une notification (ou trap)
coldStart TRAP-TYPE ENTERPRISE snmp DESCRIPTION "A coldStart trap signifies that the sending protocol entity is reinitializing itself such that the agent's configuration or the protocol entity implementation may be altered." ::= 0 Exemple de trap spécifique à une entreprise - extrait de la RFC1215 myEntreprise OBJECT IDENTIFIER := {enterprise 9999} TRAP-TYPE ENTERPRISE myEnterprise VARIABLES OID Type générique : 6 La trap indique un changement à d’état down d’une interface dont le numéro est donné par     ifIndex DESCRIPTION « myLinkDown trap significates that the application recognises a failures among one communication links within the agent configuration » 2 est le numéro de trap spécifique Numéro de traps génériques
Conclusion – SNMP (1/2) - SNMP est le standard de facto d’administration des réseaux (IP)
|