Exercices SNMP, partie I ====================== Remarque : Bon nombre de commandes utilisées dans cet exercice n'ont pas besoin d'être exécutées en tant que root, mais il est prudent de les exécuter toutes en tant que root. Il est donc plus simple de lancer un shell en tant que root et d'entrer toutes les commandes à ce niveau. Vous pouvez lancer un shell de root ainsi : $ sudo bash 1. Installation de paquets : -------------------- # apt-get install snmp snmpd # ajoute les outils et l'agent 2. Essai de SNMP --------------- Pour vérifier que l'installation SNMP est opérationnelle, exécutez la commande snmpstatus sur chacun des dispositifs suivants $ snmpstatus -c 'NetManage' -v2c IP_ADDRESS Où IP_ADDRESS correspond à la liste suivante : * Le serveur NOC : 10.10.0.254 * Le serveur NOC : 10.10.0.250 * Le commutateur du backbone : 10.10.0.253 * Les routeurs de la classe : 10.10.0.201-210 (peut-être moins que 10) * Les points d'accès : 10.10.0.251 3. SNMP Walk et OID --------------------- Vous allez maintenant utiliser la commande 'snmpwalk', qui fait partie de la boîte à outils SNMP, sur chacun des équipements testés plus haut afin de lister les tables associées aux OID ci-dessous : .1.3.6.1.2.1.2.2.1.2 .1.3.6.1.2.1.31.1.1.1.18 .1.3.6.1.4.1.9.9.13.1 .1.3.6.1.4.1.11.2.14.11.1.2 .1.3.6.1.2.1.25.2.3.1 .1.3.6.1.2.1.25.4.2.1 Vous essaierez avec deux variantes de la commande 'snmpwalk' : $ snmpwalk -c 'NetManage' -v2c IP_ADDRESS OID et $ snmpwalk -On -c 'NetManage' -v2c IP_ADDRESS OID ... où OID est l'un des trois OID listés ci-dessus : .1.3.6... Remarque : l'option "-On" active l'affichage numérique, à savoir : aucune conversion OID <-> MIB de l'objet n'aura lieu. Pour ces OID : a) Tous les dispositifs répondent-ils ? b) Avez-vous remarqué quelque chose d'important à propos de l'OID sur la sortie ? 4. Configuration de SNMP sur votre routeur Cisco --------------------------------------------- Connectez-vous à votre routeur Cisco virtuel, et vérifiez que snmp y est déjà bien configuré: $ ssh -l cisco 10.10.0.X # où X est le numéro de votre routeur Login par défaut : "cisco", mot de passe "cisco", mot de passe enable secret "cisco" rtr$> enable Password: rtr1#show run | inc snmp ... rtr1#show run | inc 99 ... Si ce n'est pas le cas, il faut configurer SNMP: rtrX# configure terminal rtrX(config)# access-list 99 permit 10.10.0.0 0.0.255.255 rtrX(config)# snmp-server community NetManage ro 99 rtrX(config)# exit rtrX# write memory Que remarquez-vous ? Que signifie l'access-list 99 ? Maintenant de retour sur votre PC (ouvrez une autre fenêtre SSH), effectuez un test en utilisant certains des OID de la section 3 ci-dessus. $ snmpwalk -c 'NetManage' -v2c 10.10.0.X Que se passe-t-il si vous essayez d'utiliser une chaîne de communauté erronée (en remplaçant par exemple "NetManage" par autre chose) ? 5. Configuration de snmpd sur votre PC ------------------------------------- * Editez le fichier suivant : # editor /etc/snmp/snmpd.conf Commentez cette ligne (en AJOUTANT '#' au début): com2sec paranoid default public ... comme suit : #com2sec paranoid default public Et supprimez le commentaire de la ligne (SUPPRIMEZ le '#' en début de ligne) et changez de communauté : #com2sec readonly default public ... comme suit : com2sec readonly default NetManage * Editez le fichier /etc/default/snmpd, et repérez la ligne : SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1' Supprimez 127.0.0.1 à la fin, ce qui donne : SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid' * Relancez snmpd # /etc/init.d/snmpd stop # /etc/init.d/snmpd start 6. Vérifiez que snmpd fonctionne : ------------------------------- $ snmpstatus -c NetManage -v2c localhost Qu'observez-vous ? 7. Testez votre voisin ---------------------- Vérifiez maintenant que vous pouvez exécuter snmpstatus avec le serveur de votre voisin : $ snmpstatus -c NetManage -v2c 10.10.0.X # X = 1 -> 26 (PCs) 8. Ajoutez des MIB -------------- Lorsque vous aviez exécuté : $ snmpwalk -c NetManage -v2c 10.10.0.201 .1.3.6.1.4.1.9.9.13.1 ou $ snmpwalk -c NetManage -v2c 10.10.0.253 .1.3.6.1.4.1.11.2.14.11.1.2 vous aviez peut-être remarqué que le client SNMP (snmpwalk) ne parvenait pas à interpréter tous les OID issus de l'agent : SNMPv2-SMI::enterprises.9.9.13.1.3.1.2.1 = STRING: "chassis" SNMPv2-SMI::enterprises.9.9.13.1.3.1.6.1 = INTEGER: 1 ou ... RFC1155-SMI::enterprises.11.2.14.11.1.2.6.1.4.1 = INTEGER: 4 RFC1155-SMI::enterprises.11.2.14.11.1.2.6.1.4.2 = INTEGER: 4 RFC1155-SMI::enterprises.11.2.14.11.1.2.6.1.4.3 = INTEGER: 5 RFC1155-SMI::enterprises.11.2.14.11.1.2.6.1.4.4 = INTEGER: 4 ... Qu'est-ce que "9.9.13.1.3.1.3" ? Qu'est-ce que ".11.2.14.11.1.2.6.1.4" ? Pour pouvoir interpréter cette information, nous devons télécharger des MIB supplémentaires : * Téléchargez les fichiers suivants sur votre machine : MIB CISCO : ftp://ftp.cisco.com/pub/mibs/v2/CISCO-SMI.my ftp://ftp.cisco.com/pub/mibs/v2/CISCO-ENVMON-MIB.my Toutefois, nous avons un miroir local sur http://noc.ws.nsrc.org/mibs/ qui sera beaucoup plus rapide (surtout pour le gros paquet de la mib HP) # apt-get install wget # cd /usr/share/snmp/mibs # wget http://noc.ws.nsrc.org/mibs/CISCO-SMI.my # wget http://noc.ws.nsrc.org/mibs/CISCO-ENVMON-MIB.my Créez le fichier /etc/snmp/snmp.conf et mettez dedans: mibdirs /usr/share/snmp/mibs:/usr/share/snmp/mibs/hp mibs ALL Ceci indique aux commandes snmp* qu'elles doivent charger TOUS les MIBS dans les répertoires /usr/share/snmp/mibs (et /usr/share/snmp/mibs/hp si celles-ci sont installées). * Enregistrez le fichier et quittez. Faites maintenant un nouvel essai : $ snmpwalk -c 'NetManage' -v2c 10.10.0.254 .1.3.6.1.4.1.9.9.13.1 Que remarquez-vous ? 9. SNMPwalk - le reste de la MIB-II -------------------------------- Essayez d'exécuter snmpwalk sur des hôtes (routeurs, commutateurs, machines) que vous n'avez pas encore testés, dans le réseau 10.10.0.X Notez le type d'informations que vous pouvez obtenir. $ snmpwalk -c NetManage -v2c 10.10.0.X ifDescr $ snmpwalk -c NetManage -v2c 10.10.0.X ifTable $ snmpwalk -c NetManage -v2c 10.10.0.X ifAlias $ snmpwalk -c NetManage -v2c 10.10.0.X ifOperStatus $ snmpwalk -c NetManage -v2c 10.10.0.X ifAdminStatus $ snmpwalk -c NetManage -v2c 10.10.0.X if Pouvez-vous expliquer la différence entre ifOperStatus et ifAdminStatus ? Pouvez-vous imaginer un scénario où cela pourrait être utile ? 10. Autres choses intéressantes dans les MIB-OID -------------------- * Utilisez les OID du début de cette série d'exercices et examinez : a) les processus qui s'exécutent sur le serveur de votre voisin (hrSWRun) b) l'espace disque disponible sur le serveur de votre voisin (hrStorage) c) les interfaces sur le serveur de votre voisin (ifIndex, IfDescr) Pouvez-vous utiliser des noms abrégés pour parcourir ces tables OID ? * Faites un essai avec la commande "snmptranslate", par exemple : $ snmptranslate .1.3.6.1.4.1.9.9.13.1.3.1.3.1 * Essayez avec différents OID