Contexte
Le check Certificate Expiration [ $KEY$ ] by WinRM permet de superviser l'expiration
Il est configurable pour renvoyer un status CRITIQUE / ATTENTION si le nombre de jours restants avant l'expiration du certificat supervisé passe en dessous des seuils.
Le check utilise une donnée Duplicate Foreach ( DFE ) qui permet de générer plusieurs fois le check pour chaque certificat à superviser.
Paramétrage
$WINDOWS-BY-WINRM__SHINKEN__PLUGINSDIR$/check-windows-certificate-expiration.py
-H "$HOSTADDRESS$"
-u "$_HOSTWINDOWS_BY_WINRM__DOMAINUSER$"
-p "$_HOSTWINDOWS_BY_WINRM__DOMAINPASSWORD$"
-M "$_HOSTWINDOWS_BY_WINRM__AUTHMETHOD$"
-m certificate_expiration
-T "$ARG1$"
-N "$ARG2$"
-w "$_SERVICEWINDOWS_BY_WINRM__CERTIFICATE-EXPIRATION__EXPIRATION-WARN$"
-c "$_SERVICEWINDOWS_BY_WINRM__CERTIFICATE-EXPIRATION__EXPIRATION-CRIT$"
Données utilisées provenant des modèles
Données communes pour les checks des modèles
| Nom | Modifiable sur | Valeur par défaut | Description |
|---|---|---|---|
WINDOWS_BY_WINRM__AUTHMETHOD | l'Hôte ( Onglet Données ) | ntlm | Méthode d'authentification utilisé. Valeurs possibles : basic, ntlm |
WINDOWS_BY_WINRM__DOMAINPASSWORD | l'Hôte ( Onglet Données ) | Ch4nge_Th1s_P4ssw0rd | Mot de passe de l'utilisateur de supervision |
WINDOWS_BY_WINRM__DOMAINUSER | l'Hôte ( Onglet Données ) | shinken_user | Nom complet de l'utilisateur de supervision utilisé pour exécuter des commandes à distance.
|
WINDOWS_BY_WINRM__PORT | l'Hôte ( Onglet Données ) | 5985 | Port de connexion au serveur WinRM de l'hôte à superviser. |
WINDOWS_BY_WINRM__TIMEOUT | l'Hôte ( Onglet Données ) | 20 | Temps maximum sans réponse d'une requête WinRM pour que la sonde renvoi un statut INCONNU. |
Données spécifiques pour ce check
| Nom | Modifiable sur | Unité | Valeur par défaut | Description |
|---|---|---|---|---|
WINDOWS_BY_WINRM__CERTIFICATE-EXPIRATION__EXPIRATION-CRIT | l'Hôte ( Onglet Données ) | jours | 30 | Seuil d'expiration en jours en dessous duquel un status CRITIQUE est déclenché |
WINDOWS_BY_WINRM__CERTIFICATE-EXPIRATION__EXPIRATION-WARN | l'Hôte ( Onglet Données ) | jours | 60 | Seuil d'expiration en jours en dessous duquel un status ATTENTION est déclenché |
Données DFE ( Duplicate Foreach )
| Donnée | Description | Exemple |
|---|---|---|
WINDOWS_BY_WINRM__CERTIFICATE-EXPIRATION__STORE-AND-CERTIFICATE | Définit une paire KEY$(VALUE_A)$$(VALUE_B)$.
| WindowsRootCert$(LocalMachine)$$(Microsoft Root Certificate Authority 2010)$, Domain$(LocalMachine)$$(MyDomainName.com)$ |
En cas de difficulté pour identifier les certificats à superviser, ils peuvent être recherchés depuis la console MMC.
Données utilisées provenant du check
Pas de données provenant du check pour ce modèle
Non modifiable ( Sauf Admin Shinken ) Chemin absolu contenant les sondes installés par Shinken Non modifiable ( Sauf Admin Shinken ) Dossier fournit par shinken Non modifiable ( Sauf Admin Shinken ) Dossier contenant les sondes Non modifiable ( Sauf Admin Shinken ) Chemin absolu du dossier contenant les sondes du pack windows-by-WinRM__shinken ( non modifiable ) l'Hôte ( Onglet Général ) -- Adresse de l'hôteDonnées globales
Nom Modifiable sur Unité Défaut Valeur par défaut à l'installation Description USERPLUGINSDIR
-- /var/lib/shinken/libexec /var/lib/shinken/libexec WINDOWS-BY-WINRM__SHINKEN__VENDOR
-- shinken-additional-packs shinken-additional-packs WINDOWS-BY-WINRM__SHINKEN__PACKNAME
-- windows-by-WinRM__shinken windows-by-WinRM__shinken WINDOWS-BY-WINRM__SHINKEN__PLUGINSDIR
-- USERPLUGINSDIR/WINDOWS-BY-WINRM__SHINKEN__VENDOR/WINDOWS-BY-WINRM__SHINKEN__PACKNAME
/var/lib/shinken-user/libexec/shinken-additional-packs/windows-by-WinRM__shinken Propriétés de l'hôte
Nom Modifiable sur Unité Défaut Valeur par défaut Description HOSTADDRESS
Nom de l'hôte Nom de l'hôte
Résultat
Exemple
Interprétation
Il peut prendre quatre valeurs OK / CRITIQUE / ATTENTION / INCONNU
Le statut va dépendre du retour de sonde et de la configuration spécifique du check pour les données suivantes :
- WINDOWS_BY_WINRM__CERTIFICATE-EXPIRATION__EXPIRATION-CRIT
- WINDOWS_BY_WINRM__CERTIFICATE-EXPIRATION__EXPIRATION-WARN
Voici un tableau récapitulatif du statut attendu suivant le retour de sonde :
Le texte de la colonne "Affichage des seuils" montre les paramètres utilisés et leur valeur définie sur l'équipement supervisé.
Situation | Statut | Exemple |
|---|---|---|
| CRITIQUE |
|
| ATTENTION |
|
| INCONNU |
|
| INCONNU |
|
Résultat
Le résultat contient un message indiquant le status et la date d'expiration du certificat supervisé.
Résultat long
Pas de résultat long.
Métriques
Pas de métriques.
Erreurs et pré-requis
L’hôte supervisé a mis trop de temps à répondre à la requête. Note : ce problème peut également provenir d’un mauvais port configuré, d’un port fermé sur l’hôte supervisé, ou si le service WinRM est stoppé sur l'hôte supervisé.
Résolution : La commande ci dessous permet de voir l'état du service WinRM : Il est possible de le démarrer ou de le configurer pour se lancer automatiquement avec les commandes suivantes : L'hôte à refusé la connection ; ou bien son pare-feu.
L'hôte n'a pas pu recevoir la requête. Vérifiez votre réseau, routeur, pare-feu et nom d'hôte.
Le nom de l’hôte n’a pas pu être résolu. Vérifiez que l’adresse renseignée est correcte et que le serveur DNS est accessible.
Le nom de l’hôte n'est pas une URI valide. Vérifiez que l’adresse renseignée est correcte.
NTLM n'est pas activé sur l'hôte à superviser.
Résolution : Vous pouvez : Activer NTLM sur l'hôte supervisé avec la commande suivante : La connexion NTLM n'a pas été autorisée. Les raisons possibles sont : Le mot de passe du compte de supervision a expiré, ou un changement est imposé à la prochaine ouverture de session.
Résolution : Il faut s'assurer d'avoir correctement appliqué les configurations décrites dans les sections "Configuration de WinRM" et "Configuration de l'utilisateur" ( Voir la page Configuration de WinRM et du compte de supervision sur une seule machine Windows pour le pack windows-by-WinRM__shinken ). Si la configuration WinRM est correcte, penchez pour une expiration du mot de passe ou un changement imposé. Sur l'hôte supervisé, en session administrateur, exécuter : Repérer les lignes portant le nom du compte de supervision, puis interpréter : Compte expiré (le compte lui-même, pas son mot de passe) Horloges désynchronisées entre l’hôte et le contrôleur de domaine Anomalie Windows connue, sans conséquence (à ignorer) ATTENTION : les deux codes doivent être lus ensemble La cause n’est pas portée par le même champ selon les cas : il faut relever le Status et le Sub Status, et faire correspondre la paire complète au tableau ci-dessus. Si la cause est une expiration ou un changement imposé : Si le code est 0xC000015B : La configuration de l’hôte est incomplète : le compte existe et son mot de passe est valide, mais il n’a pas le droit d’ouverture de session sur cette machine. Rejouez Configure-Host.ps1 en workgroup, ou vérifiez l’application des GPO en domaine. Si le code est 0xC0000133 : Vérifiez la synchronisation horaire de l’hôte supervisé. Le check Ntp Sync by WinRM du pack surveille précisément ce point. L'authentification basic n'est pas activé sur l'hôte à superviser.
Résolution : Vous pouvez : Activer Basic sur l'hôte supervisé avec la commande suivante, et autoriser les communications non chiffrées : La connexion basic n'a pas été autorisé. Les raisons possibles sont : Winrm n'a pas été configuré avec la commande :
Résolution : Il faut s'assurer d'avoir correctement appliqué les configurations décrites dans les sections "Configuration de WinRM" et "Configuration de l'utilisateur" ( Voir la page Configuration de WinRM et du compte de supervision sur une seule machine Windows pour le pack windows-by-WinRM__shinken ). Si la configuration WinRM est correcte, penchez pour une expiration du mot de passe ou un changement imposé. Sur l'hôte supervisé, en session administrateur, exécuter : Repérer les lignes portant le nom du compte de supervision, puis interpréter : Compte expiré (le compte lui-même, pas son mot de passe) Horloges désynchronisées entre l’hôte et le contrôleur de domaine Anomalie Windows connue, sans conséquence (à ignorer) ATTENTION : les deux codes doivent être lus ensemble La cause n’est pas portée par le même champ selon les cas : il faut relever le Status et le Sub Status, et faire correspondre la paire complète au tableau ci-dessus. Si la cause est une expiration ou un changement imposé : Si le code est 0xC000015B : La configuration de l’hôte est incomplète : le compte existe et son mot de passe est valide, mais il n’a pas le droit d’ouverture de session sur cette machine. Rejouez Configure-Host.ps1 en workgroup, ou vérifiez l’application des GPO en domaine. Si le code est 0xC0000133 : Vérifiez la synchronisation horaire de l’hôte supervisé. Le check Ntp Sync by WinRM du pack surveille précisément ce point. L'utilisateur utilisé n'a pas accès à l'éxécution de commandes à distances.
Résolution : Il est important de donner les accès "Read" et "Invoke" à l'utilisateur de supervision afin qu'il puisse lire des ressources et éxécuter des commandes sur l'hôte supervisé. Il faut s'assurer d'avoir correctement appliqué la configuration décrite dans la section "Permissions WinRM pour l'utilisateur" ( Voir la page Configuration de WinRM et du compte de supervision sur une seule machine Windows pour le pack windows-by-WinRM__shinken ). L'utilisateur utilisé n'a pas accès aux objets CIM, necessaire à la supervision de la machine.
Résolution : Il est necessaire de donner les accès à distance aux objets CIMv2 et StandardCimv2. Il faut s'assurer d'avoir correctement appliqué la configuration décrite dans la section "Autorisation aux objets CIM" ( Voir la page Configuration de WinRM et du compte de supervision sur une seule machine Windows pour le pack windows-by-WinRM__shinken ). L'utilisateur utilisé n'a pas accès aux objets CIM. Les permissions sont en cours d'application.
Résolution : L'erreur survient après la modification des droits aux objets CIM de l'utilisateur. Il suffit d'attendre ou de redémarrer la machine afin que les permissions s'actualisent.Erreurs de connexion ( communes à tous les checks )
UNKNOWN – Transport error : failed to send request: request timed out
Get-Service WinRM
# Redémarrer le service WinRM :
Restart-Service WinRM
# Configurer le démarrage automatique
Set-Service -Name WinRM -StartupType Automatic
UNKNOWN – Transport error : sent request failed: connection refused
UNKNOWN – Transport error : sent request failed: host is not reachable
UNKNOWN – Transport error : sent request failed: DNS resolution failed
UNKNOWN – Transport error : failed to build request: given uri is invalid
UNKNOWN – Authentication NTLM failed : NTLM is not supported by the server
winrm set winrm/config/service/auth '@{Negotiate="true"}'
UNKNOWN – Authentication NTLM failed : Unauthorized
winrm quickconfig
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20 |
ForEach-Object {
$p = $_.Properties
"{0} account={1,-20} status=0x{2:X8} substatus=0x{3:X8}" -f `
$_.TimeCreated, $p[5].Value, $p[7].Value, $p[9].Value
}
Status Sub Status Cause 0xC000006D 0xC000006A Mot de passe incorrect 0xC000006D 0xC0000064 Le compte n'existe pas 0xC000006E 0xC0000071 Mot de passe EXPIRÉ 0xC0000224 0x00000000 Changement de mot de passe imposé a la prochaine ouverture de session 0xC000015B 0x00000000 Le compte n'a pas le droit « Accéder à cet ordinateur depuis le réseau » 0xC0000234 0x00000000 Compte verrouillé 0xC000006E 0xC0000072 Compte désactivé 0xC0000193 0x00000000 0xC0000133 0x00000000 0xC0000225 0x00000000 UNKNOWN – Authentication Basic failed : Basic is not supported by the server
winrm set winrm/config/service/auth '@{Basic="true"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
UNKNOWN – Authentication Basic failed : Unauthorized
winrm quickconfig
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20 |
ForEach-Object {
$p = $_.Properties
"{0} account={1,-20} status=0x{2:X8} substatus=0x{3:X8}" -f `
$_.TimeCreated, $p[5].Value, $p[7].Value, $p[9].Value
}
Status Sub Status Cause 0xC000006D 0xC000006A Mot de passe incorrect 0xC000006D 0xC0000064 Le compte n'existe pas 0xC000006E 0xC0000071 Mot de passe EXPIRÉ 0xC0000224 0x00000000 Changement de mot de passe imposé a la prochaine ouverture de session 0xC000015B 0x00000000 Le compte n'a pas le droit « Accéder à cet ordinateur depuis le réseau » 0xC0000234 0x00000000 Compte verrouillé 0xC000006E 0xC0000072 Compte désactivé 0xC0000193 0x00000000 0xC0000133 0x00000000 0xC0000225 0x00000000 Erreurs de configuration de l'hôte à superviser ( communes à tous les checks )
UNKNOWN – Response fault error: Code: s:Sender, Subcode: w:AccessDenied, Reason: Access is denied.
MONITORED HOST - BAD STATE – Command execution Failed. Permission denied.
UNKNOWN – Command execution Failed. [...] Provider failure



















