Supervision : Comment checker l’état de la synchronisation WSUS ?

Supervision : Comment checker l’état de la synchronisation WSUS ?

I. Présentation

Au sein d’un tutoriel précédent, on avait vu comment exécuter des scripts PowerShell avec NRPE, je vous propose d’exploiter cette possibilité offerte par NSClient++ pour vérifier l’état de la synchronisation de votre serveur WSUS afin de l’intégrer à votre supervision.

Il est indispensable de s’assurer que son serveur WSUS synchronise correctement car sans cela, il ne va pas récupérer les dernières mises à jour auprès des serveurs Windows Update de Microsoft. Par conséquent, les mises à jour ne seront pas déployées auprès de vos clients.

Pour parvenir à cela, j’ai développé un script PowerShell qui récupère l’état de la synchronisation et qui retourne un état à la solution de supervision. En fonction de cet état, on peut générer une alerte si besoin. Cette solution s’appuie sur NSClient++ et NRPE.

II. Récupérer l’état de la synchronisation

Directement depuis le serveur WSUS, grâce à la commande « Get-WsusServer » on va pouvoir récupérer des informations sur l’état de la dernière synchronisation. En fait, il faut vérifier deux choses :

  • L’état de la dernière synchronisation, elle doit être réussie
  • La date de la dernière synchronisation, car la dernière peut être réussie mais elle peut dater de 10 jours, ce qui n’est pas normal

Grâce à la commande ci-dessous on va accéder à un ensemble de propriétés qui vont répondre à notre besoin :

(Get-WsusServer).GetSubscription().GetLastSynchronizationInfo()

En cas d’échec de synchronisation :

En cas de synchronisation réussie : 

Ce sont les propriétés « Result » et « EndTime » que nous allons utiliser dans notre script.

III. Le script pour la vérification

Maintenant, il est temps de voir le script complet et que je vous fournisse quelques explications :

La variable $NumberOfDaysWithoutSync indique le nombre de jours sans synchronisation que l’on tolère. Par exemple, si la dernière synchronisation réussie remonte à plus de 7 jours, il y aura une alerte. Modifiez la valeur en fonction de vos besoins.

La variable $ExitCode retourne un code à NRPE qui sera ensuite renvoyé à votre solution de supervision. Si l’état est sur « 0 » alors c’est OK, si l’on retourne « 2 » c’est qu’il y a un problème de synchronisation.

Voici le code complet du script :

# Synopsys : Check status of WSUS Synchronization

# Initial state
$ExitCode = 0

# Variables
$NumberOfDaysWithoutSync = 7

# Get the status of the last synchronization
$WsusLastSyncOutput = (Get-WsusServer).GetSubscription().GetLastSynchronizationInfo()

## CHECK SYNC STATE
# Normal state : Result = Succeeded
if(!($WsusLastSyncOutput.Result -eq "Succeeded"))

  $ExitCode = 2
  Write-Output "CRITICAL: The last sync $($WsusLastSyncOutput.EndTime) state is $($WsusLastSyncOutput.Result)"


## CHECK THE DATE OF THE LAST SYNC
# Get the datetime of the last synchronization
$WsusLastTimeOutput = (Get-WsusServer).GetSubscription().LastSynchronizationTime

# Calculate the reference date
$DateReference = (Get-Date).AddDays(-$NumberOfDaysWithoutSync)

# If the last sync time is older than the calculate date (= date of the day - $NumberOfDaysWithoutSync) it's critical
if($DateReference -gt $WsusLastTimeOutput)

  $ExitCode = 2 
  Write-Output "CRITICAL: Last sync is older than $NumberOfDaysWithoutSync days and his state is $($WsusLastSyncOutput.Result)" 


# Evaluate final exit code result for all passed checks.
if ($ExitCode -eq 0)  Write-Output "OK: The last sync $($WsusLastSyncOutput.EndTime) state is $($WsusLastSyncOutput.Result)" 

exit $ExitCode

Enregistrez ce bout de code dans un fichier et enregistrez-le dans le dossier « scripts » de NSClient++, par exemple avec le nom « Check-WsusSyncState.ps1« . Vous pouvez personnaliser les messages de retour si vous le souhaitez, ce sont les messages qui s’afficheront sur l’interface de votre solution de monitoring.

IV. Configuration de NSClient++ pour ajouter le script

Maintenant, on va intégrer ce script à NSClient++ pour que l’on puisse l’appeler depuis notre solution de supervision, Centreon par exemple. Editez le fichier de configuration NSClient.ini et ajoutez cette ligne sous le bloc « (/settings/external scripts/scripts)« . Pensez à vous référer à l’article mentionné au début de celui-ci pour la configuration de NRPE si nécessaire.

Sur la ligne ci-dessous, adaptez le nom de votre script PowerShell si nécessaire. Le premier terme, c’est à dire « Check-WsusSyncState » correspond au nom de la commande qu’il faudra appeler depuis Centréon, ensuite NSClient fait le lien entre ce nom de commande et le script à exécuter.

Check-WsusSyncState=cmd /c echo scripts\Check-WsusSyncState.ps1; exit($lastexitcode) | powershell.exe -command -

Pour finir, redémarrez le service NSClient++ pour prendre en compte cette nouvelle configuration.

V. Intégration à la supervision

En fonction de votre système de supervision, vous devrez ensuite effectuer la configuration pour appeler notre script via NRPE, votre commande de check ressemblera à ceci :

.\check_nrpe -H 192.168.1.150 -c Check-WsusSyncState

Lorsque tout sera prêt, vous allez obtenir un bel état de votre synchronisation WSUS dans votre Centréon (ou autre) :

Voilà, ce tutoriel est terminé ! Que pensez-vous de cette vérification ? Allez-vous l’implémenter ?

Hébergez votre site à partir de 2$ sur 👉👉👉

À propos Santana

Analyste en cybersécurité avec 5 ans d'expérience dans la protection des systèmes d'information contre les menaces et les attaques. Expertise dans la surveillance des réseaux, l'analyse des vulnérabilités, et la gestion des incidents de sécurité. Passionnée par l'innovation technologique et la mise en œuvre de solutions de sécurité robustes pour protéger les données sensibles et assurer la conformité réglementaire.

Vérifiez également

Comment mettre à jour Edge avec WSUS ?

Comment mettre à jour Edge avec WSUS ?

I. Présentation Après avoir vu comment déployer Edge par GPO au sein de votre environnement, …

Installation de WSUS Package Publisher

Installation de WSUS Package Publisher

Table de Matieres1 I. Présentation1.1 A. Pourquoi mettre en place WSUS Package Publisher ?1.2 2 …

WSUS – « Réinitialiser le nœud du serveur » : augmenter la mémoire IIS

WSUS – « Réinitialiser le nœud du serveur » : augmenter la mémoire IIS

I. Présentation Lorsqu’un serveur de mises à jour WSUS est configuré pour gérer les updates …

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.