Cette section explique comment activer SNMP v3 sur un Publisher équipé d'Ubuntu 22.04 et modifier le pare-feu pour autoriser la surveillance externe.
Installer des paquets
sudo apt-get update sudo apt-get -y install snmpd libsnmp-dev
Créer un utilisateur SNMPv3 sécurisé
Arrêtez d'abord l'agent (pour éviter les surprises liées à l'écriture en cours d'exécution) :
sudo systemctl stop snmpd
Créez l'utilisateur (choisissez des phrases de passe auth/priv fortes et différentes) :
sudo net-snmp-config --create-snmpv3-user \ -A '<AuthPassword>' -a SHA \ -X '<PrivPassword>' -x AES \ snmpv3user
snmpv3usernom d'utilisateur : nom d'utilisateur (à conserver ou à modifier ; le reste de ce guide l'utilise)-a SHA -x AES+-l authPriv(ci-dessous) donne l'authentification et le chiffrement.
Configurer l'agent SNMP
Modifiez /etc/snmp/snmpd.conf pour exactly cette configuration minimale et sécurisée :
# Listen on UDP/161 on all interfaces agentAddress udp:161 # Read view: allow everything under .1 (tighten later if you want) view all included .1 # Authorize our v3 user (read-only, authPriv) on that view rouser snmpv3user authPriv. # Optional: disk alert trap when / has <2GB free (kB units) disk / 2000 # Optional: expose Linux conntrack session count via extend # (see "About conntrackCount" section below) extend-sh conntrackCount cat /proc/sys/net/netfilter/nf_conntrack_count
Étant donné que les chaînes de communauté pour SNMPv1 et SNMPv2c (telles que public) sont transmises en clair, il est fortement recommandé de supprimer les configurations par défaut afin d'imposer l'utilisation du protocole SNMPv3, plus sûr.
Dans le fichier /etc/snmp/snmpd.conf, supprimez ou commentez (en ajoutant un # au début de la ligne) les deux lignes suivantes :
# rocommunity public default -V systemonly
# rocommunity6 public default -V systemonly
Après avoir supprimé ces lignes, toutes les demandes de surveillance tentant d'utiliser le protocole SNMPv1/v2c avec la chaîne de communauté public seront rejetées. Votre système de surveillance must est configuré pour utiliser l'utilisateur SNMPv3 (comme authPrivUser) créé dans les étapes précédentes pour se connecter.
Notes
- Nous sommes not et utilisons
-V systemonlypour que vous puissiez lire IF-MIB, TCP-MIB, UCD-SNMP, etc. - Gardez
view all .1pendant que vous testez ; plus tard, vous pourrez vous limiter aux OID dont vous avez besoin.
Redémarrez et activez :
sudo systemctl restart snmpd sudo systemctl enable snmpd sudo systemctl status snmpd --no-pager
Autoriser SNMPv3 dans le pare-feu (UFW)
Si UFW est activé, autorisez uniquement UDP/161 à partir de votre système de gestion du réseau (NMS) :
sudo ufw allow from <NMS_IP> to any port 161 proto udp sudo ufw status
Tests rapides de bout en bout (à partir de votre NMS)
Remplacez <PUBLISHER_IP> par l'IP de l'éditeur.
System group (proof SNMPv3 works)
snmpwalk -v3 -l authPriv -u snmpv3user \ -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> system
Uptime
snmpget -v3 -l authPriv -u snmpv3user \ -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> DISMAN-EVENT-MIB::sysUpTimeInstance
CPU & Memory (UCD-SNMP)
Voici quelques exemples d'OID que votre système de surveillance peut utiliser.
# CPU % snmpget -v3 -l authPriv -u snmpv3user -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> \ .1.3.6.1.4.1.2021.11.9.0 \ # pctUser .1.3.6.1.4.1.2021.11.10.0 \ # pctSystem .1.3.6.1.4.1.2021.11.11.0 # pctIdle # Memory (kB) snmpget -v3 -l authPriv -u snmpv3user -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> \ .1.3.6.1.4.1.2021.4.5.0 \ # memTotal .1.3.6.1.4.1.2021.4.6.0 # memAvail
Disk usage by mount (UCD-SNMP dskTable)
snmpwalk -v3 -l authPriv -u snmpv3user -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> UCD-SNMP-MIB::dskTable
Concurrent TCP sessions (TCP-MIB)
Ce scalaire needs .0:
snmpget -v3 -l authPriv -u snmpv3user -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> .1.3.6.1.2.1.6.9.0 # tcpCurrEstab
A propos de conntrackCount (la ligne extend-sh)
Linux conserve une table du noyau des connexions suivies (nf_conntrack). Le nombre actuel d'entrées s'élève à :
/proc/sys/net/netfilter/nf_conntrack_count
La directive extend-sh exécute une commande et expose sa sortie via la directive NET-SNMP-EXTEND-MIB. Dans notre configuration :
extend-sh conntrackCount cat /proc/sys/net/netfilter/nf_conntrack_count
Cela crée une entrée d'extension nommée conntrackCount. Vous pouvez le lire à partir de n'importe quel NMS à l'aide de l'objet nsExtendOutput1Line:
Symbolic:
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."conntrackCount"
Numeric OID (même chose) :
.1.3.6.1.4.1.8072.1.3.2.3.1.1."conntrackCount"
Comment l'interroger (à partir du SGN)
snmpget -v3 -l authPriv -u snmpv3user \ -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."conntrackCount"
Conseil
Si votre NMS signale qu'il ne peut pas trouver la MIB, chargez les MIB NET-SNMP sur le NMS ou utilisez la forme numérique de l'OID ci-dessus.
Liste de contrôle pour le dépannage
- No response / timeout
→ Pare-feu ou adressage. Confirmez que UDP/161 est autorisé entre le NMS et l'éditeur.
→sudo ss -lun | grep :161sur le Publisher pour confirmer que snmpd est à l'écoute. - Authentication failure
→ Le nom d'utilisateur, les protocoles d'authentification/privation et les deux phrases de passe doivent correspondre exactement.
→ Nous utilisons-l authPriv -a SHA -x AES. - No Such Object for TCP/IF/UCD OIDs
→ Vous avez accidentellement restreint la vue (par exemple,-V systemonly). Utilisez l'exempleview all .1ci-dessus, puis resserrez plus tard si nécessaire. - conntrackCount missing
→ Assurez-vous que la ligneextend-sh conntrackCount ...est présente (pas de fautes de frappe), puissudo systemctl restart snmpd.
→ Effectuez la requête en utilisant l'OID numérique pour contourner les problèmes de chargement de la MIB :
snmpget -v3 -l authPriv -u snmpv3user -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> .1.3.6.1.4.1.8072.1.3.2.3.1.1."conntrackCount"
- Connectez-vous à un éditeur en utilisant SSH et connectez-vous.
- Dans le menu, sélectionnez
6et quittez le CLI. - Mettez à jour tous les paquets (recommandé).
sudo apt-get update
- Installez SNMP.
sudo apt-get -y install snmpd libsnmp-dev
- Configurez l'adresse de l'agent dans le fichier
/etc/snmp/snmpd.conf. Ajoutez cette ligne au fichier :disk / 10000
- Arrêtez le service snmpd pour pouvoir ajouter un utilisateur.
sudo service snmpd stop
- Ajouter un utilisateur SNMP v3.
sudo net-snmp-config --create-snmpv3-user -A <AuthPassword> -X <CryptoPassword> -a <MD5|SHA> -x <AES|DES> <user>
- Configurez correctement le stimulateur sur
/etc/snmp/snmpd.confen ajoutantrouser authPrivUser authpriv -V systemonly. - Configurez correctement le TCP sur
/etc/snmp/snmpd.confen remplaçantagentaddress 127.0.0.1, [::1]paragentaddress udp:161. - Redémarrez le service SNMPD.
sudo service snmpd restart
- Vérifiez que SNMPD est lancé.
sudo service snmpd status
- Vérifiez que le pare-feu (ufw) fonctionne.
sudo ufw status
- Configurez l'UFW pour qu'il autorise les connexions à SNMPD. Le démon SNMP écoutera les connexions sur le port 161.
sudo ufw allow in to any port 161 proto udp
- Vérifiez que le service SNMP a été autorisé en permanence par le pare-feu et que le trafic UDP sur le port 161 est autorisé.
sudo ufw status Status: active To Action From -- ------ ---- 161/udp ALLOW Anywhere 161/udp (v6) ALLOW Anywhere (v6)
- Pour vérifier si snmpd fonctionne correctement sur la machine Publisher, vérifiez les points suivants :
sudo service snmpd status
snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/lib/systemd/system/snmpd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-05-31 07:26:11 UTC; 59min ago
Process: 14823 ExecStartPre=/bin/mkdir -p /var/run/agentx (code=exited, status=0/SUCCESS)
Main PID: 14824 (snmpd)
Tasks: 1 (limit: 1126)
Memory: 5.6M
CGroup: /system.slice/snmpd.service
└─14824 /usr/sbin/snmpd -LOw -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f -p />

