Synopsis
Pour faire simple, WinRM et PowerShell sont à Windows ce que SSH et le Shell sont à Linux, une manière facile d’administrer en ligne de commande une ou plusieurs machines.
Il faut savoir que WinRM (Windows Remote Management) est basé sur le protocole HTTP/HTTPS mais n’utilise pas les fameux ports par défaut 80/443, il se démarque par l’utilisation des ports 5985 (HTTP) et 5986 (HTTPS).
Installation de WinRM
WinRM étant actif de base depuis Windows Server 2012 il n’est pas nécessaire de l’installer, cette partie sert donc pour les versions antérieures.
La commande ci-dessous permet de savoir si le service est installé/actif (Running), dans le cas contraire installez le package Windows Management Framework 4.0.
Get-Service WinRM
Configuration Firewall
Ouvrir simplement les ports 5985 (HTTP) et 5986 (HTTP) en TCP depuis la management machine vers les machines cibles.
Configuration de WinRM
Pour les plus téméraires, il est possible de configurer WinRM via commandes PowerShell, mais étant partisan du moindre effort (surtout sur grosses infras) je préfère l’automatisation via GPO.
- Configuration de WinRM
Enable-PSRemoting
- Autorisation d’écoute sur l’IP de la machine et de loopback
Remove-WSManInstance winrm/config/Listener -SelectorSet @{Address="*";Transport="http"}
New-WSManInstance winrm/config/Listener -SelectorSet @{Address="*";Transport="http"}
- Redémarrage du service
Restart-Service winrm
- Vérification de la configuration
winrm get winrm/config/client
winrm e winrm/config/listener
- A faire sur la machine de Management
- Autorisation du serveur Remote (Dans le cas ou ils ne sont pas dans le même domaine)
Set-Item WSMan:\localhost\Client\TrustedHosts <IP_Remote_Server>
Configuration du Service
Configuration du service Windows Remote Management pour démarrer en automatique.
Computer Configuration \ Policies \ Windows Settings \ Security Settings \ System Services \ Windows Remote Management (WS-Management)
Configuration des Listeners
Configuration des adresses IP locales que le service WinRM est autorisé à écouter.
Computer Configuration / Policies / Administrative Templates / Windows Components / Windows Remote Management (WinRM) / WinRM Service / Allow remote server management through WinRM
Règle Firewall
Création d’une “Inbound Rule” pour autoriser le groupe “Windows Remote Management”.
Computer Configuration / Policies / Windows Settings / Security Settings / Windows Firewall with Advanced Security
Trusted Hosts
Dans de nombreux cas, vous pourrez travailler avec des machines distantes d’autres domaines. Toutefois, si l’ordinateur distant ne fait pas partie d’un domaine approuvé, il est possible qu’il ne soit pas en mesure d’authentifier vos credentials. Pour activer l’authentification, vous devez ajouter l’ordinateur distant à la liste des Trusted Hosts dans le Management Server.
Computer Configuration / Policies / Administrative Templates / Windows Components / Windows Remote Management (WinRM) / WinRM Client / Trusted Hosts
Test via commande PowerShell
$session = New-PSSession -cn <Server01>,<Server02> -cred <Domain>\<Username> Invoke-Command -Session $session -ScriptBlock {<Command_to_Propagate>}