Skip to content
Zwarmex edited this page Dec 22, 2024 · 3 revisions

Prérequis

Pour pouvoir effectuer ce laboratoire, vous avez besoin d’une infrastructure Proxmox fonctionnelle. Vous devez donc avoir un cluster de deux hôtes Proxmox sur lequel il est possible de déployer des serveurs virtuels ayant une connectivité internet.

Installation

Choix technologiques

LibreNMS est une application web déployable de plusieurs façon différentes :

  • En installant et configurant les package ad-hoc sur une distribution Linux
    • Ubuntu
    • Centos
    • Debian
  • En déployant un container docker sur un serveur docker Linux
  • En adaptant l’OVA ou le fichier docker pour le déployer directement sur votre proxmox

Installation de Docker

De notre côté nous avons choisi de partir sur un machine CentOS et de passer par docker. Pour cela, après avoir installer et configurer votre machine CentOS, vous devez installer docker.

Si vous ne partez pas d’une installation propre nous vous conseillons de désinstaller toutes les dépendances déjà existante de docker :

sudo dnf remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

Ensuite vous devez réinstaller docker :

sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Puis vous devez démarrer Docker Engine sudo systemctl enable --now docker

Et vous pouvez vérifier votre installation : sudo docker run hello-world

Installation de LibreNMS sous docker

Nous nous sommes permis de demander à notre collègue GPT de nous expliquer ce qu’était LibreNMS, de nous donner les points auxquels il faut faire attention et de nous donner un petit manuel d’utilisation que vous retrouverez ici.

Si tout est bon, on peut commencer à entrer dans le vif du sujet : Installer LibreNMS

Vous allez télécharger et dézipper le projet :

mkdir librenms
cd librenms
wget https://github.com/librenms/docker/archive/refs/heads/master.zip
unzip master.zip
cd docker-master/examples/compose

Une fois dans le dossier docker-master/examples/compose vous allez modifier le mot de passe mysql dans le fichier .env

Screenshot 2024-12-22 at 11 40 21 Screenshot 2024-12-22 at 11 40 26

Dès que cela sera fait vous pouvez lancer votre container docker sudo docker compose -f compose.yml up -d

Vous pouvez à présent vous rendre sur http://localhost:8000 pour terminer la configuration. (Il vaut mieux utiliser l’adresse ip de la machine plutôt que localhost).

Quand vous serez sur le site vous devrez créer un compte administrateur (username, password, email). Puis vous serez redirigé sur le Dashboard de libreNMS.

Screenshot 2024-12-22 at 11 54 45

Activation SNMP sur les serveurs Proxmox

Afin de rajouter nos serveurs Proxmox dans LibreNMS, nous devons activer SNMP sur les serveurs proxmox. Pour ce faire vous allez vous rendre sur le terminal de votre serveur et installer SNMP :

apt update
apt install snmp snmpd -y

Lorsque SNMP sera télécharger vous devrez vous rendre sur le fichier nano /etc/snmp/snmpd.conf. Vous allez maintenant ajouter / modifier ces lignes :

agentAddress udp:161
createUser <USERNAME> SHA <PASSWORD> AES <ENCRYPTION_PASSWORD>
rouser <USERNAME> priv
sysLocation "Proxmox Server"
sysContact admin@domain.com

<USERNAME> : Nom d'utilisateur SNMP (ex. snmpadmin)

SHA : Méthode d'authentification

AES : Méthode de chiffrement

<PASSWORD> : Mot de passe d'authentification

<ENCRYPTION_PASSWORD> : Mot de passe de chiffrement

Il ne reste plus qu'à redémarrer le service

systemctl restart snmpd
systemctl enable snmpd

Pour tester SNMPv2c

Commande :

snmpwalk -v2c -c public <IP_PROMOX>

Exemple :

snmpwalk -v2c -c public 100.101.241.99 <IP sur le réseau VPN tailscale>

Voici la trace wireshark entre mon ordinateur et le serveur hyp-stu-331

Screenshot 2024-12-22 at 14 35 45

On peut voir ici que le traffic n'est pas crypté et donc on peut lire toutes les informations en claires.

Pour tester SNMPv3

Commande :

snmpwalk -v3 -u <USERNAME> -a SHA -A <PASSWORD> -x AES -X <ENCRYPTION_PASSWORD> -l authPriv <IP_PROXMOX>

Exemple :

snmpwalk -v3 -u snmpadmin -l authPriv -a SHA -A {#Paddington666#} -x AES -X {#Paddington666#} 100.101.241.99

Voici la trace wireshark entre mon ordinateur et le serveur hyp-stu-331

Screenshot 2024-12-22 at 14 36 43

On peut voir ici que le traffic est crypté et donc on ne peut pas lire toutes les informations en claires.

Installation des serveurs sur LibreNMS

Une fois SNMP configuré sur les deux serveurs il ne vous reste plus qu'à les rajouter dans LibreNMS.

  1. Connectez-vous à l'interface web de LibreNMS.
Screenshot 2024-12-22 at 12 42 21
  1. Allez dans Devices → Add Device
Screenshot 2024-12-22 at 12 42 08
  1. Remplissez les champs :

    • Hostname/IP : IP de votre serveur Proxmox.

    • SNMP Version : Choisissez v2c ou v3 selon votre configuration.

    • Si vous avez mis en place SNMPv3, vous devez aussi remplir les champs en fonction de ce que vous avez paramétré dans les serveurs.

      • Auth Level
      • Auth User Name
      • Auth Password
      • Auth Algorithm
      • Crypto Password
      • Crypto Algoritmh
    • Community : Entrez le mot de passe SNMP (ex. public).

  2. Cliquez sur Add Device.

Screenshot 2024-12-22 at 12 41 34
  1. Une fois ajouté, vérifiez que les métriques s'affichent correctement.

Vous pouvez aussi modifier votre dashboard. Voici le notre pour le moment :

Screenshot 2024-12-22 at 14 34 35

Synthèses des concepts liés à SNMP

C'est quoi SNMP ?

SNMP (Simple Network Management Protocol) est un protocole qui permet aux administrateurs réseaux de pouvoir manager tous les équipements réseaux en voyant l'état des disques, l'état du réseau, l'état d'usage CPU, température, etc [1]

OID et MIB [2]

OID : Object Identifiers Ce sont des identifiants uniques qui pointent vers des objets manageables. C'est une sorte d'adresse permettant d'accéder à une données précises.

Exemple OID 1.3.6.1.4.1.2021.10.1.3.1 → Charge CPU moyenne sur 1 minute

MIB : Management Information Base C'est un peu comme le dictionnaire des OID. Il permet de traduire les OID en information compréhensible.

Authentification et community [3]

  • Authentification (SNMPv3)

    • noAuthNoPriv : Pas d’authentification, pas de chiffrement (⚠️ non sécurisé).
    • authNoPriv : Authentification, mais pas de chiffrement.
    • authPriv : Authentification + chiffrement (recommandé).
  • Community (SNMPv1/v2c)

    • Une "community" est une sorte de mot de passe SNMP utilisé pour l’accès aux périphériques.
    • Exemples courants : public (lecture seule), private (écriture).

Les apports de SNMPv3 [3]

Protocole Sécurité Chiffrement Authentification Performances Cas d'utilisation
SNMPv1 Faible ❌ Non ❌ Non Léger Petits réseaux, obsolète
SNMPv2c Faible ❌ Non ❌ Non Bonne Réseaux plus grands, lecture seule/sécurisée
SNMPv3 Élevée ✅ Oui ✅ Oui Légèrement plus lourd Réseaux sécurisés, entreprises, conformité

SNMP Traps [4][5]

Un Trap SNMP est une alerte envoyée par un périphérique SNMP à un serveur de supervision (comme LibreNMS) lorsqu’un événement spécifique se produit (ex. panne d’un disque dur, surcharge CPU).

Bibliographie

[1] Wikipédia, "Simple Network Management Protocol", https://fr.wikipedia.org/wiki/Simple_Network_Management_Protocol, visité le 22/12/2024 à 14h43

[2] Paessler, "SNMP, MIBs and OIDs – an overview", https://www.paessler.com/it-explained/snmp-mibs-and-oids-an-overview, visité le 22/12/2024 à 14h46

[3] Solarwinds, "A Guide to Understanding SNMP", https://www.solarwinds.com/assets/solarwinds/swresources/tech-tip/a_guide_to_understanding_snmp.pdf, consulté le 22/12/2024 à 14h53

[4] Reddit, "librenms snmp traps", https://www.reddit.com/r/LibreNMS/comments/gb2mpr/librenms_snmp_traps/, consulté le 22/12/2024 à 15h02

[5] LibreNMS Docs, "SNMP Trap Handler" , https://docs.librenms.org/Extensions/SNMP-Trap-Handler/, consulté le 22/12/2024 à 15h10

Clone this wiki locally