Net-snmp

Un article de Wiki SOS-ADMIN.

Sommaire

Compréhension et installation de Net-SNMP

Le but de ce wiki est de vous donner les clefs pour installer le daemon snmpd sur vos serveurs en quelques minutes. Dans un autre article, je vous proposerai d'utiliser cacti pour récupérer ces informations.

Comprendre le protocole SNMP

SNMP signifie Simple Network Management Protocol

Comment ça marche SNMP, RFC SNMP

SNMP utilise le protocole UDP (protocole non connecté, sans contrôle d'erreur) sur le port 161

Comment ça marche UDP, RFC UDP

Installer Net-SNMP

Vous trouverez la documentation (en anglais) ainsi que les sources ici

Pour installer sur une gentoo

emerge net-analyzer/net-snmp
rc-update add snmpd default

C'est tout pour gentoo :o) Glissez ici : Configurer Net-SNMPD.

Pour installer sur une debian

apt-get install snmpd

C'est tout pour debian :o) Glissez ici : Configurer Net-SNMPD.

Pour installer sur un système redhat (version dite '7.2' d'un hébergeur français par exemple)

cd /usr/src/
wget http://prdownloads.sourceforge.net/net-snmp/net-snmp-5.3.pre4.tar.gz?download
tar -zxf net-snmp-5.3.pre4.tar.gz 
rm -f net-snmp-5.3.pre4.tar.gz
cd net-snmp-5.3.pre4

#compilation par defaut (modifiez les quelques paramètres)
./configure \
--with-default-snmp-version="3" \
--with-sys-contact="adresse_email@domaine.com"  \
--with-sys-location="nsxxx at xxx" \
--with-logfile="/var/log/snmpd.log" \
--with-persistent-directory="/var/net-snmp" 

make && make install

Il faut ensuite créer le script pour démarrer snmtpd, copiez le texte ci-dessous et enregistrez le dans /etc/init.d/snmpd

#!/bin/sh
#
# snmpd This shell script takes care of starting and stopping
#       the net-snmp SNMP daemon
#
# chkconfig: - 26 74
# description: snmpd is net-snmp SNMP daemon.

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

RETVAL=0
name="snmpd"
prog="/usr/local/sbin/snmpd"

[ -x $prog -a -f /etc/snmp/snmpd.conf ] || exit 0
start() {
        # Start daemons.
        echo -n $"Starting $name: "
        daemon $prog  -c /etc/snmp/snmpd.conf
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$name
        return $RETVAL
}

stop() {
        # Stop daemons.
        echo -n $"Shutting down $name: "
        killproc $prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$name
        return $RETVAL
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status $name
        RETVAL=$?
        ;;
  restart|reload)
        stop
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/$name ]; then
            stop
            start
            RETVAL=$?
        fi
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 1
esac

exit $RETVAL

Modification des droits

chown root:root /etc/init.d/snmpd 
chmod 755 /etc/init.d/snmpd 

Pour que snmpd démarre automatiquement lors du boot :

chkconfig --add snmpd

Configurer Net-SNMPD

Editons le fichier de configuration :

nano /etc/snmp/snmpd.conf
syslocation  "nsxxx at xxx"                                                            
syscontact   "adresse_email@domaine.com"                                                  
                                                                                       
com2sec privateUser    localhost     private                                              
com2sec privateUser    82.243.x.x    private                                           
com2sec privateUser    82.243.y.y    private                                           
                                                                                       
group   privateGroup   v2c           privateUser                                       
                                                                                       
view    all           included  .1                                                     
                                                                                       
access  privateGroup   ""      any       noauth    exact  all     none  all   

Ce fichier de configuration est trés simple, il donne tout les droits en lecture à la communauté 'private' depuis localhost, 82.243.x.x et 82.243.y.y .

Le protocole 2 est obligatoire (v2c dans le fichier de configuration).

Personne n'a le droit de lire depuis une autre machine et encore moins d'écrire. Par contre au niveau sécurité cela est à peu près équivalant à 0. Le configuration du protocole en version 3 pourrait améliorer un petit peu les choses mais je n'ai pas compris comment faire.

Il ne reste plus qu'à lancer le service :

#/etc/init.d/snmpd start
Starting snmpd:                                            [  OK  ]
#

Vérifions ça cela fonctionne :

snmpwalk -v 2c -c private localhost .1

Vous devez recevoir quelques milliers de lignes car nous avons demandé à recevoir à partir de .1

Mais heureusement nous pouvons demandes de commencer à un endroit plus précis de l'arborescence, voire même à ne recevoir qu'une seule information. Le kernel par exemple :

#snmpwalk -v 2c -c private localhost .1.3.6.1.2.1.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Linux nsxxxx 2.4.31grs-piv-ipv4 #1 Fri Sep 2 15:01:46 CEST 2005 i686

Malgré les quelques 5000 lignes retournées, peu d'informations nous sont utiles. Nous verrons dans le prochain épisode comment ajouter un programme pour surveiller des logiciels et en particulier mysql.