Portas do WinRM: Guia de Configurações Padrão e Personalização

WinRM e o PowerShell Remoting são recursos cruciais para se ter ao gerenciar computadores remotos com Windows. Assim como outros serviços, o WinRM escuta em portas específicas sob circunstâncias específicas. Neste tutorial, aprenda sobre essas portas do WinRM e até mesmo como alterá-las, se necessário.

Relacionado: PowerShell Remoting: O Guia Definitivo

O Ouvinte do WinRM

Uma das partes mais importantes do WinRM (e as portas em que ele opera) é o ouvinte do WinRM.

O ouvinte do WinRM é um servidor web em sua essência. Ele se comunica com HTTP e HTTPS e, nos dias anteriores ao Windows 7, até mesmo costumava usar, por padrão, as mesmas portas 80 e 443 que a maioria dos servidores web utiliza.

O ouvinte funciona como um serviço em seu computador que está aguardando conexões serem estabelecidas, assim como um servidor 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 – Porta 5985
  • HTTPS – Porta 5986

Relacionado: PowerShell Remoting: O Guia Definitivo

Erros ao Conectar em Portas Incorretas

E se você não adicionar a regra de firewall ao alterar a porta, você receberá a mesma mensagem mesmo ao fornecer a porta dessa forma.

Alterando as Portas do WinRM

Embora a Microsoft recomende manter as portas de escuta padrão para compatibilidade e facilidade de uso, você pode alterá-las. Isso pode ser útil em casos em que haja um conflito com as portas padrão ou uma restrição de firewall bloqueando o uso dessas portas.

Talvez você tenha um sistema configurado para se conectar ao WinRM por portas personalizadas. Quando você tenta se conectar normalmente, recebe a seguinte mensagem de erro:

Failed WinRM connection due to wrong port

Se for esse o caso, é hora de mudar a porta do WinRM no lado do servidor!

Para alterar as portas do WinRM, você primeiro precisará descobrir se já existe um serviço ouvindo nessas portas.

Rastreando Conexões Existentes

A maneira mais fácil de descobrir quais portas estão em uso em uma máquina Windows é usar a ferramenta netstat. O Netstat verifica todas as portas ativas no seu sistema e, se estiverem ativas, retorna o IP e a porta de origem e destino usados.

Para rastrear as portas de escuta antes de alterar as postagens do WinRM, execute netstat -aon. Os comutadores -aon:

  • mostram todas as conexões ativas (a)
  • mostram o ID do processo para o processo que abriu a conexão (o)
  • não tentam resolver nenhum nome DNS dos IPs de destino (n)
Running netstat to find listening connections

Se um servidor web estiver ouvindo na porta 80, por exemplo, você verá uma linha onde o endereço local terminou em :80 sob a coluna Endereço Local. Esta linha é onde você verá o PID ou ID do processo que a conexão está usando.

Uma vez que você conhece o PID, você pode então fazer referência ao PID para encontrar o nome do processo usando algo como o cmdlet PowerShell Get-Process.

Running Get-Process to find process name

Embora, neste caso, você possa ver acima que o nome do processo é simplesmente System. Isso significa que o processo está altamente integrado no sistema operacional e provavelmente está incorporado no Windows.

Configurando Portas de Compatibilidade do WinRM

O WinRM possui uma funcionalidade chamada portas de compatibilidade. As portas de compatibilidade existem para serem compatíveis com alguns sistemas legados que funcionam apenas nas portas 80 para HTTP e 443 para HTTPS. Se você precisa alterar o WinRm para ouvir nessas portas, habilite os ouvintes de compatibilidade.

Depois de verificar que não há mais nada em execução nas portas 80 e 443, defina os ouvintes do WSMan para usar as portas de compatibilidade (80 para HTTP e 443 para HTTPS).

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

Configurando o WinRM para Ouvir em Qualquer Porta

Se, por algum motivo, você precisar configurar o WinRM para ouvir em uma porta não padrão, você também pode fazer isso. Para fazer isso:

  1. Encontre o nome do ouvinte. Você pode fazer isso enumerando todos os ouvintes do WinRM com o cmdlet Get-Item. O comando abaixo está listando todos (*) os ouvintes atualmente instalados.
Get-Item WSMan:\localhost\Listener*
Getting all existing WinRm listeners

Em seguida, usando o nome do ouvinte mostrado acima, configure cada ouvinte usando Set-Item fornecendo o caminho do ouvinte e o número da porta para alterá-lo.

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

Neste ponto, os ouvintes do WinRM estão ouvindo nas portas corretas, o Firewall do Windows provavelmente está rejeitando quaisquer conexões remotas para essas portas. Você precisa abrir essas portas. Para fazer isso, execute o seguinte comando. O New-NetFirewallRule abaixo está criando uma regra de Firewall do Windows para permitir todas as conexões TCP de entrada para uma porta personalizada.

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

Relacionado: Desativar o Firewall do Windows: Descubra as Muitas Maneiras

Se você não tiver aberto a porta apropriada do Firewall do Windows, receberá uma mensagem como esta ao tentar conectar:

Failed WinRM connection due to Windows firewall

Conectando a uma Porta Personalizada com PSRemoting

Agora que você configurou e configurou o WinRM com sucesso no servidor WinRM, você precisa testar a conexão com o cliente WinRM. Para fazer isso, requer apenas um parâmetro adicional; Port.

Usando qualquer um dos comandos PSRemoting como Invoke-Command ou Enter-PSSession, especifique o parâmetro Port e a porta configurada para fazer uma conexão com sucesso.

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

Relacionado: Invoke-Command: A Melhor Maneira de Executar Código Remoto

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