Description
snmp est le client SNMP par défaut sous OpenBSD, intégré dans le système de base depuis 6.6 !
Il est bien sûr nécessaire qu’un agent soit installé, configuré sur la machine à interroger. Sous OpenBSD, c’est le service natif snmpd .
Documentation
La documentation se fait au-travers du manpage, tels que :
Utilisation
Premier aspect qui “saute aux yeux” est que snmp est fourni avec un ensemble de sous-commandes, qui ont leurs propres options.
Pour information : les OID sont des identifiants d’objets.
Description des sous commandes
snmp get
pour récupèrer le varbind OID depuis un agent SNMP. Il est possible de spécifier plusieurs OID.snmp getnext
pour récupèrer le varbind qui suit l’OID requis. Il est aussi possible d’en spécifier plusieurs.snmp walk
récupère toutes les branches d’un OID.snmp bulkget
récupère les 10 prochains varbind suivant chaque OID.snmp bulkwalk
récupère tous les varbind qui sont des branches de l’OID.snmp set
permet de définir un ou plusieurs varoid, ainsi que son format de type de données.snmp trap
envoie un message de capture à un agent.snmp mibtree
permet de faire un dump (une sauvegarde) de l’arborescence des objets compilés au format MIB.
Les deux sous commandes bulk*
, ainsi que trap
ne sont fonctionnelles
qu’à partir de SNMP v2.
Pour info, la sous commande get
est aussi utile pour récupèrer les
messages d’erreurs.
SNMP v1
Oui, c’est possible ; mais du fait que c’est une version “historique”, qu’il n’est plus recommandé de l’utiliser, passons à la suite…
SNMP v2
Il n’y a pas de réelle sécurité avec SNMPv2. Elle se base principalement
sur l’option community
et les deux options read-*
.
Exemple :
$ snmp walk -v 2c -c public $(hostname) sysDescr
Cet exemple nous montre l’interrogation d’un agent sur le protocole v2c
faisant partie de la communauté public
.
Un petit mot sur l’option community
, ne cherchez pas à la faire fonctionner
avec SNMPv3, elle a été supprimée du protocole.
SNMP v3
Les options principales sont :
-A
spécifie le mot de passe utilisateur de l’agent à interroger.-a
spécifie le protocole de chiffrement lié à l’option-A
.- Par défaut, l’option
-a
est paramétrée surMD5
. Attention, l’option équivalente pour le service snmpdhmac
est, elle, basée surhmac-sha1
. Donc, dans le cas d’un agent SNMPd fonctionant sous OpenBSD configuré par défaut à interroger, il faudra veiller à spécifierSHA1
.
- Par défaut, l’option
-l
spécifie le niveau de sécurité. Par défaut, la valeur estnoAuthNoPriv
.authNoPriv
est requise par l’une des deux options-A
ou-k
.authPriv
est requise par l’une des deux options-K
ou-X
.
-u
spécifie le nom de l’utilisateur-v
spécifie la version du protocole SNMP utilisé-X
spécifie le mot de passe de confidentialité de l’utilisateur-x
spécifie le protocole de chiffrement de confidentialité. Les options sontdes
ouaes
.
Ces options sont utiles voire nécessaires pour faire de l’authentification dite forte .
Il y a bien sûr d’autres options possibles :
- certaines ne sont pas nécessaires d’être généralement spécifiées,
c’est le cas de
-E
,-e
,-n
,-Z
. - les options
-K
,-k
(ces deux dernières options sont l’équivalent des options-A
et-X
mais encodées sous forme hexadécimale). - certaines sont spécifiques à l’usage des sous commandes
bulk*
,walk
. - pour finir, il est possible de cibler les protocoles réseaux que sont
udp
,tcp
, (et leur équivalent IPv6 :upd6
ettcp6
) ouunix
. Les adresses IPv6 doivent être mises entre crochets{ }
.
Lire le manpage snmp pour en savoir plus sur l’utilité des ces options.
Ci-dessous, retrouvez quelques exemples d’utilisation avec le protocole SNMPv3. Il est bien entendu que nous n’abordons pas la partie de la configuration de l’agent interrogé. Sous OpenBSD , la configuration d’un agent SNMP se fait par le biais du service SNMPd .
Dans chaque cas, les paramètres utilisés sont liés à ceux configurés dans le service SNMPd.
Sans authentification
Exemple :
$ snmp walk -u "test" -v 3 $(hostname) sysDescr
Dans cet exemple, nous interrogeons l’agent avec un nom d’utilisateur
nommé test
, sans aucun niveau de sécurité.
Authentification simple
Exemple :
$ snmp walk -A "secret007" -a SHA -l authNoPriv -u "uauth" -v 3 192.168.1.3 sysdescr
Ici, nous interrogeons l’agent ayant pour adresse 192.168.1.3
avec un
nom utilisateur uauth
, une clé d’authentification secret007
et un
niveau de sécurité spécifié à authNoPriv
.
Authentification forte
Quelques mots sur l’authentification forte : elle est à favoriser IMPÉRATIVEMENT !
Exemple :
$ snmp walk -A "zx4pyrfyeu5x5c3kxqirhtsxksbmawju" -a SHA-512 -l authPriv -u "uenc" -v 3 -X "XHVBzYUpP8dKns75BaSwq6t7SUgF6oMz" -x aes $(hostname) sysdescr
Dans cet exemple, nous interrogeons localement l’agent,
- avec un utilisateur nommé
uenc
, - une clé d’authentification “
zx4pyrfyeu5x5c3kxqirhtsxksbmawju
” basée sur le protocole de chiffrementSHA-512
, - un niveau de sécurité sur
authPriv
, - le mot de passe de l’utilisateur “
XHVBzYUpP8dKns75BaSwq6t7SUgF6oMz
” basé sur le protocole de chiffrementaes
.
Dépannage
Erreur : usmStatsDecryptionErrors.0
Le protocole de chiffrement que vous utilisez n’est pas celui attendu
par l’agent interrogé. Corrigez la valeur de votre option -x
.
Erreur : usmStatsUnsupportedSecLevels.0
Le niveau de sécurité que vous cherchez à utiliser n’est pas celui attendu
par l’agent interrogé. Corrigez la valeur de votre option -l
.
Erreur : usmStatsWrongDigests.0
Le protocole de chiffrement que vous utilisez n’est pas celui attendu
par l’agent interrogé. Corrigez la valeur de votre option -a
.
Message : *** = No Such Object available on this agent at this OID
Vous essayez de parcourir un arbre avec la sous commande get
,
n’est-ce pas !?
Alors, soit vous recommencez en :
- utilisant la sous commande
walk
- précisant un OID particulier
Message : Received report:
Vous venez de parcourir un arbre avec la sous commande walk
, et vous
avez pour retour juste ce message Received report:
sans rien de plus.
Utilisez la sous commande get
à la place, cela vous permettra d’obtenir
le message d’erreur adéquat.
Message : snmp: Invalid privacy protocol specified after -3x flag:
Le niveau du protocole de sécurité que vous avez spécifié est incorrect.
Corrigez la valeur de votre option -l
.
Message : snmp: ***: Unknown object identifier
Vous avez spécifié un OID inconnu. Vérifiez et corrigez l’OID recherché.