L’auteur a choisi Internet Archive pour recevoir un don dans le cadre du programme Write for DOnations.
Le rôle d’un administrateur système consiste en grande partie à recueillir des informations précises sur les serveurs et l’infrastructure. Il existe un certain nombre d’outils et d’options pour la collecte et le traitement de ce type d’informations. Beaucoup d’entre eux sont construits sur la base d’une technologie appelée SNMP.
SNMP est l’abréviation de simple network management protocol (protocole simple de gestion de réseau). C’est un moyen pour les serveurs de partager des informations sur leur état actuel, et aussi un canal par lequel un administrateur peut modifier des valeurs prédéfinies. Si le protocole lui-même est léger, la structure des programmes qui implémentent SNMP peut rapidement gagner en complexité. Pour plus d’informations sur les bases du protocole SNMP, consultez notre article Introduction au SNMP.
Dans ce guide, vous allez configurer les outils pour communiquer en utilisant le SNMP. Vous utiliserez deux serveurs Ubuntu 18.04 pour la démonstration. L’un contiendra le manager SNMP, qui parle à l’agent pour implémenter des dispositifs réseau. Il sera appelé manager server. L’autre serveur contiendra l’agent SNMP, qui agira sur les ordres du manager server. Il sera appelé agent server. Vous pouvez également choisir d’installer l’agent sur la machine manager, mais en les gardant séparés, il est plus facile de démontrer les fonctionnalités fournies par chaque composant.
Pour suivre ce tutoriel, vous aurez besoin de :
ufw
.Vous pouvez commencer à explorer comment le SNMP peut être implémenté sur un système en installant le démon et les outils sur vos serveurs Ubuntu.
Depuis votre machine locale, connectez-vous au manager server en tant qu’utilisateur non root :
- ssh your_username@manager_server_ip_address
Mettez à jour l’index des paquets pour le gestionnaire de paquets APT :
- sudo apt update
Ensuite, installez le logiciel SNMP :
- sudo apt install snmp snmp-mibs-downloader
Le paquet snmp
fournit un ensemble d’outils en ligne de commande pour émettre des requêtes SNMP aux agents. Le paquet snmp-mibs-downloader
aidera à installer et à gérer les fichiers MIB (Management Information Base), qui gardent la trace des objets du réseau.
Ensuite, ouvrez un nouveau terminal sur votre machine locale et connectez-vous à l’agent server :
- ssh your_username@agent_server_ip_address
Sur l’agent server, mettez à jour l’index des paquets :
- sudo apt update
Ensuite, installez le démon SNMP :
- sudo apt install snmpd
Notez que vous n’avez pas besoin du paquet snmp-mibs-downloader
, puisque l’agent server ne gérera pas de fichiers MIB.
Maintenant que vous avez installé ces composants, vous allez configurer votre manager server.
Comme mentionné précédemment, la majeure partie du travail se fait dans l’agent server, de sorte que votre configuration sur le manager server sera plus simple. Il vous suffit de modifier un fichier pour vous assurer que les outils SNMP peuvent utiliser les données MIB supplémentaires que vous avez installées.
Sur votre manager server, ouvrez le fichier /etc/snmp/snmp.conf
dans votre éditeur de texte avec des privilèges sudo. Ce tutoriel utilisera nano
:
- sudo nano /etc/snmp/snmp.conf
Dans ce fichier, il y a quelques commentaires et une seule ligne non commentée. Pour permettre au manager d’importer les fichiers MIB, commentez la ligne mibs :
:
# As the snmp packages come without MIB files due to license reasons, loading
# of MIBs is disabled by default. If you added the MIBs you can reenable
# loading them by commenting out the following line.
#mibs :
Enregistrez et fermez snmp.conf
en appuyant sur CTRL+X
, suivi de Y
, puis ENTER
(ENTRÉE) si vous utilisez nano
.
Vous avez maintenant terminé la configuration du manager server, mais vous devrez encore utiliser ce serveur pour vous aider à configurer votre agent server, ce que vous ferez à l’étape suivante.
En tant que véritable système client-serveur, l’agent server ne dispose d’aucun des outils externes nécessaires pour effectuer sa propre configuration SNMP. Vous pouvez modifier certains fichiers de configuration pour effectuer quelques changements, mais la plupart des changements que vous devez effectuer se feront en vous connectant à votre agent server à partir de votre manager server.
Dans ce tutoriel, vous utiliserez la version 3 du protocole SNMP. Contrairement à SNMPv1 et v2, dans SNMPv3 chaque message contient des paramètres de sécurité qui sont codés. Dans cette étape, vous allez configurer les règles d’authentification et de contrôle d’accès SNMPv3.
Pour commencer, sur votre agent server, ouvrez le fichier de configuration du démon avec des privilèges sudo :
- sudo nano /etc/snmp/snmpd.conf
À l’intérieur, vous devrez effectuer quelques modifications. Elles seront principalement utilisées pour bootstrapper votre configuration afin que vous puissiez la gérer à partir de votre autre serveur.
Tout d’abord, vous devez modifier la directive agentAdress
. Actuellement, elle est réglée pour n’autoriser que les connexions provenant de l’ordinateur local. Vous devrez commenter la ligne actuelle, et décommenter la ligne en dessous, qui autorise toutes les connexions.
# Listen for connections from the local system only
#agentAddress udp:127.0.0.1:161
# Listen for connections on all interfaces (both IPv4 *and* IPv6)
agentAddress udp:161,udp6:[::1]:161
Remarque : étant donné qu’autoriser toutes les connexions n’est pas une bonne pratique en termes de sécurité, il est préférable de reverrouiller les connexions rapidement une fois le bootstrap terminé.
Ensuite, vous insérerez temporairement une ligne createUser
. Ces directives ne sont normalement pas conservées dans ce fichier ; vous allez les supprimer à nouveau dans un instant.
L’utilisateur que vous créez sera appelé bootstrap et sera utilisé comme modèle pour créer votre premier utilisateur réel. Les paquets SNMP le font par un processus de clonage des propriétés de l’utilisateur.
Lorsque vous définissez un nouvel utilisateur, vous devez spécifier le type d’authentification (MD5 ou SHA) et fournir une phrase de passe d’au moins huit caractères. Si vous prévoyez d’utiliser le cryptage pour le transfert, comme vous le ferez dans ce tutoriel, vous devez également préciser le protocole de confidentialité (DES ou AES) et, éventuellement, une phrase de passe de protocole de confidentialité. Si aucune phrase de passe de protocole de confidentialité n’est fournie, la phrase de passe d’authentification sera également utilisée pour le protocole de confidentialité.
Ajoutez cette ligne createUser
à la fin du fichier :
...
createUser bootstrap MD5 temp_password DES
Maintenant que vous avez un nouvel utilisateur spécifié, vous pouvez configurer le niveau d’accès de cet utilisateur. Dans ce tutoriel, vous le configurerez pour votre utilisateur bootstrap, mais aussi pour le nouvel utilisateur que vous allez créer, appelé demo. Vous leur permettrez l’accès en lecture et en écriture en utilisant la directive rwuser
(l’alternative est rouser
pour l’accès en lecture seule).
Vous imposerez également l’utilisation du cryptage en spécifiant priv
après votre utilisateur. Si vous souhaitez restreindre l’utilisateur à une partie spécifique de la MIB, vous pouvez spécifier à la fin de la ligne l’identificateur de l’objet (OID) de plus haut niveau auquel l’utilisateur doit avoir accès.
Pour les besoins de ce tutoriel, vos deux lignes seront les suivantes :
...
rwuser bootstrap priv
rwuser demo priv
Lorsque vous avez terminé d’effectuer ces modifications, enregistrez et fermez le fichier.
Pour implémenter ces modifications, redémarrez le service snmpd
sur votre agent server :
- sudo systemctl restart snmpd
Le démon SNMP écoutera les connexions sur le port :161
. Configurez UFW pour autoriser les connexions depuis le manager server vers ce port :
- sudo ufw allow from manager_server_ip_address to any port 161
Pour savoir plus sur UFW, consultez le tutoriel Comment configurer un pare-feu avec UFW sur Ubuntu 18.04.
Maintenant que l’agent server est configuré, vous pouvez vous connecter à votre agent server depuis le manager server pour vérifier la connexion.
Dans cette étape, vous allez effectuer un test pour vous assurer que vous pouvez vous connecter à l’agent server avec votre compte bootstrap. Avant cela, cependant, ce tutoriel abordera un peu la structure générale de l’envoi d’une commande SNMP.
Lorsque vous utilisez la suite d’outils incluse dans le paquet snmp
(la suite logicielle net-snmp
), la façon dont vous devez appeler les commandes est régie par quelques règles. La première chose à faire est de s’authentifier auprès du démon SNMP avec lequel vous souhaitez communiquer. Cela implique généralement de fournir quelques informations. Les plus courantes sont les suivantes :
-v
: cet indicateur est utilisé pour spécifier la version du protocole SNMP que vous souhaitez utiliser. Ce tutoriel utilisera v3.-c
: cet indicateur est utilisé si vous utilisez des chaînes communautaires de type SNMP v1 ou v2 pour l’authentification. Comme vous utilisez une authentification basée sur l’utilisateur de type v3, vous n’avez pas besoin de cet indicateur.-u
: ce paramètre est utilisé pour spécifier le nom d’utilisateur avec lequel vous souhaitez vous identifier. Pour lire ou modifier quoi que ce soit en utilisant le SNMP, vous devez vous authentifier avec un nom d’utilisateur connu.-l
: ceci est utilisé pour spécifier le niveau de sécurité avec lequel vous vous connectez. Les valeurs possibles sont noAuthNoPriv
pour l’absence d’authentification et de cryptage, authNoPriv
pour l’authentification mais pas de cryptage, et authPriv
pour l’authentification et le cryptage. Le nom d’utilisateur que vous utilisez doit être configuré pour fonctionner au niveau de sécurité que vous spécifiez, sinon l’authentification ne réussira pas.-a
: ce paramètre est utilisé pour spécifier le protocole d’authentification qui est utilisé. Les valeurs possibles sont MD5
ou SHA
. Cela doit correspondre aux informations qui ont été spécifiées lorsque l’utilisateur a été créé.-x
: ce paramètre permet de spécifier le protocole de cryptage qui est utilisé. Les valeurs possibles sont DES
ou AES
. Cela doit correspondre aux informations qui ont été spécifiées lorsque l’utilisateur a été créé. Ce paramètre est nécessaire chaque fois que priv
est indiqué après la spécification de privilège de l’utilisateur, rendant le cryptage obligatoire.-A
: ceci est utilisé pour donner la phrase de passe d’authentification qui a été spécifiée lors de la création de l’utilisateur.-X
: il s’agit de la phrase de passe de cryptage qui a été spécifiée lors de la création de l’utilisateur. Si aucune n’a été spécifiée mais qu’un algorithme de cryptage a été donné, la phrase de passe d’authentification sera utilisée. Ceci est nécessaire lorsque le paramètre -x
est donné ou lorsque la spécification de privilège d’un utilisateur est suivie d’un priv
, nécessitant un cryptage.À l’aide de ces informations, vous pouvez construire vos commandes. Étant donné la configuration de votre utilisateur bootstrap, les commandes que vous utiliserez avec ce compte ressembleront à ça :
snmp_command -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host snmp_sub_command_or_options
À partir de votre manager server, effectuez un test pour vous assurer que votre compte bootstrap est disponible. Tapez ce qui suit pour afficher les informations système relatives à l’agent server :
- snmpget -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address 1.3.6.1.2.1.1.1.0
La chaîne 1.3.6.1.2.1.1.1.0
est l’OID qui est responsable de l’affichage des informations du système. Elle renverra la sortie de uname -a
sur le système à distance.
Cela donnera le résultat suivant :
OutputSNMPv2-MIB::sysDescr.0 = STRING: Linux agent 4.15.0-66-generic #75-Ubuntu SMP Tue Oct 1 05:24:09 UTC 2019 x86_64
Maintenant que vous avez vérifié que vous pouvez vous authentifier auprès du serveur qui exécute le démon SNMP, vous pouvez créer votre compte utilisateur ordinaire.
Bien que vous ayez spécifié les privilèges du compte utilisateur demo dans le fichier snmpd.conf
, vous n’avez pas encore créé cet utilisateur. Dans cette étape, vous allez utiliser l’utilisateur bootstrap comme modèle pour votre nouvel utilisateur. Pour ce faire, vous utiliserez l’outil snmpusm
, qui sert à la gestion des utilisateurs.
Sur le manager server, vous pouvez créer l’utilisateur à partir du modèle en utilisant l’outil snmpusm
et la syntaxe générale suivante :
snmpusm authentication_info agent_server_ip_address create new_user existing_user
En utilisant ce que vous savez sur les indicateurs d’authentification que vous devez passer, et en exploitant le compte d’utilisateur que vous avez déjà (bootstrap), vous pouvez créer un utilisateur qui correspond aux privilèges d’utilisateur que vous avez déjà définis (demo).
La commande ressemblera à ceci :
- snmpusm -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address create demo bootstrap
Vous recevrez le message suivant :
OutputUser successfully created.
Vous disposez maintenant d’un utilisateur pleinement fonctionnel appelé demo sur votre agent server. Toutefois, il utilise toujours les mêmes informations d’authentification que le compte bootstrap. Pour augmenter la sécurité, vous pouvez modifier le mot de passe. Cette fois, vous utiliserez le compte demo pour vous authentifier. N’oubliez pas que les mots de passe doivent contenir au moins huit caractères :
- snmpusm -u demo -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address passwd temp_password new_password
Vous recevrez le message suivant :
OutputSNMPv3 Key(s) successfully changed.
Vous pouvez tester vos nouveaux identifiants et mot de passe en demandant à l’agent server depuis combien de temps le service SNMP fonctionne. Vous utiliserez la commande snmpget
pour obtenir une seule valeur depuis l’agent server.
Cette fois, profitez des définitions MIB supplémentaires que vous avez téléchargées pour demander la valeur par nom au lieu de l’identifiant numérique OID.
- snmpget -u demo -l authPriv -a MD5 -x DES -A new_password -X new_password agent_server_ip_address sysUpTime.0
Vous récupérerez une valeur qui représente la dernière fois que le démon SNMP distant a été redémarré :
OutputDISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (53309) 0:08:53.09
Vous disposez maintenant d’un compte utilisateur qui fonctionne nommé demo. Dans l’étape suivante, vous allez simplifier le travail avec les commandes SNMP en configurant le client.
Vous avez probablement remarqué à ce stade que les détails d’authentification pour toutes vos commandes SNMP seront assez statiques à chaque requête. Au lieu de les saisir à chaque fois, vous pouvez créer un fichier de configuration côté client qui contiendra les informations d’identification avec lesquelles vous vous connectez.
Le fichier de configuration client peut être placé à deux endroits différents en fonction de la diffusion que vous souhaitez lui donner.
Si vous souhaitez partager vos identifiants de connexion avec tout utilisateur valide sur votre machine de gestion, vous pouvez placer vos détails de configuration dans le fichier global snmp.conf
sur le manager server. Vous devez ouvrir ce fichier avec les privilèges sudo :
- sudo nano /etc/snmp/snmp.conf
Toutefois, si vous souhaitez définir les données d’authentification pour votre seul utilisateur, vous pouvez créer un répertoire .snmp
caché dans le répertoire de base de votre utilisateur sur le manager server, et y créer le fichier :
- mkdir ~/.snmp
- nano ~/.snmp/snmp.conf
Quelle que soit votre décision quant à l’emplacement de votre configuration, le contenu sera le même.
Les commandes que vous utiliserez pour vous authentifier figurent dans le tableau suivant. Dans la colonne de droite, vous pouvez voir les noms des directives utilisées pour définir les informations de configuration dans le fichier snmp.conf
:
Indicateur de commande | Description | Directive snmp.conf traduite |
---|---|---|
-u username |
Le nom d’utilisateur SNMPv3 avec lequel vous devez vous identifier. | defSecurityName username |
-l authPriv |
Le niveau de sécurité pour vous authentifier. | defSecurityLevel authPriv |
-a MD5 |
Le protocole d’authentification à utiliser. | defAuthType MD5 |
-x DES |
Le protocole de confidentialité (cryptage) à utiliser. | defPrivType DES |
-A passphrase |
La phrase de passe d’authentification pour le nom d’utilisateur fourni. | defAuthPassphrase passphrase |
-X passphrase |
La phrase de passe de confidentialité pour le nom d’utilisateur fourni. | defPrivPassphrase passphrase |
En utilisant ces informations, vous pouvez construire un fichier snmp.conf
approprié. Pour ce guide, il ressemblera à ceci :
defSecurityName demo
defSecurityLevel authPriv
defAuthType MD5
defPrivType DES
defAuthPassphrase new_password
defPrivPassphrase new_password
Lorsque vous avez terminé, enregistrez et fermez le fichier.
Maintenant, vous pouvez passer des commandes sans fournir les informations d’authentification. Vous n’aurez besoin que de la commande SNMP, de l’hôte et des arguments de commande.
Au lieu de saisir :
- snmpget -u demo -l authPriv -a MD5 -x DES -A new_password -X new_password agent_server_ip_address sysUpTime.0
Vous pouvez saisir :
- snmpget agent_server_ip_address sysUpTime.0
Comme vous pouvez le constater, cela réduit considérablement la quantité d’informations que vous devez fournir dans chaque demande. Ensuite, vous supprimerez le compte bootstrap pour renforcer la sécurité du réseau.
Maintenant que votre compte ordinaire est correctement configuré, vous pouvez supprimer le compte bootstrap non sécurisé.
Sur votre agent server, ouvrez à nouveau le fichier /etc/snmp/snmpd.conf
avec des privilèges sudo.
- sudo nano /etc/snmp/snmpd.conf
Trouvez et commentez (ou supprimez) les deux lignes que vous avez ajoutées précédemment et qui font référence à l’utilisateur bootstrap:
...
#createUser bootstrap MD5 temp_password DES
#rwuser bootstrap priv
...
Enregistrez et fermez le fichier.
Maintenant, redémarrez le démon SNMP :
- sudo systemctl restart snmpd
Cela permettra de respecter la recommandation de ne pas avoir de directives createUser
dans le fichier snmpd.conf
normal. Cela supprimera également les privilèges de cet utilisateur temporaire.
Si vous souhaitez supprimer complètement l’utilisateur bootstrap de la usmUserTable
, vous pouvez le faire en émettant cette commande depuis le manager server :
- snmpusm agent_server_ip_address delete bootstrap
Vous recevrez la réponse suivante :
OutputUser successfully deleted.
À ce stade, vous disposez d’une installation client-serveur entièrement configurée qui peut communiquer de manière sécurisée en utilisant le protocole SNMP. Vous pouvez désormais ajouter des démons supplémentaires sur d’autres hôtes et configurer l’accès aux comptes sur l’ensemble de votre infrastructure.
Pour en savoir plus, vous pouvez utiliser notre tutoriel Comment utiliser la suite d’outils Net-SNMP pour gérer et surveiller les serveurs : vous vous familiariserez avec les outils SNMP et apprendrez à les utiliser pour récupérer des valeurs une par une ou par lot, et à modifier les données.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.