Administration des réseaux avec SNMP & LDAP
SNMPv1 & SNMPv2
Trame

Figure 5 - Trame SNMP
La trame SNMP ce décompose en 3 parties :
- Version SNMP : Correspond au numéro de la version utilisée pour la requête. Peut-être 1, 2p, 2c, 2u, 2* ou 3. Si aucune version n’est précisée, alors la version qui est utilisée par défaut est SNMPv3 puisqu’elle est devenue le nouveau standard SNMP en 2002.
- Communauté : C'est le contrôle d’accès utilisée par SNMP. Pour les version SNMPv1 et SNMPv2, la communauté est transportée en clair sur le réseau, ce qui pose de gros problèmes de sécurité. La communauté permet de créer des domaines d’administration.
- PDU (Packet Data Unit) : Il contient toutes les informations utiles (les valeurs demandées ou les réponses à ces demandes).
Le Packet Data Unit est lui aussi décomposé en plusieurs parties qui sont expliqués une à une ci-dessous.
Le PDU Type décrit le type de requête, réponse ou d'alerte.
Type de PDU | Nom |
---|---|
0 | GetRequest |
1 | GetNextRequest |
2 | SetRequest |
3 | GetResponse |
4 | Trap |
Tableau 1 - Valeurs associées pour le PDU Type
Le Request ID permet à au manager d'associer les réponses à ses requêtes.
Le Error Status est l'indicateur du type d'erreur. Si aucune erreur ne s'est produite, ce champ est mis à zéro.
Type de PDU | Nom |
---|---|
NoAccess | Accès refusé |
WrongLength | Erreur de taille |
WrongValue | Mauvaise valeur |
WrongType | Mauvais type |
WrongEncoding | Mauvais encodage |
NoCreation | Objet non créé |
ReadOnly | Lecture seule |
NoWritable | Pas d'accès en écriture |
AuthorisationError | Accès refusé |
Tableau 2 - Types d'erreurs pour le Error Status
Le Error Index indique, en cas d'erreur, ou celle-ci se situe dans la requête.
La Varbin List est une séquence constituée d’une ou plusieurs paires OID-Valeur. Le contenu du champs Value change en fonction du PDU Type :
- SetRequest : La valeur correspond à celle de l’OID spécifiée
- GetRequest : La valeur est NULL
- GetResponse : La valeur correspond à celle de l’OID demandé
Faiblesses de SNMPv1
La principale faiblesse de SNMPv1 est l'absence d'un mécanisme adéquat pour assurer la confidentialité et la sécurité des fonctions des informations transmises sur le réseau. En effet, la communauté circule en clair sur le réseau, et donc n’importe qu’elle personne mal intentionnée pourrais facilement la récupérer, et par la suite, récupérer ou modifier des données sur les équipements du réseau. De plus, les données renvoyés par les agents ne sont pas cryptés, il est donc très facile de lire ces informations si on arrive à récupérer un paquet SNMP.
Une autre lacune de SNMPv1 est l’utilisation de la méthode GetNextRequest qui est très mal optimisée. En effet, si un manager souhaite récupérer un objet complexe, il va demander les variables du tableau une à une, ce qui fait énormément de requêtes pour récupérer un objet complexe.

Figure 6 - Exemple d'utilisation de GetNextRequest
Améliorations de SNMPv2
SNMPv2 n’a pas comblé les lacunes sécuritaires de SNMPv1, mais par contre elle a comblée les lacunes fonctionnelles dues à l’utilisation de la méthode GetNextRequest. SNMPv2 a introduit la nouvelle opération GetBulkRequest qui permet de retourner un « tableau » (l’agent remplis le PDU du paquet SNMP jusqu'à ce qu'il n'y ai plus de place) lorsque le manager demande un objet complexe.

Figure 7 - Exemple d'utilisation de GetBulkRequest