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

WinRM e PowerShell Remoting são recursos cruciais 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 das portas em que ele opera) é o ouvinte do WinRM.

O ouvinte do WinRM é, essencialmente, um servidor web. Ele se comunica via HTTP e HTTPS e, nos dias anteriores ao Windows 7, costumava utilizar por padrão as mesmas portas 80 e 443 que a maioria dos servidores web utiliza.

O ouvinte opera como um serviço em seu computador, aguardando que conexões sejam 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, 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 por questões de compatibilidade e facilidade de uso, é possível alterá-las. Isso pode ser útil em casos nos quais há conflito com as portas padrão ou restrições de firewall bloqueando o uso delas.

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

Failed WinRM connection due to wrong port

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

Para alterar as portas do WinRm, primeiro você precisará descobrir se já tem 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 com Windows é usar o netstat ferramenta. O Netstat verifica todas as portas ativas em 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 na 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 semelhante ao cmdlet Get-Process no PowerShell.

Running Get-Process to find process name

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

Configurando Portas de Compatibilidade do WinRM

O WinRM possui uma função 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ê precisar alterar o WinRM para escutar nessas portas, habilite os ouvintes de compatibilidade.

Uma vez que você souber que não há mais nada sendo executado 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 Escutar em Qualquer Porta

Se, por algum motivo, você precisar configurar o WinRM para escutar 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 no 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 Formas

Se você não tivesse aberto a porta apropriada no Firewall do Windows, receberia uma mensagem como esta ao tentar se conectar:

Failed WinRM connection due to Windows firewall

Conectando a uma Porta Personalizada com PSRemoting

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

Usando qualquer um dos comandos PSRemoting como Invoke-Command ou Enter-PSSession, especifique o parâmetro Porta 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/