Cette série d’articles rassemble tous les sujets autour du SNMP et Centreon. Au cours des années, Centreon a sans cesse évolué, pour vous proposer une gestion du SNMP la plus robuste qui soit. Bien-sûr, j'ai du adapter mes articles en fonction de ces évolutions. Je vous propose la lecture suivantes de mes articles :
   - Ci-dessous, un résumé sur la configuration SNMP sur Debian en SNMP V2 et V3 ainsi que les premiers paramétrages de centreon
   - Les traps SNMP, leurs configurations pour Debian et une explication du fonctionnement des traps SNMP avec SNMPTT et Centreon postérieur à 2.5x
   - Traps avec Centreon 2.4, configuration des traps avec la version Centreon 2.4x
   - Traps avec Centreon 2.5, configuration des traps avec la version Centreon 2.5x
   - Les traps avec CES et Centreon 2.5, configuration d'une architecture distribuée avec CES 3.x
   - Ci-dessous, un résumé sur la configuration SNMP sur Debian en SNMP V2 et V3 ainsi que les premiers paramétrages de centreon
   - Les traps SNMP, leurs configurations pour Debian et une explication du fonctionnement des traps SNMP avec SNMPTT et Centreon postérieur à 2.5x
   - Traps avec Centreon 2.4, configuration des traps avec la version Centreon 2.4x
   - Traps avec Centreon 2.5, configuration des traps avec la version Centreon 2.5x
   - Les traps avec CES et Centreon 2.5, configuration d'une architecture distribuée avec CES 3.x
Cet article va vous permettre d'appréhender les méandres de la configuration SNMP sur un serveur Debian. Nous verrons aussi les subtilités des traps SNMP avec la configuration de Centreon sur cette page. Je ne prétends être un Gourou du SNMP par contre vous aurez les bases pour allez plus loin dans vos configurations. Tout d'abord, il faudra bien paramétrer votre serveur de supervision autant pour les requêtes SNMP (polling) que les alertes SNMP (trap).
1 Configuration du SNMP V 2c sur un serveur Debian
Le protocole SNMP va nous permettre de superviser nos serveurs en étant le moins intrusif possible. Nous éviterons tout de même de mettre l'autorisation en modification, la lecture seule suffira. Si vous voulez une sécurité maximale, privilégiez la version 3 du snmp mais plus complexe à mettre en oeuvre. Nous utiliserons la version 2c dans un premier temps.
Si le SNMP n'est pas installé, saisissez la commande suivante :
Si le SNMP n'est pas installé, saisissez la commande suivante :
apt-get install snmp snmpd libnet-snmp-perl libsnmp-perl
Les librairies snmp pour Perl sont nécessaires si vous utilisez les plugins snmp de Nagios et Centreon.
apt-get install libnet-snmp-perl libsnmp-perl
Pour le fonctionnement du SNMP, modifiez le fichier /etc/snmp/snmpd.conf pour avoir :
-
Debian version actuelle
agentAddress udp:161
rocommunity public 172.16.209.141
iquerySecName internalUser
on peut aussi mettre localhost pour n'autoriser seulement le serveur à s'interroger lui-même.agentAddress udp:localhost:161
rocommunity public localhost
iquerySecName internalUser-
Debian version 6
agentAddress udp:161
rocommunity public 172.16.209.141
on peut aussi mettre localhost pour n'autoriser seulement le serveur à s'interroger lui-même.agentAddress udp:localhost:161
rocommunity public localhost-
Debian version 5
# sec.name source community
#com2sec paranoid default public
com2sec readonly default public
#com2sec readwrite default private
Pour éviter d’avoir un deamon snmpd trop bavard, (réduction des logs), modifier le fichier /etc/default/snmpd
-
Debian systemd
- Modifier le fichier /lib/systemd/system/snmpd.service
.....
ExecStart=/usr/sbin/snmpd -LS4d -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux,mteTrigger,mteTriggerConf -f -p /run/snmpd.pid
.....ou lancez la commande suivantesed -i -e "s/-Lsd/-LS4d/g" /lib/systemd/system/snmpd.service
-
Debian SysV init
- Modifier le fichier /etc/default/snmpd
# snmpd options (use syslog, close stdin/out/err).
SNMPDOPTS='-LS4d -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid'ou lancez la commande suivantesed -i -e "s/-Lsd/-LS4d/g" /etc/default/snmpd
l'option -LS4d règle le niveau d'information dans le fichier /var/log/syslog. 7 est le niveau d'information complet, mais dans la pratique on privilégie le niveau 4. Celui-ci ne remontant que les erreurs. On peut ajouter des informations administratives comme ci-dessous
syscontact admin@domaine.com
syslocation Local Server
relancer snmpd
-
Debian systemd
systemctl daemon-reload
systemctl restart snmpd-
Debian SysV init
service snmpd restart
Vérification du bon fonctionnement, saisir la ligne suivante
snmpwalk -c public -v 2c 172.16.209.141
ou localhost comme indiqué précédemment
snmpwalk -c public -v 2c localhost
SI vous avez saisi l'adresse IP, saisir cette ligne.
snmpwalk -c public -v 2c 172.16.209.141
Vous devez obtenir une très longue liste d'OID SNMP.
2 Configuration du SNMP V 3 sur un serveur Debian
Le gros défaut du SNMP V2c est le manque de cryptage et l'absence d'authentification par mot de passe. Je vous propose une initiation au SNMP V3 avec une Debian. Tout d'abord, ajoutez le pré requis comme ceci :
apt-get install libcrypt-des-ede3-perl libcrypt-rijndael-perl libsnmp-dev
Le paquet libcrypt-des-ede3-perl sera nécessaire pour l’algorithme de cryptage MD5/DES. Le paquet libcrypt-rijndael-perl sera nécessaire pour l’algorithme de cryptage SHA/AES. Et enfin le paquet libsnmp-dev sera néssaire pour la commande net-snmp-config. Nous devons ajouter, maintenant, un utilisateur SNMP. Nous aurons besoin d'un mot de passe d'authentification (authpassphrase) et d'une clé de chiffrement des trames (privpassphrase). Ce mot de passe et cette clé ont respectivement un algorithme de chiffrement MD5/SHA et AES/AES comme ci-dessous :
user : netadmin
authpassphrase : azerty98
algorithme : MD5/SHA
privpassphrase : supervision
algorithme : DES/AES
Pour configurer cet utilisateur, il est fortement conseillé d'arrêter le service snmp. Arrêtez le service SNMP.
-
Debian systemd
systemctl stop snmpd
-
Debian SysV init
service snmpd stop
pour le coupe MD5/DES
pour le coupe SHA/AES
net-snmp-config --create-snmpv3-user -ro -a azerty98 -x supervision -X DES -A MD5 netadmin
pour le coupe SHA/AES
net-snmp-config --create-snmpv3-user -ro -a maison72 -x supervision -X AES -A SHA netadmin
-
Debian systemd
systemctl start snmpd
-
Debian SysV init
service snmpd start
C'est terminé, simple non ? mais c'est une configuration très basique. Il manque la gestion des ACL et bien d'autres chose encore. Pour l'instant, vérifions que nous avons accès à la mib. Vérifions si le protocole SNMP (UDP 161) écoute bien toutes les adresses IP en éditant le fichier /etc/snmp/snmpd.conf.
agentAddress udp:161
Pour parcourir la mib, on utilisera la commande snmpwalk avec les paramètres suivants
Pour le couple MD5/DES
Pour le couple SHA/AES
snmpwalk -v 3 -u netadmin -l authPriv -a MD5 -A azerty98 -x DES -X supervision 127.0.0.1
Pour le couple SHA/AES
snmpwalk -v 3 -u netadmin -l authPriv -a SHA -A azerty98 -x AES -X supervision 127.0.0.1
Et pour obtenir une valeur de la mib tel que le uptime du serveur, utilisez cette commande :
snmpget -v 3 -u netadmin -l authPriv -a MD5 -A azerty98 -x DES -X supervision 172.16.209.141 sysUpTime.0
Résultat
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (43805) 0:07:18.05
Le résultat de la commande précédente peut aboutir à un échec comme ci-dessous.
sysUpTime.0: Unknown Object Identifier (Sub-id not found: (top) -> sysUpTime)
Ce message indique que le service SNMP ne trouve pas l'objet sysUpTime car il ne connait pas la table de correspondance entre ce mot clé et les objets OID de la mib. Il faut alors utiliser la numérotation pointée comme ceci.
snmpget -v 3 -u netadmin -l authPriv -a MD5 -A azerty98 -x DES -X supervision 172.16.209.51 .1.3.6.1.2.1.1.3.0
Cette commande vous retournera la valeur de l'OID
iso.3.6.1.2.1.1.3.0 = Timeticks: (140050) 0:23:20.50
Je vous conseille fortement d'installer le paquet snmp-mibs-downloader contenant le dictionnnaire des mibs.
3 Configuration du SNMP avec Centreon
Pour la configuration SNMP, il est fortement recommandé d'utiliser le mécanisme de modèle (template) d'hôte associé aux modèle de service. Grâce à celui-ci, la configuration SNMP sera indiqué au niveau de l'hôte et sera propagé à tous les services utilisant le SNMP. Cela réduit le risque d'erreur et permet un gain de temps considérable.
3.1 SNMP v2c
3.1.a ISO Centreon
La configuration du SNMP est très facile avec une ISO Centreon et ses plugins packs. Il suffit de sélectionnez la configuration des hôtes, ajoutez un hôte. Pour bien configurer le SNMP, vous aurez besoin de la version et du nom de communauté SNMP. Il est évident qu'il vous faudra un template d'hôte adapté au SNMP. Si le template est un template fourni par Centreon, n'oubliez pas de prendre le template suffixé avec custom.
Ajoutez votre hôte, appliquez la configuration. Votre supervision devrait ressembler à cette copie d'écran ci-dessous.
3.1.b Version Debian installation par script
La configuration sera identique, seul le template d'hôte change.
3.2 SNMP v3
3.2.a ISO Centreon
Pour la version 3, nous n'avons plus besoin du nom de communauté. Il faudra indiquer la version 3 du SNMP. Par contre les options d'authentification devront être saisies dans la macro d'hôte du template correspondant au SNMP (en général cette macro se nomme SNMPEXTRAOPTIONS). Si le template est un template fourni par Centreon, n'oubliez pas de prendre le template suffixé avec custom.
Pour connaître les options SNMP V3 du plugin, il suffit de vous connecter en ligne de commande sur votre Central et saisir la commande d'un plugin fonctionnant en SNMP. Par exemple, la commande centreon_linux_snmp.pl. Pour obtenir les options SNMP, vous devez l'associer avec un mode. exemple :
Pour connaître les options SNMP V3 du plugin, il suffit de vous connecter en ligne de commande sur votre Central et saisir la commande d'un plugin fonctionnant en SNMP. Par exemple, la commande centreon_linux_snmp.pl. Pour obtenir les options SNMP, vous devez l'associer avec un mode. exemple :
/usr/lib/centreon/plugins//centreon_linux_snmp.pl --plugin=os::linux::snmp::plugin --mode=cpu --help
Vous obtiendrez une longue liste de paramètres, seul la section SNMP nous intéressera :
Snmp Options: --hostname Hostname to query (required). --snmp-community Read community (defaults to public). --snmp-version Version: 1 for SNMP v1 (default), 2 for SNMP v2c, 3 for SNMP v3. --snmp-port Port (default: 161). --snmp-timeout Timeout in secondes (default: 1) before retries. --snmp-retries Set the number of retries (default: 5) before failure. --maxrepetitions Max repetitions value (default: 50) (only for SNMP v2 and v3). --subsetleef How many oid values per SNMP request (default: 50) (for get_leef method. Be cautious whe you set it. Prefer to let the default value). --snmp-autoreduce Auto reduce SNMP request size in case of SNMP errors (By default, the divisor is 2). --snmp-force-getnext Use snmp getnext function (even in snmp v2c and v3). --snmp-username Security name (only for SNMP v3). --authpassphrase Authentication protocol pass phrase. --authprotocol Authentication protocol (MD5|SHA) --privpassphrase Privacy protocol pass phrase --privprotocol Privacy protocol (DES|AES) --contextname Context name --contextengineid Context engine ID --securityengineid Security engine ID --snmp-errors-exit Exit code for SNMP Errors (default: unknown)
J'ai noté en gras, ci-dessus, les options que nous utiliserons pour le SNMP V3. J'utiliserai l'authentification MD5/DES ci dessous :
/usr/lib/centreon/plugins//centreon_linux_snmp.pl --plugin=os::linux::snmp::plugin --mode=cpu --hostname=192.168.1.170 --snmp-version='3' --snmp-username='netadmin' --authprotocol='MD5' --authpassphrase='azerty98' --privprotocol='DES' --privpassphrase='supervision' --warning-average='80' --critical-average='90'
Il suffit de saisir cette chaine dans la macro SNMPEXTRAOPTIONS
--snmp-username='netadmin' --authprotocol='MD5' --authpassphrase='azerty98' --privprotocol='DES' --privpassphrase='supervision'
3.2.b Version Debian installation par script
La configuration est identique à l'ISO Centreon, seul le nom de la macro change.
Attention, la confidentialité obtenue avec l'option Password a ses limites. Si vous ne pouvez plus lire la chaine dans la configuration de l'hôte.
Il n'en est pas de même pour l'option Command dans Ressource Status. La ligne de commande est en clair. Il faudra passer par des options de chiffrage comme avec l'option pass-manager.
Sources :
Le bloc de Cédric Temple, configuration avancée de SNMP sur Linux : https://blog.cedrictemple.net/341-configuration-avancee-de-snmp-sur-linux-snmpv3
Le blog de Noobunbox, configurez SNMP V3 sous Debian : https://www.noobunbox.net/serveur/monitoring/configurer-snmp-v3-sous-debian/
Le blog de Noobunbox, configurez SNMP V3 sous Debian : https://www.noobunbox.net/serveur/monitoring/configurer-snmp-v3-sous-debian/