Compiler Net-SNMP sur Windows Serveur (Core) et utiliser SNMPv3

Pré-requis

Un Ordinateur Virtuel Hyper-V, avec Windows Serveur 2025,
8Go de RAM min. et 2 vCPU
(c'est quand même plus fendard sur du Core direct non ? :-D)

Vous pouvez le faire avec une version graphique de Windows Serveur
ou
sur Windows 11 Pro également
en pensant à ouvrir le Terminal et l'Invite de commande en mode Administrateur


Préparer le nécessaire à compiler

1) Télécharger et installer VisualStudio 2022 avec C++

mkdir /TEMP

Invoke-WebRequest -Uri "https://aka.ms/vs/17/release/vs_Community.exe" -OutFile "C:\TEMP\VisualStudioSetup.exe"

sl /TEMP
.\VisualStudioSetup.exe --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --passive --norestart

Si vous installez avec la version graphique de Windows, dans l'onglet Charge de travail, choisir : "Developpement Desktop en C++"

Eteindre et faire un snapshot une fois VisualStudio installé.

2) Télécharger et installer Perl Strawberry

iwr -uri "https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/download/SP_54021_64bit_UCRT/strawberry-perl-5.40.2.1-64bit.msi" -Outfile "C:\TEMP\strawberry-perl-5.40.2.1-64bit.msi"

sl /TEMP

Start-Process msiexec.exe -Wait -ArgumentList '/i "C:\TEMP\strawberry-perl-5.40.2.1-64bit.msi" /quiet /norestart' -Verb RunAs

Eteindre et faire un snapshot

3) Installer OpenSSL (version complète... pas Light !)

iwr -uri "https://slproweb.com/download/Win64OpenSSL-3_5_1.msi" -outfile "C:\TEMP\Win64OpenSSL-3_5_1.msi"

Start-Process msiexec -Wait -ArgumentList '/i "C:\TEMP\Win64OpenSSL-3_5_1.msi" /qn' -Verb RunAs

Eteindre et faire un snapshot.

4) Télécharger manuellement, placer Net-SNMP sur le serveur et le dézipper

(https://sourceforge.net/projects/net-snmp/)

sl /TEMP

Expand-Archive "C:\TEMP\net-snmp-5.10.pre1.zip"

Eteindre et faire un snapshot.


Début de la compilation

5) Passer en cmd

start cmd

6) Récupérer le chemin court vers OpenSSL

dir /x "C:\"

dir /x "C:\Program Files"

Votre chemin devrait donc être : C:\PROGRA~1\OPENSS~1

7) Charger l'environnement Visual Studio

cd "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build"

vcvarsall.bat amd64

Vérifier que Perl est disponible dans l'environnement :

perl -v

8) Compiler !

cd \TEMP\net-snmp-5.10.pre1\net-snmp-5.10.pre1\win32\build.bat

Voici les options à activer :

Net-SNMP build and install options
==================================

1. OpenSSL support: enabled
2. OpenSSL include directory: C:/PROGRA~1/OPENSS~1/include
3. OpenSSL library director: C:/PROGRA~1/OPENSS~1/lib/VC/x64
4. Install path: c:/usr
5. Install after build: enabled
6. Perl modules: disabled
7. Install perl modules: disabled
8. Quiet build (logged): enabled
9. Debug mode: disabled
10. IPv6 transports: enabled
11. winExtDLL agent: enabled
12. Link type: static
13. Install development files disabled

F. Finished - start build
Q. Quit - abort build

Select option to set / toggle:

Appuyez sur F pour terminer et démarrer le build.
Le build devrait réussir. (Done).

Quittez le cmd (fermez la fenêtre) et revenez à PowerShell.

Ajouter au PATH :

Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value "$($env:Path);C:\usr\bin"

$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")

9) Installer l'agent SNMP de Windows

Pour pouvoir bénéficier des MIB du module HOST-RESOURCES-MIB permettant notamment d'accéder à "hrStorageDescr" (les sondes pour le contrôle des disques) et "hrSWRunName", il est nécessaire d'installer aussi l'agent SNMP de Windows

Install-WindowsFeature SNMP-Service

Stop-Service "SNMP"

Set-Service "SNMP" -StartupType Disabled

Pour l'installation sur Windows 11 Pro :

Add-WindowsCapability -Online -Name "SNMP.Client~~~~0.0.1.0"

Stop-Service "SNMP"

Set-Service "SNMP" -StartupType Disabled

Eteindre et faire un snapshot.


Faire la configuration de l'agent SNMPv3

10) Créer le fichier de configuration C:\usr\etc\snmp\snmpd.conf

Copiez/collez le bloc entier dans notepad, adaptez-le (MONUTILISATEUR, MOT2PASSEAUTH et MOT2PASSEPRIV), puis copiez/collez le bloc dans le terminal pour générer automatiquement le fichier avec la configuration, sans mauvais caractères de retours chariots ou autre :

$ConfigContent = @'
createUser MONUTILISATEUR SHA MOT2PASSEAUTH AES MOT2PASSEPRIV
view all included .1 80
group full-access usm MONUTILISATEUR
access full-access "" usm priv exact all all all
'@

[System.IO.File]::WriteAllText("C:\usr\etc\snmp\snmpd.conf", $ConfigContent, [System.Text.UTF8Encoding]::new($false))

Cette configuration donne les pleins pouvoirs à votre utilisateur.
Il sera nécessaire de réduire, mais en l'état, cela permet aux superviseurs d'accéder à tout.
Je vous laisse chercher pour ça.

11) Créer une règle de pare-feu Defender entrante

Pour Autoriser le trafic SNMP venant du superviseur
(Adaptez L'IP 192.168.10.51 à celle de votre superviseur !)

New-NetFirewallRule `
-Name "Autoriser SNMP UDP 161" `
-DisplayName "Autoriser SNMP UDP 161" `
-Direction Inbound `
-Action Allow `
-Protocol UDP `
-LocalPort 161 `
-RemoteAddress 192.168.10.51 `
-Profile Any

12) Créer un service Windows pour Net-SNMP

snmpd.exe -register -Lf C:/usr/log/snmpd.log -c C:/usr/etc/snmp/snmpd.conf

13) Démarrer le service

net start "Net-SNMP Agent"

Vérifier le bon fonctionnement :

Get-Service "Net-SNMP Agent"

En cas de besoin : Arrêter le service, et le supprimer :

net stop "Net-SNMP Agent"

snmpd.exe -unregister

Configuration sur le superviseur

Sur le Superviseur Nagios (par exemple), utiliser le wizard "SNMP de Windows", tout simplement.

Capture d'écran

Capture d'écran


⬆️ Retour en haut de la page