LINUX:Serveur ou agent SNMP sous Linux
But
Pour nos applications futures, nous avons besoin d'installer le service SNMP sous Linux. Nous nous cantonnerons à la lecture des informations.
Installation
La première étape consiste à installer le paquet:
dnf install net-snmp
et éventuellement quelques outils:
dnf install net-snmp-utils
Configuration
Base
Le fichier de configuration principal se nomme "/etc/snmp/snmpd.conf".
Son contenu minimal est fort restreint. Il nous suffira. Nous aborderons la sécurité au point suivant.
Voici son contenu:
syslocation "Home" syscontact "A. De Bast" dontLogTCPWrappersConnects yes smuxsocket 1.0.0.0
Description:
- Les deux premières lignes donnent quelques informations sur le point de contact et la localisation.
- La troisième sert à limiter la journalisation.
- La dernière sert à mettre en erreur l'écoute sur le port TCP/199 SMUX qui ne nous sert pas et donc à supprimer un port d'écoute.
Sécurité versions v1 et v2c
Ce service est compatible pour la sécurité v1 et v2c.
Pour l'activer, il faut définir une communauté.
On ajoute donc au fichier "/etc/snmp/snmpd.conf":
rocommunity publicr 192.168.1.100
On se limite la lecture seule d'où l'option "rocommunity". Le nom de communauté est ici "publicr" à adapter selon votre choix. Le second paramètre facultatif permet de restreindre l'accès à la machine superviseur ayant l'adresse IP "192.168.1.100".
Sécurité version v3
Ce service est compatible pour la sécurité v3.
Pour l'activer, il faut créer un utilisateur en utilisant la commande de ligne "net-snmp-create-v3-user". Avant de l'exécuter, il faut que le service "snmpd.service" soit arrêté sinon vous aurez un message d'erreur.
Si on exécute cette commande telle quelle, diverses questions sont posées interactivement. Nous allons plutôt ajouter directement les arguments nécessaires:
net-snmp-create-v3-user -ro -A MotDEPasseUtilisateur -a MD5 -X MotDepasseCryptage -x AES usersnmp
Description des arguments:
- "--ro" : accès en lecture seule
- "usersnmp" : nom d'utilisateur; à adapter selon votre choix
- "-A MotDEPasseUtilisateur" : mot de passe de l'utilisateur; à adapter selon votre choix
- "-a MD5" : mode de cryptage du mot de passe
- "-x AES" : type de cryptage du transfert d'informations
- "-X MotDepasseCryptage" : mot de passe du cryptage; à adapter selon votre choix
Une ligne est ajoutée au fichier "/etc/snmp/snmpd.conf":
rouser usersnmp
Cette option a en premier le nom d'utilisateur donné plus haut.
On peut ajouter d'autres arguments.
Un est à noter. Il concerne le niveau de sécurité. Il est composé de deux parties:
- En premier:
- auth : le mot de passe de l'utilisateur est requis
- noauth : le mot de passe de l'utilisateur n'est pas requis
- En second:
- priv : le mot de passe du cryptage est requis
- nopriv : le mot de passe du cryptage n'est pas requis
On peut avoir les combinaisons suivantes: authpriv, noauthpriv, authnopriv et noauthnopriv Par défaut, c'est le niveau "authnopriv" qui est utilisé.
Une autre ligne est ajoutée au fichier "/var/lib/net-snmp/snmpd.conf" liée aux informations du nouvel utilisateur. Ce fichier ne doit jamais être édité!!!
Lors du démarrage suivant du service "snmpd.service", cette ligne sera modifiée; les mots de passe seront cryptés.
Remarque
Ces deux niveaux de sécurité v1, v2c et v3 peuvent coexister mais il est évident que le niveau v3 est plus sécurisé et donc il est préférable de désactiver les options concernant la communauté de v1 et v2c.
Activation et lancement du service
Le service à lancer est "snmpd.service". La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service.
systemctl enable snmpd.service systemctl start snmpd.service systemctl restart snmpd.service
Configurer le mur de feu ou FireWall
Vous avez sûrement activé le FireWall du serveur. Dans l'exemple, on désire que seul la machine superviseur ayant l'adresse IP "192.168.1.100" aie accès. Le service Snmp écoute sur le port UDP 161.
On ajoute du côté serveur, la règle:
-A INPUT -p udp -m udp --dport 161 -s 192.168.1.100 -j ACCEPT
Du côté client, on peut ajouter la règle si vous effectuez un filtrage en sortie:
-A OUTPUT -p udp -m udp --dport 161 -d 192.168.1.100 -j ACCEPT
Ces règles sont à ajouter au fichier "/etc/sysconfig/iptables".