Surveillance Réseau Sécurisée avec SNMPv3 sous Linux

CompTIABeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à implémenter une surveillance réseau sécurisée sur un système Linux en utilisant le protocole Simple Network Management Protocol version 3 (SNMPv3). Vous vous concentrerez sur la configuration de l'agent SNMP (snmpd) pour appliquer une authentification et un chiffrement robustes, garantissant ainsi que les données de gestion sont protégées pendant le transit et que vous dépassez les insécurités des anciennes versions SNMP.

Le processus commence par l'installation des outils nécessaires pour l'agent et le client SNMP sur votre système. Vous créerez ensuite un utilisateur SNMPv3 dédié avec des identifiants sécurisés directement dans le fichier de configuration. Enfin, vous utiliserez l'outil en ligne de commande snmpwalk pour effectuer des requêtes sécurisées contre votre agent configuré, vérifiant ainsi votre configuration et explorant comment récupérer des informations système spécifiques à l'aide des Identifiants d'Objet (OIDs).

Installer l'Agent SNMP et les Outils Clients

Dans cette étape, vous allez installer les composants essentiels requis pour la surveillance réseau à l'aide du protocole Simple Network Management Protocol (SNMP). Nous allons installer à la fois l'agent SNMP, qui s'exécute sur le périphérique à surveiller, et les outils client, qui sont utilisés pour interroger l'agent.

Tout d'abord, il est de bonne pratique de mettre à jour la liste des paquets de votre système. Cela garantit que vous obtenez les versions les plus récentes et les plus sécurisées des logiciels disponibles dans les dépôts.

Exécutez la commande suivante pour mettre à jour l'index des paquets sur votre système :

sudo apt update

Vous verrez une sortie indiquant que les listes de paquets sont récupérées à partir des dépôts Ubuntu.

Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
...
Fetched 1,587 kB in 2s (924 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.

Maintenant que votre liste de paquets est à jour, vous pouvez installer l'agent SNMP (démon) et les utilitaires client. L'agent est fourni par le paquet snmpd, et les outils client (comme snmpwalk, snmpget) se trouvent dans le paquet snmp.

Exécutez la commande ci-dessous pour installer les deux paquets. Le drapeau -y confirme automatiquement l'installation, vous n'aurez donc pas à répondre aux invites.

sudo apt install snmpd snmp -y

Le processus d'installation téléchargera et configurera les fichiers nécessaires. Une fois terminé, le service snmpd, qui est le démon agent, devrait démarrer automatiquement.

Pour confirmer que l'agent SNMP fonctionne correctement, vous pouvez vérifier l'état du service snmpd à l'aide de systemctl.

sudo systemctl status snmpd

La sortie devrait indiquer que le service est active (running). Cela confirme que l'agent SNMP est prêt à recevoir des requêtes.

● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
     Loaded: loaded (/lib/systemd/system/snmpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-10-30 08:30:00 UTC; 5s ago
   Main PID: 1234 (snmpd)
      Tasks: 1 (limit: 4595)
     Memory: 9.8M
        CPU: 35ms
     CGroup: /system.slice/snmpd.service
             └─1234 /usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f

Si vous voyez l'écran de statut, vous pouvez appuyer sur la touche q de votre clavier pour quitter et revenir à l'invite de commande.

Avec l'agent en cours d'exécution et les outils client installés, votre environnement est maintenant prêt pour la configuration et la communication SNMP.

Créer un Utilisateur SNMPv3 Sécurisé dans snmpd.conf

Dans cette étape, vous allez configurer l'agent SNMP (snmpd) pour utiliser SNMPv3, qui fournit des fonctionnalités de sécurité essentielles. Contrairement aux versions antérieures, SNMPv3 prend en charge l'authentification (pour vérifier l'identité de l'expéditeur) et la confidentialité (pour chiffrer les données). Vous y parviendrez en créant un nouvel utilisateur directement dans le fichier de configuration de l'agent, /etc/snmp/snmpd.conf.

Avant d'apporter des modifications, il est essentiel de créer une sauvegarde du fichier de configuration d'origine. Cela vous permettra de le restaurer facilement en cas de problème.

Exécutez la commande suivante pour copier le fichier de configuration :

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

Maintenant, vous allez modifier le fichier de configuration principal /etc/snmp/snmpd.conf pour ajouter un nouvel utilisateur SNMPv3. Nous utiliserons l'éditeur de texte nano pour cette tâche.

Exécutez cette commande pour ouvrir le fichier avec les permissions sudo :

sudo nano /etc/snmp/snmpd.conf

Faites défiler jusqu'à la toute fin du fichier et ajoutez les lignes suivantes. Ces lignes définissent un nouvel utilisateur nommé labexuser avec des protocoles d'authentification (SHA) et de confidentialité (AES) robustes.

  • createUser : Cette directive crée l'utilisateur SNMPv3.
    • labexuser : Le nom d'utilisateur pour votre utilisateur SNMPv3.
    • SHA : Le protocole d'authentification (plus sécurisé que MD5).
    • AuthPassLabEx : La phrase secrète d'authentification (doit comporter au moins 8 caractères).
    • AES : Le protocole de confidentialité (chiffrement) (plus sécurisé que DES).
    • PrivPassLabEx : La phrase secrète de confidentialité (doit comporter au moins 8 caractères).
  • rwuser : Cette directive accorde à l'utilisateur un accès en lecture-écriture à l'ensemble de l'arborescence OID lorsqu'il utilise le niveau de sécurité priv (authentification et confidentialité).

Copiez et collez le bloc de configuration suivant à la fin du fichier :

## --- LabEx SNMPv3 User Configuration ---
## Create a secure SNMPv3 user for monitoring
createUser labexuser SHA "AuthPassLabEx" AES "PrivPassLabEx"

## Grant the new user read-write access with privacy
rwuser labexuser priv
## --- End of Configuration ---

Après avoir ajouté le texte, enregistrez le fichier et quittez nano en appuyant sur Ctrl+O, puis sur Entrée pour confirmer le nom du fichier, et enfin sur Ctrl+X pour quitter.

Vous avez maintenant configuré avec succès un utilisateur sécurisé pour la communication SNMPv3. Dans l'étape suivante, vous redémarrerez le service pour appliquer ces modifications.

Redémarrer et Vérifier le Service snmpd

Dans cette étape, vous allez appliquer la nouvelle configuration utilisateur que vous avez ajoutée à l'étape précédente. Chaque fois que vous modifiez le fichier de configuration d'un service en cours d'exécution comme snmpd, les modifications ne sont pas appliquées automatiquement. Vous devez redémarrer le service pour qu'il relise son fichier de configuration et charge les nouveaux paramètres.

Tout d'abord, utilisez la commande systemctl pour redémarrer le service snmpd. Cela arrêtera le processus actuel et en démarrera un nouveau avec la configuration mise à jour qui inclut votre labexuser.

sudo systemctl restart snmpd

Cette commande ne produit généralement aucune sortie si elle s'exécute avec succès.

Ensuite, il est crucial de vérifier que le service a redémarré sans problème. S'il y avait des erreurs de syntaxe dans votre fichier /etc/snmp/snmpd.conf, le service pourrait ne pas démarrer. Vous pouvez vérifier son état actuel pour confirmer qu'il fonctionne correctement.

sudo systemctl status snmpd

Vous devriez voir une sortie confirmant que le service est active (running). Portez attention à l'horodatage, qui devrait indiquer que le service a été démarré très récemment.

● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
     Loaded: loaded (/lib/systemd/system/snmpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-10-30 08:35:00 UTC; 3s ago
   Main PID: 5678 (snmpd)
      Tasks: 1 (limit: 4595)
     Memory: 10.1M
        CPU: 40ms
     CGroup: /system.slice/snmpd.service
             └─5678 /usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f

N'oubliez pas d'appuyer sur q pour quitter la vue de statut et revenir au terminal.

Voir le statut active (running) confirme que vos modifications de configuration étaient valides et que l'agent SNMP fonctionne maintenant avec le nouveau labexuser prêt pour une communication sécurisée.

Effectuer des Requêtes Sécurisées avec les Outils SNMPv3

Dans cette étape, vous utiliserez des outils clients SNMP pour effectuer des requêtes sécurisées auprès de l'agent SNMP en cours d'exécution sur votre machine locale. Vous utiliserez les identifiants labexuser que vous avez configurés dans snmpd.conf pour tester la communication sécurisée SNMPv3. C'est le moment de voir votre configuration sécurisée en action.

Les commandes SNMP pour SNMPv3 nécessitent plusieurs indicateurs spécifiques pour gérer l'authentification et la confidentialité. Voici une description des paramètres que vous utiliserez :

  • -v 3 : Indique que vous utilisez la version 3 de SNMP.
  • -l authPriv : Définit le niveau de sécurité sur authPriv, ce qui signifie que la communication nécessite à la fois l'authentification et la confidentialité (chiffrement). C'est le niveau de sécurité le plus élevé.
  • -u labexuser : Spécifie le nom d'utilisateur, qui est le labexuser que vous avez créé.
  • -a SHA : Définit le protocole d'authentification comme SHA. Cela doit correspondre au protocole que vous avez défini dans snmpd.conf.
  • -A "AuthPassLabEx" : Fournit la phrase secrète d'authentification.
  • -x AES : Définit le protocole de confidentialité (chiffrement) comme AES. Cela doit également correspondre à votre configuration.
  • -X "PrivPassLabEx" : Fournit la phrase secrète de confidentialité.
  • localhost : L'hôte cible sur lequel l'agent SNMP est en cours d'exécution. Dans ce cas, il s'agit de votre propre machine.

Tout d'abord, testons la connexion en parcourant l'arborescence complète du système. La commande snmpwalk parcourt les arbres OID et renvoie tous les objets d'une branche.

Comprendre la structure des OID : Les identificateurs d'objets (OID) utilisent un système de numérotation hiérarchique. L'OID 1.3.6.1.2.1.1 représente le groupe "system" dans la MIB-II standard de SNMP :

  • 1.3.6.1 = internet
  • 1.3.6.1.2 = mgmt (management)
  • 1.3.6.1.2.1 = mib-2 (MIB standard)
  • 1.3.6.1.2.1.1 = groupe system (contient les informations système de base)

Exécutez la commande suivante pour parcourir l'arborescence MIB du système :

snmpwalk -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1

Si la commande réussit, vous verrez plusieurs OID liés au système et leurs valeurs. Cela confirme que votre gestionnaire SNMP s'est authentifié avec succès auprès de l'agent (snmpd) et que la requête a été effectuée sur un canal sécurisé et chiffré.

SNMPv2-MIB::sysDescr.0 = STRING: Linux labex-vm 5.15.0-XX-generic #XX-Ubuntu SMP ...
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-TC::linux
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (123456) 0:20:34.56
SNMPv2-MIB::sysContact.0 = STRING: Me <me@example.org>
SNMPv2-MIB::sysName.0 = STRING: labex-vm
SNMPv2-MIB::sysLocation.0 = STRING: Sitting on the Dock of the Bay
...

Une réponse réussie prouve que toute votre configuration SNMPv3 fonctionne correctement. Si vous aviez utilisé des identifiants ou des protocoles incorrects, la commande aurait échoué avec une erreur d'authentification.

Interroger des OID Spécifiques avec snmpget

Dans cette étape, vous apprendrez à récupérer des informations système spécifiques à l'aide de la commande snmpget. Alors que snmpwalk parcourt des arbres OID entiers, snmpget est conçu pour interroger des identificateurs d'objets (OID) spécifiques pour une récupération d'informations précise.

Maintenant que vous disposez d'une configuration SNMPv3 fonctionnelle et sécurisée, vous pouvez interroger des informations système spécifiques. Un OID pointe de manière unique vers une information gérée au sein de la base d'informations de gestion (MIB) de l'appareil.

Explication de la hiérarchie des OID : L'arborescence OID de SNMP suit la hiérarchie standard internationale ISO/IEC des identificateurs d'objets :

1 (iso)
└── 3 (org)
    └── 6 (dod)
        └── 1 (internet)
            └── 2 (mgmt)
                └── 1 (mib-2)
                    └── 1 (system)
                        ├── 1.0 (sysDescr)
                        ├── 3.0 (sysUpTime)
                        ├── 4.0 (sysContact)
                        ├── 5.0 (sysName)
                        └── 6.0 (sysLocation)

Cela explique pourquoi les informations système commencent par 1.3.6.1.2.1.1 : c'est le chemin standardisé vers le groupe système dans MIB-II.

Interrogeons un OID spécifique et couramment utilisé : la description du système. Cet OID récupère une description textuelle de base de l'appareil géré.

Comprendre les OID spécifiques : Au sein du groupe système (1.3.6.1.2.1.1), chaque information possède un sous-identifiant spécifique :

  • 1.3.6.1.2.1.1.1.0 = sysDescr.0 (description du système)
  • 1.3.6.1.2.1.1.3.0 = sysUpTime.0 (temps de fonctionnement du système)
  • 1.3.6.1.2.1.1.4.0 = sysContact.0 (contact système)
  • 1.3.6.1.2.1.1.5.0 = sysName.0 (nom du système)
  • 1.3.6.1.2.1.1.6.0 = sysLocation.0 (emplacement du système)

Le .0 à la fin indique qu'il s'agit d'une valeur scalaire (instance unique), et non d'une entrée de table.

Exécutez la commande suivante pour interroger la description du système :

snmpget -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1.1.0

La sortie affichera la description du système, confirmant que votre authentification et votre confidentialité SNMPv3 fonctionnent correctement :

iso.3.6.1.2.1.1.1.0 = STRING: "Linux iZrj9ixg5sv0oem6yeu6aqZ 5.15.0-56-generic ..."

Ensuite, interrogeons le temps de fonctionnement du système en utilisant l'OID numérique 1.3.6.1.2.1.1.3.0 (qui correspond à sysUpTime.0). Cet OID rapporte le temps écoulé depuis la dernière réinitialisation de la partie gestion du réseau du système :

snmpget -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1.3.0

La sortie affichera le temps de fonctionnement au format "Timeticks", qui représente des centièmes de seconde, ainsi qu'un format lisible par l'homme :

iso.3.6.1.2.1.1.3.0 = Timeticks: (48642) 0:08:06.42

Enfin, vous pouvez interroger plusieurs OID en une seule commande en les listant à la fin. Récupérons ensemble la description du système et les informations de contact en utilisant leurs OID numériques.

Pourquoi utiliser des OID numériques ? Dans certains environnements, les noms symboliques comme sysDescr.0 peuvent ne pas être reconnus car :

  • Les fichiers MIB ne sont pas chargés ou installés
  • La configuration du client SNMP n'inclut pas les définitions MIB nécessaires
  • L'utilisation d'OID numériques garantit la compatibilité entre différents systèmes

Exécutez cette commande pour interroger plusieurs OID simultanément :

snmpget -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1.1.0 1.3.6.1.2.1.1.4.0

Cela renverra les deux valeurs dans une seule réponse :

iso.3.6.1.2.1.1.1.0 = STRING: "Linux iZrj9ixg5sv0oem6yeu6aqZ 5.15.0-56-generic ..."
iso.3.6.1.2.1.1.4.0 = STRING: "Me <me@example.org>"

En interrogeant avec succès ces OID spécifiques, vous avez démontré la capacité principale de SNMP pour la surveillance sécurisée du réseau. Vous pouvez désormais récupérer des données opérationnelles précises de vos appareils de manière sécurisée, authentifiée et chiffrée.

Résumé

Dans ce laboratoire, vous avez appris à implémenter une surveillance réseau sécurisée sur un système Linux à l'aide de SNMPv3. Vous avez commencé par installer les composants principaux, y compris l'agent SNMP (snmpd) et les outils clients (snmp), après avoir mis à jour le dépôt de paquets du système. L'objectif principal était la sécurité, que vous avez configurée en créant un nouvel utilisateur SNMPv3 dans le fichier snmpd.conf, avec des protocoles d'authentification et de confidentialité (chiffrement) robustes pour protéger les données en transit.

Après avoir configuré l'utilisateur sécurisé, vous avez redémarré le service snmpd pour appliquer la nouvelle configuration et vérifié qu'il fonctionnait correctement. Vous avez ensuite utilisé des outils clients SNMP pour effectuer des requêtes sécurisées auprès de l'agent, en vous authentifiant avec les identifiants de l'utilisateur SNMPv3 que vous aviez créé. Vous vous êtes exercé à utiliser snmpwalk pour parcourir des branches entières de l'arbre MIB et snmpget pour récupérer des identificateurs d'objets (OID) spécifiques. Cela a démontré comment surveiller en toute sécurité les informations système telles que la description du système, le temps de fonctionnement et les détails de contact, en utilisant à la fois des parcours d'arborescence complets et des requêtes individuelles précises.