Ports WinRM : Guide des paramètres par défaut et de personnalisation

WinRM et PowerShell Remoting sont des fonctionnalités essentielles pour la gestion des ordinateurs Windows à distance. Tout comme les autres services, WinRM écoute sur des ports spécifiques dans des circonstances spécifiques. Dans ce tutoriel, apprenez quels sont ces ports WinRM et même comment les modifier, si nécessaire.

Connexe : PowerShell Remoting : Le guide ultime

Le WinRM Listener

L’une des parties les plus importantes de WinRM (et des ports sur lesquels il fonctionne) est le WinRM listener.

Le WinRM listener est un serveur web à la base. Il communique avec HTTP et HTTPS et autrefois, avant Windows 7, il utilisait même par défaut le même port 80 et le port 443 que la plupart des serveurs web.

Le listener s’exécute en tant que service sur votre ordinateur, en attente de l’établissement de connexions, tout comme un serveur web normal.

A WinRm listener can listen two different ways; HTTP or HTTPS. The WinRM port for HTTP is 5985 while the WinRm port for HTTPS is 5986, by default.

  • HTTP – Port 5985
  • HTTPS – Port 5986

Connexe : PowerShell Remoting : Le guide ultime

Erreurs de connexion aux mauvais ports

Et si vous n’ajoutez pas la règle du pare-feu lorsque vous changez le port, vous obtiendrez le même message même en fournissant le port de cette manière.

Modification des ports WinRM

Alors que Microsoft recommande de rester avec les ports d’écoute par défaut pour des raisons de compatibilité et de facilité d’utilisation, vous pouvez les modifier. Cela peut être utile dans les cas où il y a un conflit avec les ports par défaut ou une restriction du pare-feu bloquant l’utilisation de ces ports.

Peut-être avez-vous mis en place un système configuré pour se connecter à WinRM via des ports personnalisés. Lorsque vous essayez de vous connecter normalement, vous recevez le message d’erreur suivant :

Failed WinRM connection due to wrong port

Si tel est le cas, il est temps de changer le port WinRM côté serveur !

Pour changer les ports WinRM, vous devrez d’abord vérifier si vous avez déjà un service écoutant sur ces ports.

Repérage des connexions existantes

La manière la plus simple de découvrir quels ports sont utilisés sur une machine Windows est d’utiliser l’outil netstat . Netstat vérifie tous les ports actifs sur votre système et, s’ils sont actifs, renvoie l’IP source et de destination ainsi que le port utilisé.

Pour repérer les ports d’écoute avant de changer les messages WinRM, exécutez netstat -aon. Les commutateurs -aon :

  • affichent toutes les connexions actives (a)
  • affichent l’ID de processus du processus ayant ouvert la connexion (o)
  • ne tentent pas de résoudre les noms DNS des IP de destination (n)
Running netstat to find listening connections

Si un serveur web écoute sur le port 80, par exemple, vous verrez une ligne où l’adresse locale se termine par :80 sous la colonne Adresse locale. Cette ligne est celle où vous verrez l’ID de processus ou PID utilisé par la connexion.

Une fois que vous connaissez le PID, vous pouvez ensuite faire référence au PID pour trouver le nom du processus en utilisant quelque chose comme la cmdlet PowerShell Get-Process.

Running Get-Process to find process name

Dans ce cas, vous pouvez voir ci-dessus que le nom du processus est simplement Système. Cela signifie que le processus est intégré de manière étroite dans le système d’exploitation et est probablement intégré à Windows.

Configuration des ports de compatibilité WinRM

WinRM dispose d’une fonctionnalité appelée ports de compatibilité. Les ports de compatibilité existent pour être rétrocompatibles avec certains systèmes hérités qui ne fonctionnent qu’avec les ports 80 pour HTTP et 443 pour HTTPS. Si vous avez besoin de modifier WinRM pour écouter sur ces ports, activez les écouteurs de compatibilité.

Une fois que vous savez que vous n’avez rien d’autre qui s’exécute sur les ports 80 et 443, configurez les écouteurs WSMan pour utiliser les ports de compatibilité (80 pour HTTP et 443 pour HTTPS).

Set-Item WSMan:\localhost\Service\EnableCompatibilityHttpListener -Value $true
 Set-Item WSMan:\localhost\Service\EnableCompatibilityHttpsListener -Value $true

Configuration de WinRM pour écouter sur n’importe quel port

Si, pour une raison quelconque, vous avez besoin de configurer WinRM pour écouter sur un port non standard, vous pouvez le faire également. Pour ce faire :

  1. Trouvez le nom de l’écouteur. Vous pouvez le faire en énumérant tous les écouteurs WinRM avec la cmdlet Get-Item. La commande ci-dessous liste tous les écouteurs (*) actuellement installés.
Get-Item WSMan:\localhost\Listener*
Getting all existing WinRm listeners

2. Ensuite, en utilisant le nom de l’écouteur indiqué ci-dessus, configurez chaque écouteur en utilisant Set-Item en fournissant le chemin de l’écouteur et le numéro de port auquel le changer.

Set-Item WSMan:\localhost\Listener\\Port -Value 

3. À ce stade, les écouteurs WinRM écoutent sur les ports corrects. Le pare-feu Windows rejette probablement les connexions distantes à ces ports. Vous devez ouvrir ces ports. Pour ce faire, exécutez la commande suivante. Le New-NetFirewallRule ci-dessous crée une règle pare-feu Windows pour autoriser toutes les connexions TCP entrantes vers un port personnalisé.

$FirewallParam = @{
     DisplayName = 'Custom WinRM Port Rule'
     Direction = 'Inbound'
     LocalPort = 
     Protocol = 'TCP'
     Action = 'Allow'
     Program = 'System'
 }
 New-NetFirewallRule @FirewallParam

Connexe : Désactiver le pare-feu Windows : Découvrez les nombreuses façons de le faire

Si vous n’aviez pas ouvert le port approprié du pare-feu Windows, vous auriez reçu un message comme celui-ci lors de la tentative de connexion :

Failed WinRM connection due to Windows firewall

Connexion à un port personnalisé avec PSRemoting

Maintenant que vous avez configuré avec succès WinRM sur le serveur WinRM, vous devez tester la connexion avec le client WinRM. Pour cela, il vous suffit d’ajouter un paramètre supplémentaire : Port.

En utilisant l’une des commandes PSRemoting telles que Invoke-Command ou Enter-PSSession, spécifiez le paramètre Port et le port configuré pour établir une connexion réussie.

Enter-PSSession -ComputerName <hostname> -Port 1111
Successful WinRm connection

Connexe : Invoke-Command : La meilleure façon d’exécuter du code à distance

Source:
https://adamtheautomator.com/winrm-port/