Snmp : client SNMP sous OpenBSD

Article publié, le et modifié le
5 minute(s) de lecture

Cet article contient 1010 mots.
Source brute de l'article : MD

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 ausis 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 :

Code : sh

$ 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 sur MD5. Attention, l’option équivalente pour le service snmpd hmac est, elle, basée sur hmac-sha1. Donc, dans le cas d’un agent SNMPd fonctionant sous OpenBSD configuré par défaut à interroger, il faudra veiller à spécifier SHA1.
  • -l spécifie le niveau de sécurité. Par défaut, la valeur est noAuthNoPriv.
    • 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 sont des ou aes.

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 et tcp6) ou unix. 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 :

Code : sh

$ 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 :

Code : sh

$ 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 :

Code : sh

$ 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 chiffrement SHA-512,
  • un niveau de sécurité sur authPriv,
  • le mot de passe de l’utilisateur “XHVBzYUpP8dKns75BaSwq6t7SUgF6oMz” basé sur le protocole de chiffrement aes.

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é.