Le check Services Matching [ $KEY$ ] by WinRM permet de vérifier le status d’un service Windows. Il permet ainsi de s’assurer que les services supervisés sont bien dans l’état attendu.
Le check utilise une donnée Duplicate Foreach qui permet de générer automatiquement le check pour chaque service à superviser.
|
$WINDOWS-BY-WINRM__SHINKEN__PLUGINSDIR$/check_windows_health_by_winrm_rust --check check_services_matching
--hostname "$HOSTADDRESS$"
--port "$_HOSTWINDOWS_BY_WINRM__PORT$"
--username "$_HOSTWINDOWS_BY_WINRM__DOMAINUSER$"
--password "$_HOSTWINDOWS_BY_WINRM__DOMAINPASSWORD$"
--auth_method "$_HOSTWINDOWS_BY_WINRM__AUTHMETHOD$"
--timeout "$_HOSTWINDOWS_BY_WINRM__TIMEOUT$"
-n "$ARG1$"
-e "$_SERVICEWINDOWS_BY_WINRM__SERVICES-MATCHING__EXPECTED-STATE$" |
| Nom | Modifiable sur | Unité | Valeur par défaut | Description | |
|---|---|---|---|---|---|
| l'Hôte ( Onglet Données ) | - | Running | Définit l'état attendu du service. Elle peut prendre une des valeurs suivantes :
| |
| Donnée | Description | Exemple | |
|---|---|---|---|
| Définit une paire KEY$(VALUE)$, la KEY correspond à la description du service à vérifier et la VALUE au nom du service. Cette valeur accepte les wildcards* | win$(WinRM)$ |
Modifier les données accrochées à l'hôte affectera l'ensemble des checks dupliqués. |
Pas de données provenant du check pour ce modèle
|
Il peut prendre trois valeurs OK / CRITIQUE / INCONNU
Voici un tableau récapitulatif du statut attendu suivant le retour de sonde :
| Situation | Statut | Exemple | |
|---|---|---|---|
| Le service est dans l’état attendu défini par la variable WINDOWS_BY_WINRM__SERVICES-MATCHING__EXPECTED-STATE. | OK |
| |
| Le service n’est pas dans l’état attendu défini par la variable WINDOWS_BY_WINRM__SERVICES-MATCHING__EXPECTED-STATE. | CRITIQUE |
| |
| Le service n’a pas été trouvé sur le système cible. | INCONNU |
| |
| Accès refusé lors de la tentative d’interrogation du service. | INCONNU |
|
Le résultat contient un message indiquant le statut du check.
Pas de résultat long.
L'utilisateur de supervision ne dispose pas des droits nécessaires pour interroger l’état du service cible.
|
La résolution de ce problème doit se faire en mode Administrateur sur un terminal PowerShell |
Récupérer le SID de l'utiliateur ou du groupe associé à la supervision.
Executer la commande suivante :
(New-Object System.Security.Principal.NTAccount("DOMAINE\Utilisateur")).Translate([System.Security.Principal.SecurityIdentifier]).Value |
Conserver le SID retourné, il sera utilisé dans les étapes suivantes. |
Exemple :
|
Afficher la configuration de sécurité du service :
Exécuter :
sc.exe sdshow "NomDuService" |
Exemple :
|
La commande retourne le SDDL complet du service.
Modifier la DACL du service.
Copier le résultat retourné par sc.exe sdshow.
Dans la section commençant par "D:", ajouter l’entrée suivante juste avant la section "S:"
(A;;CCLCSWLORC;;;<USER_SID>) |
Remplacer <USER_SID> par le SID récupéré préceddement.
Exemple de SDDL modifié :
D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;LC;;;S-1-5-21-2583679208-1579500244-1739850223-1006)(A;;CCLCSWLORC;;;S-1-5-21-2583679208-1579500244-1739850223-1009)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD) |
CC → SERVICE_QUERY_CONFIG |
Appliquer la nouvelle configuration.
Une fois le SDDL modifié, l’appliquer avec :
sc.exe sdset "NomDuService" "<SDDL_MODIFIE>" |
Exemple :
|
Attention : une erreur dans le SDDL peut rendre le service inaccessible |