Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 1315 minIntermédiaire

SNMPv3 et syslog : superviser les équipements réseau

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • expliquer le modèle de SNMP et lire un OID ;
  • choisir la version et le niveau de sécurité de SNMP ;
  • configurer SNMPv3 sur un serveur Debian et sur un switch Cisco ;
  • centraliser les journaux avec syslog et rsyslog.

4 exercices corrigés1 schéma

SNMP (Simple Network Management Protocol) permet à un serveur de supervision d'interroger les équipements du réseau (switchs, routeurs, pare-feu, serveurs, onduleurs, imprimantes) sur leur état, et à ces équipements de lui signaler eux-mêmes un problème. SNMPv3, la seule version à utiliser aujourd'hui, authentifie et chiffre ces échanges. Syslog est le protocole avec lequel les équipements envoient leurs journaux à un serveur central. Ce chapitre explique le modèle de SNMP (gestionnaire, agent, MIB, OID), ses versions et leurs niveaux de sécurité, la configuration de SNMPv3 sous Debian et sur Cisco, puis la centralisation des journaux par syslog.

Gestionnaire, agent, MIB

ÉlémentRôleChez Sorbier
Gestionnaire (manager)Interroge les équipements et reçoit leurs alertesLe serveur de supervision Zabbix, sur srv-journaux (192.168.10.180)
AgentLogiciel de l'équipement qui répond aux questions et envoie les alertesIntégré aux switchs Cisco, à l'onduleur, aux imprimantes ; snmpd sur les serveurs Linux
MIB (Management Information Base)La description des informations disponibles, rangées en arbreMIB standard (interfaces, système) et MIB des constructeurs
OID (Object Identifier)L'adresse d'une information dans l'arbre, en chiffres séparés par des points1.3.6.1.2.1.1.5.0, le nom de l'équipement
GestionnaireZabbix sur srv-journaux192.168.10.180AgentsSW-COEURSW-ETAGE1srv-intranet (snmpd)GET, GETBULK vers UDP 161TRAP, INFORM vers UDP 162L'arbre des OIDiso (1) › org (3) › dod (6) › internet (1)mgmt (2) › mib-2 (1) › system (1) › sysName (5)1.3.6.1.2.1.1.5.0private (4) › enterprises (1) › Cisco (9)1.3.6.1.4.1.9mib-2 : les informations standardenterprises : une branche par constructeur
Le gestionnaire interroge sur UDP 161, les agents alertent sur UDP 162

L'arbre des OID est mondial. Sa branche la plus utilisée commence par 1.3.6.1 (iso.org.dod.internet), puis se sépare en .2.1 (mib-2, les informations standard, communes à tous les constructeurs) et .4.1 (enterprises, une branche par constructeur : 9 pour Cisco).

OIDNomContenu
1.3.6.1.2.1.1.1.0sysDescr.0La description de l'équipement (modèle, version du système)
1.3.6.1.2.1.1.3.0sysUpTime.0Le temps depuis le démarrage de l'agent, en centièmes de seconde
1.3.6.1.2.1.1.5.0sysName.0Le nom de l'équipement
1.3.6.1.2.1.2.2.1.8ifOperStatusL'état de chaque interface : 1 = up, 2 = down
1.3.6.1.2.1.31.1.1.1.6ifHCInOctetsLes octets reçus par interface, sur un compteur de 64 bits

Le .0 final désigne l'unique valeur d'une information simple. Pour une information présente plusieurs fois (une ligne par interface), l'OID se termine par le numéro de l'interface : ifOperStatus.3.

Les opérations et les ports

OpérationSensPort
GETLe gestionnaire demande une valeur préciseUDP 161 de l'agent
GETNEXTIl demande la valeur suivante dans l'arbre : c'est ainsi qu'on parcourt une table (snmpwalk)UDP 161
GETBULK (v2c et v3)Il demande d'un coup un grand nombre de valeurs suivantesUDP 161
SETIl modifie une valeur (désactiver une interface) : à interdire sauf besoin précisUDP 161
TRAPL'agent signale un événement, sans accusé de réceptionUDP 162 du gestionnaire
INFORM (v2c et v3)Comme un trap, mais le gestionnaire accuse réception : l'agent réessaie sinonUDP 162

La supervision combine les deux sens : le sondage (polling) régulier, toutes les minutes par exemple, pour les mesures (débit, charge), et les notifications pour être prévenu immédiatement d'un événement (une interface qui tombe, une alimentation en panne). La conception des tableaux de bord, des seuils et des alertes dans Zabbix et Grafana est le sujet du cours Supervision.

SNMPv1, v2c et v3

VersionAuthentificationChiffrementVerdict
v1Une communauté (un mot de passe partagé), en clairAucunObsolète
v2cCommunauté en clair ; apporte GETBULK, INFORM et les compteurs 64 bitsAucunEncore partout, à remplacer : n'importe qui sur le chemin lit la communauté
v3Par utilisateur, avec un code d'authentification des messages (HMAC SHA)AES possibleLa seule version à déployer

SNMPv3 définit trois niveaux de sécurité :

NiveauAuthentificationChiffrementUsage
noAuthNoPrivNon (seulement un nom d'utilisateur)NonÀ éviter
authNoPrivOuiNonLes valeurs circulent en clair
authPrivOuiOuiLe niveau à utiliser

Pour l'authentification, préfère SHA-256 (ou SHA-512) quand les deux côtés le gèrent, sinon SHA-1 ; jamais MD5. Pour le chiffrement, AES (128 bits, la norme) ; jamais DES. Les deux phrases secrètes (authentification et chiffrement) font au moins 8 caractères, mais prends-les longues et différentes. Les droits de chaque utilisateur sont limités par des vues (VACM) : la liste des branches de l'arbre qu'il peut lire.

SNMPv3 sur un serveur Debian 13

Sur srv-intranet, l'agent Net-SNMP (version 5.9.4) :

bash
sudo apt install snmpd snmp
sudo systemctl stop snmpd
# Créer l'utilisateur en lecture seule, SHA-256 et AES ; le script demande les deux phrases secrètes
sudo net-snmp-create-v3-user -ro -a SHA-256 -x AES zabbix

Le script écrit l'utilisateur dans le fichier persistant de l'agent (/var/lib/snmp/snmpd.conf) ; au démarrage, snmpd remplace les phrases secrètes par des clés dérivées. Dans /etc/snmp/snmpd.conf, il reste à :

text
# Écouter sur l'adresse du serveur (par défaut : 127.0.0.1 et [::1] seulement)
agentaddress  udp:127.0.0.1:161,udp:192.168.21.10:161

# Supprimer les accès par communauté fournis par défaut
#rocommunity  public default -V systemonly
#rocommunity6 public default -V systemonly
bash
sudo systemctl start snmpd
# Depuis srv-journaux : interroger le nom de l'équipement, puis la table des interfaces
snmpget  -v3 -l authPriv -u zabbix -a SHA-256 -A 'PhraseAuth' -x AES -X 'PhrasePriv' 192.168.21.10 1.3.6.1.2.1.1.5.0
snmpwalk -v3 -l authPriv -u zabbix -a SHA-256 -A 'PhraseAuth' -x AES -X 'PhrasePriv' 192.168.21.10 1.3.6.1.2.1.2.2.1.2

La première commande doit renvoyer le nom de la machine (STRING: srv-intranet). Une erreur Authentication failure signale une mauvaise phrase d'authentification ou un mauvais algorithme ; un Timeout signale un agent qui n'écoute pas sur cette adresse, ou un pare-feu qui bloque UDP 161.

SNMPv3 sur un switch Cisco

text
SW-COEUR(config)# ip access-list standard ACL-SUPERV
SW-COEUR(config-std-nacl)# permit host 192.168.10.180
SW-COEUR(config)# snmp-server view VUE-LECTURE iso included
SW-COEUR(config)# snmp-server group GRP-SUPERV v3 priv read VUE-LECTURE access ACL-SUPERV
SW-COEUR(config)# snmp-server user zabbix GRP-SUPERV v3 auth sha PhraseAuth priv aes 128 PhrasePriv
SW-COEUR(config)# snmp-server host 192.168.10.180 version 3 priv zabbix
SW-COEUR(config)# snmp-server enable traps snmp linkdown linkup

Le groupe fixe le niveau de sécurité (priv = authPriv), la vue en lecture et l'ACL des adresses autorisées ; l'utilisateur porte les phrases secrètes. La commande snmp-server host envoie les traps à Zabbix. Attention : auth sha désigne SHA-1. Sur les versions d'IOS XE qui proposent SHA-2 pour SNMPv3, choisis-le (l'aide ? après auth liste les algorithmes de ton modèle). Les utilisateurs SNMPv3 n'apparaissent pas dans la configuration affichée par show running-config : show snmp user les liste. La sécurisation complète de l'administration des équipements Cisco est dans le cours Routage et commutation.

Et les autres équipements ?

ÉquipementSNMP
Serveurs WindowsLe service SNMP de Windows ne gère que v1 et v2c et Microsoft le déclare obsolète : on supervise Windows avec l'agent de l'outil de supervision (agent Zabbix)
pfSenseLe service intégré (Services > SNMP, démon bsnmpd) fonctionne par communauté ; le paquet NET-SNMP apporte SNMPv3. On utilise aussi souvent le paquet de l'agent Zabbix
Onduleurs, imprimantes, NASSNMP est souvent leur seul moyen d'être supervisés : choisis du matériel qui gère SNMPv3
Proxmox VE, TrueNASAgent SNMP disponible, mais l'API ou l'agent de supervision donnent plus d'informations

Syslog : centraliser les journaux

Syslog est le format et le protocole d'envoi des journaux des équipements réseau et des systèmes Unix. Chaque message porte une origine (facility : noyau, authentification, messagerie, ou local0 à local7 pour les équipements), une gravité (severity) de 0 à 7, un horodatage, le nom de l'équipement et le texte.

GravitéNomExemple
0EmergencyLe système est inutilisable
1AlertAction immédiate nécessaire
2CriticalPanne d'un composant matériel
3ErrorErreur d'un service
4WarningAvertissement : un disque à 90 %
5NoticeÉvénement normal mais notable : une interface qui change d'état
6InformationalInformation : une connexion réussie
7DebugDétail de débogage

Un niveau de journalisation inclut tous les niveaux plus graves : régler un équipement sur informational (6) envoie les messages de 0 à 6, sans le débogage.

TransportPortRemarque
UDP514Historique, sans accusé de réception : des messages se perdent sans que personne le sache
TCP514 (usage courant)Fiable, mais en clair
TLSTCP 6514 (RFC 5425)Fiable et chiffré : le choix pour les flux qui traversent des zones, comme depuis la DMZ

Chez Sorbier, srv-journaux (192.168.10.180) reçoit les journaux des switchs, du pare-feu et des serveurs Linux. Sur un switch Cisco :

text
SW-COEUR(config)# service timestamps log datetime msec localtime
SW-COEUR(config)# logging source-interface Vlan99
SW-COEUR(config)# logging host 192.168.10.180
SW-COEUR(config)# logging trap informational

Sur pfSense, Status > System Logs > Settings, rubrique Remote Logging Options : coche Enable Remote Logging et indique 192.168.10.180:514 dans Remote log servers (le cours pfSense montre la suite côté Wazuh : superviser pfSense et envoyer ses journaux).

Sous Debian 13, les journaux sont gérés par journald ; pour les envoyer à un serveur syslog, installe rsyslog :

text
# /etc/rsyslog.d/90-central.conf, sur les serveurs qui envoient
*.* action(type="omfwd" target="192.168.10.180" port="514" protocol="tcp"
           queue.type="LinkedList" queue.filename="central" action.resumeRetryCount="-1")
text
# /etc/rsyslog.d/10-reception.conf, sur srv-journaux
# Les switchs et pfSense envoient en UDP 514 par défaut, les serveurs Linux en TCP 514
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
template(name="ParHote" type="string" string="/var/log/central/%HOSTNAME%/%PROGRAMNAME%.log")
if $fromhost-ip != "127.0.0.1" then {
    action(type="omfile" dynaFile="ParHote")
    stop
}

La file d'attente sur disque (queue.filename) garde les messages si srv-journaux est injoignable, et action.resumeRetryCount="-1" fait réessayer indéfiniment. Vérifie la syntaxe avec rsyslogd -N1 avant de redémarrer le service. Pour les flux qui traversent le pare-feu, comme ceux de la DMZ, Sorbier utilise syslog sur TLS, en TCP 6514 (matrice des flux du cours Cybersécurité des infrastructures).

Les journaux de Windows ne sont pas au format syslog : on les centralise par le transfert d'événements Windows (cours Windows Server) ou par l'agent d'un SIEM. L'analyse des journaux, la détection et la corrélation des événements de sécurité relèvent d'un SIEM comme Wazuh : voir le cours Wazuh, de la collecte des journaux à la lecture d'une alerte. Et rien de tout cela n'a de valeur si les horloges ne sont pas synchronisées (chapitre 7).

Exercices

Exercice 1 sur 4 Lire des OID Réussi À revoir

Le serveur de supervision obtient :

text
.1.3.6.1.2.1.1.5.0 = STRING: SW-COEUR
.1.3.6.1.2.1.1.3.0 = Timeticks: (864000) 2:24:00.00
.1.3.6.1.2.1.2.2.1.8.10101 = INTEGER: up(1)
.1.3.6.1.2.1.2.2.1.8.10102 = INTEGER: down(2)
  1. Quel est le nom de l'équipement, et depuis combien de temps son agent tourne-t-il ?
  2. Que dit la troisième ligne ? Et la quatrième ?
  3. Le sysUpTime montre que le switch a redémarré il y a 2 h 24 min, sans que personne n'ait été prévenu. Quelle notification aurait dû arriver, et pourquoi n'est-elle peut-être pas arrivée ?
Voir la réponseMasquer la réponse de l'exercice 1
  1. SW-COEUR. 864 000 centièmes de seconde = 8 640 secondes = 2 heures 24 minutes.
  2. L'interface d'index 10101 est active (up), l'interface 10102 est inactive (down) : 1.3.6.1.2.1.2.2.1.8 est ifOperStatus, et le dernier nombre est l'index de l'interface.
  3. Un trap coldStart ou warmStart (et des traps linkDown/linkUp). Un trap n'a pas d'accusé de réception : envoyé en UDP pendant que le réseau redémarrait, il a pu se perdre. Les informs, acquittés, ou le sondage régulier de sysUpTime (une valeur qui diminue signale un redémarrage) évitent de rater l'événement.

Tu avais trouvé ?

Exercice 2 sur 4 Choisir la version et le niveau Réussi À revoir

  1. Un auditeur capture le trafic du VLAN d'administration et y lit public dans des paquets UDP 161. Qu'en conclut-il ?
  2. Quel niveau de sécurité SNMPv3 retiens-tu pour les switchs ? Avec quels algorithmes ?
  3. Pourquoi limiter l'utilisateur SNMP à la lecture, et l'agent à l'adresse du serveur de supervision ?
Voir la réponseMasquer la réponse de l'exercice 2
  1. Des équipements utilisent encore SNMPv1 ou v2c avec la communauté par défaut public, en clair : n'importe qui peut lire leur configuration réseau et leur état.
  2. authPriv, avec SHA-256 (ou SHA-1 si l'équipement ne gère que lui) pour l'authentification et AES-128 pour le chiffrement, et des phrases secrètes longues et différentes.
  3. Un compte en écriture (SET) permettrait de reconfigurer l'équipement si ses secrets fuyaient. Limiter l'accès au serveur de supervision (ACL sur le switch, pare-feu) réduit la surface d'attaque : même avec les bons secrets, un poste ne peut pas interroger l'agent.

Tu avais trouvé ?

Exercice 3 sur 4 Le niveau de syslog Réussi À revoir

Un switch est réglé avec logging trap warnings.

  1. Quelles gravités envoie-t-il au serveur syslog ?
  2. Les changements d'état d'interface (gravité 5, notifications) arrivent-ils ? Que faut-il changer ?
  3. Pourquoi ne pas tout régler sur debugging ?
Voir la réponseMasquer la réponse de l'exercice 3
  1. Les gravités 0 à 4 : emergencies, alerts, critical, errors, warnings.
  2. Non : 5 est moins grave que 4. Régler logging trap notifications (0 à 5) ou logging trap informational (0 à 6).
  3. Le débogage produit un volume énorme de messages : il sature le serveur et le réseau, noie les événements utiles et peut charger le processeur du switch. On ne l'active que temporairement, pendant un dépannage.

Tu avais trouvé ?

Exercice 4 sur 4 L'agent qui ne répond pas Réussi À revoir

Depuis srv-journaux, snmpget -v3 -l authPriv -u zabbix … 192.168.21.10 1.3.6.1.2.1.1.5.0 répond Timeout: No Response from 192.168.21.10. Sur srv-intranet, systemctl status snmpd indique que le service tourne.

  1. Donne deux causes possibles, et la commande qui vérifie chacune.
  2. Après correction, la commande répond Authentication failure (incorrect password, community or key). Que vérifies-tu ?
Voir la réponseMasquer la réponse de l'exercice 4
  1. L'agent n'écoute que sur 127.0.0.1 (valeur par défaut de agentaddress) : sudo ss -ulnp | grep 161 sur srv-intranet doit montrer 192.168.21.10:161. Ou un pare-feu (local, ACL ou pare-feu entre les VLAN) bloque UDP 161 : vérifier les règles, et capturer avec sudo tcpdump -ni any udp port 161 sur srv-intranet pour voir si les requêtes arrivent.
  2. Le nom d'utilisateur, la phrase d'authentification et l'algorithme (-a SHA-256 des deux côtés : un agent configuré en SHA-256 refuse une requête en SHA-1). Une erreur sur la phrase de chiffrement donne plutôt des réponses illisibles ou une erreur de déchiffrement.

Tu avais trouvé ?

Chapitre terminé !

Fais les 4 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Dépanner DNS et DHCP : nslookup, dig, ipconfig, WiresharkRevoir le sommaire du cours