Ceci est une ancienne révision du document !
Table des matières
Installation des services SNMP
Nous allons utiliser une Ubuntu 10.4 (lucid lynx) pour la démonstration. Il existe deux paquets fondamentaux :
snmp
qui va installer les outils clients ;snmpd
qui va installer le serveur snmp.
aptitude install snmp snmpd
Le pack « snmpd »
$ aptitude show snmpd Paquet : snmpd État: installé Automatiquement installé: non Version : 5.4.2.1~dfsg0ubuntu1-0ubuntu2.1 Priorité : optionnel Section : net Responsable : Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com> Taille décompressée : 1 257k Dépend: libc6 (>= 2.4), libsnmp15 (>= 5.4.2.1~dfsg), libwrap0 (>= 7.6-4~), debconf (>= 0.5) | debconf-2.0, adduser, debconf, lsb-base (>= 3.2-13) Est en conflit: snmp (< 3.6-3), snmptraplogd Remplace: snmptraplogd Description : SNMP (Simple Network Management Protocol) agents The Simple Network Management Protocol (SNMP) provides a framework for the exchange of management information between agents (servers) and clients. The Net-SNMP agent is a daemon which listens for incoming SNMP requests from clients and provides responses. Site : http://net-snmp.sourceforge.net/
Contenu du pack
$ dpkg -L snmpd /. ... /usr/sbin /usr/sbin/snmpd /usr/sbin/snmptrapd ... /etc /etc/default /etc/default/snmpd /etc/snmp /etc/snmp/snmpd.conf /etc/snmp/snmptrapd.conf /etc/init.d /etc/init.d/snmpd
Peu d'exécutables (les « daemons » snmpd
et snmptrapd
) et quelques fichiers de configuration qui proposent par défaut, à l'habitude des distributions GNU/Linux, un usage très restreint de snmp.
Première configuration
Le gros travail va être de se plonger dans /etc/snmp/snmpd.conf
. Il est encore un peu tôt pour étudier les arcanes de ce fichier, aussi nous contenterons-nous pour l'instant d'une recette. Voici les modifications à apporter :
#### # First, map the community name (COMMUNITY) into a security name # (local and mynetwork, depending on where the request is coming # from): # sec.name source community #com2sec paranoid default public com2sec readonly default public #com2sec readwrite default private # Third, create a view for us to let the groups have rights to: # incl/excl subtree mask view all included .1 view system included .1.3.6.1.2.1.1 #view system included .iso.org.dod.internet.mgmt.mib-2.systemIl suffit de relancer le service
snmpd
:
/etc/init.d/snmpd restart
et notre serveur devrait être en mesure de servir toutes les informations qu'il connait, à condition de les lui demander localement (pas depuis le réseau, question de sécurité).
Vérification
Avons-nous un service udp à l'écoute sur le port 161 ?
# netstat -laupn
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name
udp 0 0 127.0.0.1:161 0.0.0.0:* 1717/snmpd
udp 0 0 0.0.0.0:68 0.0.0.0:* 620/dhclient
udp 0 0 0.0.0.0:49122 0.0.0.0:* 599/avahi-daemon: r
udp 0 0 0.0.0.0:5353 0.0.0.0:* 599/avahi-daemon: r
Il y a bien un processus à l'écoute d'UDP sur le port 161, uniquement sur l'interface locale.
Le fait que notre snmpd
n'écoute que sur l'interface locale, sur Debian et dérivées, vient du fichier /etc/default/snmpd
, mais ceci est encore une autre histoire, que nous raconterons plus tard.
Le pack « snmp »
$ aptitude show snmp Paquet : snmp État: installé Automatiquement installé: non Version : 5.4.2.1~dfsg0ubuntu1-0ubuntu2.1 Priorité : optionnel Section : net Responsable : Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com> Taille décompressée : 1 475k Dépend: libc6 (>= 2.4), libsnmp15 (>= 5.4.2.1~dfsg), libssl0.9.8 (>= 0.9.8k-1) Recommande: perl-modules Description : SNMP (Simple Network Management Protocol) applications The Simple Network Management Protocol (SNMP) provides a framework for the exchange of management information between agents (servers) and clients. The Net-SNMP applications are a collection of command line clients for issuing SNMP requests to agents. Site : http://net-snmp.sourceforge.net/
Contenu
Il n'y a rien de spécial à configurer ici. Nous disposons principalement d'une quantité impressionnante d'outils destinés à interroger un serveur snmp :
$ dpkg -L snmp /. ... /usr/bin /usr/bin/snmpbulkget /usr/bin/snmpbulkwalk /usr/bin/snmpconf /usr/bin/snmpdelta /usr/bin/snmpdf /usr/bin/snmpget /usr/bin/snmpgetnext /usr/bin/snmpnetstat /usr/bin/snmpset /usr/bin/snmpstatus /usr/bin/snmptable /usr/bin/snmptest /usr/bin/snmptranslate /usr/bin/snmptrap /usr/bin/snmpusm /usr/bin/snmpvacm /usr/bin/snmpwalk /usr/bin/encode_keychange /usr/bin/fixproc /usr/bin/traptoemail /usr/share/man/man1/snmpinform.1.gz /usr/bin/snmpinform
Beaucoup d'utilitaires, pas de fichiers de configuration et de la documentation (enlevée dans la liste pour plus de lisibilité). Dans l'immédiat, tout ceci ne nous avance pas beaucoup, notre serveur snmpd
n'étant pas encore vraiment opérationnel.
Vérification
Pas question d'entrer déjà dans les détails. Ici aussi une simple recette permettra d'espérer que tout ceci fonctionne :
~$ snmpwalk -c public -v 1 localhost
devrait dérouler une longue liste de choses pour le moment incompréhensibles. Notez qu'il n'est nul besoin de privilèges root
pour extraire ces informations.
SNMPv2-MIB::sysDescr.0 = STRING: Linux lucid0 2.6.32-23-generic #37-Ubuntu SMP Fri Jun 11 08:03:28 UTC 2010 x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (9217) 0:01:32.17 SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmpd.local.conf) SNMPv2-MIB::sysName.0 = STRING: lucid0 SNMPv2-MIB::sysLocation.0 = STRING: Unknown (configure /etc/snmp/snmpd.local.conf) SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup SNMPv2-MIB::sysORDescr.1 = STRING: The SNMP Management Architecture MIB. SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching. SNMPv2-MIB::sysORDescr.3 = STRING: The management information definitions for the SNMP User-based Security Model. SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP. SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.2 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.3 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.4 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.5 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.6 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.7 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.8 = Timeticks: (0) 0:00:00.00 IF-MIB::ifNumber.0 = INTEGER: 2 IF-MIB::ifIndex.1 = INTEGER: 1 IF-MIB::ifIndex.2 = INTEGER: 2 IF-MIB::ifDescr.1 = STRING: lo IF-MIB::ifDescr.2 = STRING: eth0 IF-MIB::ifType.1 = INTEGER: softwareLoopback(24) IF-MIB::ifType.2 = INTEGER: ethernetCsmacd(6) IF-MIB::ifMtu.1 = INTEGER: 16436 IF-MIB::ifMtu.2 = INTEGER: 1500 ...