Informations techniques sur les connexions sans agent pour les systèmes Windows

Les connexions sans agent sur les systèmes Windows reposent sur le protocole de connexion à distance WinRM. Celui-ci doit donc être activé sur les actifs à superviser.

Ce protocole utilise par défaut le port 5985 en mode WinRM HTTP et 5986 en mode WinRM HTTPS.

Le bon fonctionnement des connexions en mode sans agent sur Windows peut nécessiter certaines étapes de configuration décrites ci-dessous.

Prérequis nécessaires à l’utilisation des connexions sans Agent

L’utilisation d’un compte Administrateur local est indispensable, car les scripts d’analyse font appel à des méthodes nécessitant des privilèges :

  • utilisation de DISM (Deployment Imaging and Servicing Management) - récupération des versions des KB installées -.
  • utilisation de l’API WUA (Windows Update Agent) - suppression / téléchargement / gestion de fichier .cab, gestion des services WUA, déploiement des mises à jour -.
  • accès aux répertoires soumis à privilèges - %APPDATA% de tous les utilisateurs pour la récupération des versions des applications installées -.
  • privilèges potentiellement nécessaires pour l’exécution des scripts d’analyses de Conformité.

Il est donc nécessaire de créer un utilisateur Cyberwatch membre du groupe Administrateurs local, en utilisant par exemple la commande suivante :

$UserPassword = Read-Host -AsSecureString       # Une fois la commande validée, saisir un mot de passe pour l'utilisateur Cyberwatch
New-LocalUser "Cyberwatch" -Password $UserPassword
Add-LocalGroupMember -Group 'Administrateurs' -Member Cyberwatch -Verbose

Administrators doit être utilisé sur un système en langue Anglaise.

Les utilisateurs membres des groupes Protected Users ou gMSA ne peuvent pas utiliser le service WinRM. Il faut donc veiller à ne pas inclure l’utilisateur Cyberwatch dans l’un de ces groupes.

Activation de WinRM

La commande PowerShell ci-dessous active le service WinRM s’il est désactivé, et configure le pare-feu Windows en conséquence :

Enable-PSRemoting -Force

Dans certains cas de figure, l’activation seule de WinRM ne suffit pas : il peut être nécessaire d’autoriser les comptes administrateurs locaux à se connecter via WinRM, ou Cyberwatch remontera l’erreur WinRM::WinRMAuthorizationError lors de la création de la connexion sans agent.

Pour ce faire, il faut ajouter la clé suivante dans la base de registre :

New-ItemProperty -Name LocalAccountTokenFilterPolicy -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -propertyType DWord -value 1

La commande suivante permet enfin de vérifier que le service WinRM est bien démarré, et le démarre si cela n’a pas été correctement effectué :

winrm quickconfig

Optionnel - Désactiver manuellement le pare-feu pour WinRM

Une désactivation manuelle du pare-feu Windows peut parfois s’avérer nécessaire malgré les précédentes manipulations, notamment sur les machines AWS-EC2. Dans ce cas, l’erreur remontée par Cyberwatch est Connection expired.

La commande PowerShell ci-dessous permet d’autoriser les requêtes TCP entrantes sur le port 5985 au niveau du pare-feu Windows :

netsh advfirewall firewall add rule name="WinRM-HTTP" dir=in localport=5985 protocol=TCP action=allow

Optionnel - Prérequis nécessaires à l’utilisation de WinRM-Kerberos

Il est nécessaire que la machine Cyberwatch puisse résoudre les noms de domaines du KDC (Key Distribution Center), du serveur d’administration et de chaque machine a supporter.