NAGIOS – Installation et configuration de l’agent SNMP

Installation et configuration de l’agent SNMP

SNMP est l’un des protocoles les plus utilisés pour contrôler et superviser les hôtes de différents types et constructeurs. L’installation et la configuration de l’agent sur l’hôte sont nécessaires si vous souhaitez le surveiller à partir d’un serveur de supervision comme Nagios ou de tout autre logiciel qui utilise le protocole SNMP. Dans cette partie, nous allons décrire les étapes nécessaires à l’installation et la configuration de l’agent SNMP sur un serveur Linux, un serveur Windows et un équipement réseau Cisco.

1. Activer SNMP sur un serveur Linux

Nous allons effectuer l’installation d’un agent SNMP sur un serveur Linux avec une distribution Ubuntu/Debian et une distribution CentOS/Red Hat. Nous avons besoin d’installer le paquet Net-SNMP (http://netsnmp.sourceforge.net/). Ce paquet existe dans toutes les distributions Linux et fonctionne avec presque tous les systèmes d’exploitation UNIX.

Pour installer ce paquet sur un serveur CentOS/Red Hat, il faut utiliser la commande ci-dessous :

yum install net-snmp

Pour installer ce paquet sur Ubuntu/Debian, exécutez la commande suivante :

apt-get install snmp

Après la terminaison de l’installation, nous pouvons exécuter la commande ci-dessous pour vérifier la bonne installation et aussi la version de paquet installée :

snmpget -V 
NET-SNMP version: 5.3.1

Maintenant, nous allons configurer le service SNMP en ajoutant une communauté et en autorisant les serveurs qui jouent le rôle d’un gestionnaire SNMP comme le serveur Nagios. Le fichier de configuration de service snmp est /etc/snmp/snmpd.conf, nous allons donc l’éditer avec l’éditeur de texte vi mais avant de commencer la modification, sauvegardez le fichier snmpd.conf :

cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak 
vi /etc/snmp/snmpd.conf

Puis il faut modifier les lignes suivantes en écrivant une nouvelle communauté :

 # sec.name         source         community 
com2sec notConfigUser   default  public

Comme ci-dessous :

#       sec.name  source          community 
com2sec read-only       192.168.0.0/24      Nagios!@comm

Cette modification permet au serveur de supervision qui appartient au réseau 192.168.0.0/24 d’interroger l’agent en utilisant la communauté Nagios!@comm. Le superviseur va avoir l’autorisation de lecture seulement après le mappage du nom de la sécurité « read-only » dans un nom de groupe :

#### 
# Second, map the security name into a group name: 
# groupName securityModel securityName 
group ROGroup v1 read-only 
group ROGroup v2c read-only 
####

Maintenant, il faut créer une vue pour le groupe ROGroup et lui accorder un accès en lecture seule pour cette vue :

 #### 
# Third, create a view for us to let the group have rights to: 
#       name           incl/excl     subtree         mask(optional) 
#->view    systemview     included      system 
view       all            included      .1 
#### 
# Finally, grant the group read-only access to the systemview view. 
#      group          context sec.model sec.level prefix read   write  notif 
access  ROGroup ""          any            noauth   exact  all     none  none

Nous pouvons aussi configurer les variables système sysContact et sysLocation dans le fichier snmpd.conf en changeant les lignes suivantes :

syslocation Unknown (edit /etc/snmp/snmpd.conf) 
syscontact Root  (configure /etc/snmp/snmp.local.conf)

Par :

syslocation Linux (Centos), Home Linux Server. 
syscontact VotreNom <you@example.com>

N’oubliez pas de démarrer le service SNMP pour que les modifications faites soient prises en compte.

chkconfig snmpd on 
service snmpd start

2. Activer SNMP sur un serveur Windows

Nous allons nous intéresser à installer et à configurer un agent SNMP sur un serveur Windows Server 2012. La procédure peut changer sensiblement avec d’autres versions de Windows. Les trois versions de SNMP sont supportées par Windows. Deux méthodes peuvent être utilisées pour installer SNMP sur Windows server 2012 : le mode commande et l’interface graphique.

Installation par mode commande

En utilisant la commande PowerShell ci-dessous, vous pouvez installer rapidement l’agent SNMP sur le serveur :

Get-WindowsFeature -Name *snmp* | Install-WindowsFeature

Pour vérifier l’état de l’installation, vous pouvez utiliser cette commande :

Get-WindowsFeature -Name *snmp*

La console doit afficher ce résultat :

images/06EP04.PNG

Ceci montre que la commande d’installation a aussi installé d’autres fonctionnalités contenant SNMP dans leurs noms à savoir :

  • Outils SNMP (”RSAT-SNMP”) : ensemble d’outils pour administrer le service SNMP.

  • Service SNMP (”SNMP-Service”) : le service SNMP en lui-même

  • Fournisseur WMI SNMP (”SNMP-WMI-Provider”) : cette fonctionnalité permet aux scripts WMI et applications d’accéder aux informations SNMP. Les clients peuvent utiliser les interfaces WMI pour communiquer avec les périphériques réseau qui utilisent le protocole SNMP et peuvent recevoir des traps SNMP comme des événements WMI.

Installation par interface graphique

Si le mode PowerShell n’est pas disponible, vous pouvez installer SNMP par le mode graphique.

Pour commencer l’installation, ouvrez le panneau de configuration Windows et sélectionnez Programmes et fonctionnalités. Puis, choisissez l’option Activer ou désactiver des fonctionnalités Windows :

images/06EP05.PNG

Cliquez sur Suivant et sélectionnez l’option Installation basée sur un rôle ou une fonctionnalité :

images/06EP06.PNG

Dans la page Sélectionner le serveur de destination, sélectionnez un serveur dans le pool de serveurs auquel vous souhaitez installer l’agent SNMP :

images/snmp-1.png

Cliquez sur Suivant dans la page Rôles de serveur pour passer à la page de sélection des fonctionnalités.

images/06EP08.PNG

Sélectionnez Service SNMP et cliquez sur Suivant :

images/06EP09.PNG

Cliquez sur Ajouter des fonctionnalités pour inclure les outils de gestion de service SNMP dans l’installation. Enfin, cliquez sur Install et le service SNMP s’installe ensuite :

images/06EP10.PNG

Après l’installation, il nous faut maintenant configurer le service SNMP. La configuration consiste à aller dans le gestionnaire de services Windows, sélectionner le service SNMP et puis créer une communauté et ajouter l’adresse IP de serveur de supervision dans la liste des adresses autorisées.

images/06EP11.PNG

Un double clic sur le nom du service et la fenêtre de configuration s’ouvre. Ensuite il faut choisir l’onglet Sécurité pour configurer le service SNMP. Pour autoriser le contrôle de notre serveur Windows, nous allons ajouter une communauté Nagios@Win2016! en lecture seule et ajouter l’adresse IP de notre serveur de supervisions dans liste d’hôtes autorisés.

images/06EP12.PNG

Maintenant, notre serveur Windows est prêt à être supervisé en utilisant le protocole SNMP. Il nous faut redémarrer le service SNMP pour qu’il prenne en compte la nouvelle configuration.

3. Activer SNMP sur un équipement Cisco

Le protocole SNMP est le seul moyen qui peut être utilisé pour superviser les équipements réseau tels que les routeurs et les switchs Cisco. Dans cette section, nous allons installer et configurer un agent SNMP sur un switch Cisco en utilisant la ligne de commande. La configuration d’un agent SNMP sur un équipement Cisco est semblable aux configurations des serveurs. En effet,  la configuration consiste à ajouter seulement une communauté en précisant les autorisations.

Pour modifier la configuration d’un équipement Cisco, il faut se connecter à son terminal par Telnet, SSH ou via le câble console puis entrer sous le mode privilégié « enable ». Ensuite, passez au mode configuration en utilisant la commande ci-dessous :

Router# configure terminal

Il ne reste qu’à employer la commande ci-dessous pour activer SNMP avec la communauté « Nagios@Cisco2016! » en lecture seul.

Router(config)# snmp-server community Nagios@Cisco2016! RO

Maintenant, quittez le mode configuration et enregistrez les modifications faites :

Router(config)# exit 
Router# write memory  
Building configuration... 
[OK]  
Router#

Voilà, notre équipement réseau est prêt à être supervisé par SNMP, nous pouvons passer à la phase de test comme il est décrit dans la section suivante.

4. Test SNMP

Après avoir activé et configuré un agent SNMP sur l’hôte, nous devons effectuer des tests pour nous assurer que la communication entre notre serveur de supervision et l’hôte fonctionne correctement. Le paquet Net-SNMP est livré avec un couple de commandes très utiles pour faire nos tests.

La première commande snmpget permet d’interroger l’hôte sur un OID précis. La syntaxe de la commande est la suivante :

snmpget [options] Adresse-IP OID ... 

Voyons les options disponibles avec cette commande :

  • -h, –help : cette option affiche le message d’aide.

  • -V, –version : cette option affiche la version du paquet Net-SNMP.

  • -c : cette option définie la chaîne communauté à utiliser.

  • -v : cette option spécifie la version SNMP (1 | 2c | 3) à utiliser.

  • -t : cette option spécifie le délai d’attente d’une réponse en secondes.

  • -r : cette option spécifie le nombre de tentatives.

L’exemple suivant permet de savoir l’état du port 22 d’un switch.

snmpget -v1 -c private 192.168.0.130 IF-MIB::ifOperStatus.122

Si la configuration précédente de l’agent SNMP est correcte, vous obtenez un résultat comme le suivant :

IF-MIB::ifOperStatus.122 = INTEGER: up(1)

La deuxième commande offerte par Net-SNMP est snmpwalk. Cette commande permet de parcourir toutes les informations accessibles sur un hôte. La commande snmpwalk accepte les mêmes options de la commande snmpget.

Voici un exemple d’une commande snmpwalk qui parcourt toute l’arborescence MIB avec agent SNMPv1 installé sur une machine Linux :

snmpwalk -v 1 -c Nagios!@comm 192.168.0.120

Les informations retournées par la commande dépendent de l’hôte interrogé.

SNMPv2-MIB::sysDescr.0 = STRING: Linux srv-linux 
2.6.32-573.12.1.el6.x86_64 #1 SMP
Tue Dec 15 21:19:08 UTC 2015 x86_64 
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (414172057) 47 days,
22:28:40.57 
SNMPv2-MIB::sysContact.0 = STRING: Root (configure /etc/snmp/snmp.local.conf) 
SNMPv2-MIB::sysName.0 = STRING: srv-linux 
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf) 
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (22) 0:00:00.22 
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1 
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance 
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance 
[....] 
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: 65536 
IF-MIB::ifMtu.2 = INTEGER: 1500 
IF-MIB::ifSpeed.1 = Gauge32: 10000000 
IF-MIB::ifSpeed.2 = Gauge32: 4294967295 
IF-MIB::ifPhysAddress.1 = STRING: 
IF-MIB::ifPhysAddress.2 = STRING: 0:50:56:ba:c7:ca 
IF-MIB::ifAdminStatus.1 = INTEGER: up(1) 
IF-MIB::ifAdminStatus.2 = INTEGER: up(1) 
IF-MIB::ifOperStatus.1 = INTEGER: up(1) 
IF-MIB::ifOperStatus.2 = INTEGER: up(1) 
[....] 

Ces informations sont classées par MIB suivi de l’OID correspondant. Par exemple, la ligne IF-MIB::ifNumber.0 = INTEGER: 2 signifie que OID « ifNumber.0 » qui est repris dans la MIB « IF-MIB » est associé à une valeur de type INTEGER qui vaut 2. Cela signifie que le serveur Linux interrogé possède deux interfaces réseau qui est justifié par les deux lignes IF-MIB::ifDescr.1 = STRING: lo et IF-MIB::ifDescr.2 = STRING: eth0.

La commande snmpwalk permet aussi de ne parcourir qu’une partie de l’arborescence MIB. Il suffit de passer le préfixe de l’arbre que vous intéresse. Par exemple, la commande snmpwalk ci-dessous interroge l’hôte 192.168.0.120 pour avoir la valeur de l’OID 1.3.6.1.2.1.2.1.

snmpwalk -v 1 -c Nagios!@comm 192.168.0.120 1.3.6.1.2.1.2.1 
 
IF-MIB::ifNumber.0 = INTEGER: 2