Habilitar o PSRemoting: Técnicas Locais e Remotas

Embora no Windows, o PSRemoting venha habilitado por padrão, ele não está habilitado o tempo todo. Se você precisa testar se o PSRemoting está habilitado ou habilitar o PSRemoting no Windows, este tutorial é para você.

Este tutorial irá guiá-lo por várias maneiras diferentes de habilitar o PSRemoting em computadores locais e remotos executando o Windows.

Vamos começar!

Habilitar o PSRemoting Faz Muitas Coisas

Se você está aprendendo sobre o PowerShell Remoting pela primeira vez, pode pensar que habilitar é apenas um comando único. Talvez você tenha visto algumas referências ao cmdlet PowerShell Enable-PSRemoting e pensou que, ao executá-lo, ele apenas altera um bit em algum lugar. Você estaria errado.

Quando se trata de habilitar o PSRemoting, muitas tarefas devem acontecer nos bastidores para que isso aconteça. Como o PowerShell Remoting depende de outros sistemas para funcionar corretamente, ele possui algumas dependências.

Por exemplo, no Windows, quando você executa o cmdlet Enable-PSRemoting sem parâmetros, ele realiza todas as seguintes tarefas:

  1. O serviço WinRM é iniciado e configurado para inicialização automática.
  2. Cria um ouvinte nas portas padrão do WinRM, 5985 para tráfego HTTP.
  3. Ativa as exceções de firewall para WS-Management.
  4. Registra as configurações da sessão do PowerShell com o WS-Management.
  5. Ativa as configurações da sessão do PowerShell.
  6. Define as sessões remotas do PowerShell para permitir acesso remoto.
  7. Reinicia o servidor WinRM para aplicar todas as alterações.

Você não está feliz por não ter que fazer tudo isso manualmente? Por que mencionar isso se o cmdlet Enable-PSRemoting faz tudo? Porque haverá momentos em que algo não funcionará e será necessário diagnosticar o que está acontecendo.

Configurações padrão de PSRemoting no Windows

Desde o nascimento do PSRemoting no Windows, ele vem habilitado por padrão, mas não de forma universal e também não para todas as versões do Windows OS.

Em todos os sistemas operacionais cliente Windows, o PSRemoting está sempre desativado.

No Windows Server, o PSRemoting é habilitado às vezes, mas não o tempo todo, dependendo do perfil de rede sob o qual o Windows está sendo executado. Abaixo, você encontrará uma tabela útil para ajudá-lo a determinar se o PSRemoting está habilitado ou não em seu sistema operacional Windows.

Operating System Network Profile PSRemoting
Windows Server 2008 R2 Domain/Private Disabled
Windows Server 2008 R2 Public Disabled
Windows Server 2012 & Newer Domain/Private Enabled
Windows Server 2012 & Newer Public Enabled within the same subnet

O Linux, por outro lado, é fácil. PSRemoting nem é uma coisa! Nem mesmo o PowerShell está instalado por padrão. Se você quiser executar o PSRemoting no Linux, precisará configurá-lo.

Chega de conversa, vamos mostrar como realmente começar a usar o PSRemoting!

Pré-requisitos

Se você pretende seguir os exemplos desta seção, certifique-se de ter o seguinte:

  • A Windows Server 2008 R2 or later machine
  • A local or Active Directory domain user in the local administrators group

Habilitando o PSRemoting localmente

Uma das maneiras mais fáceis de habilitar o PSRemoting é usar o comando embutido Enable-PSRemoting. Este comando, como você aprendeu anteriormente, é um atalho para configurar muitos serviços diferentes para acomodar o Remoting do PowerShell.

Usando o Cmdlet Enable-PSRemoting

Ao executar este comando sem parâmetros, ele tomará diferentes ações dependendo do sistema operacional que você está utilizando. Em qualquer sistema operacional Windows atual, os mesmos passos básicos acontecem. O PSRemoting é habilitado, o ouvinte HTTP do WinRM é criado e as regras do firewall são habilitadas. A diferença chave está na forma como as redes públicas são tratadas.

Em um sistema operacional de servidor, como o Windows Server 2019, a regra do firewall para redes públicas permite conexões remotas de outros dispositivos na mesma rede. Em um sistema operacional de cliente, como o Windows 10, você receberá um erro indicando que está em uma rede pública.

Se você não tem certeza sobre o perfil de rede que o Windows está utilizando, execute o seguinte comando:

Get-NetConnectionProfile

Você deve utilizar o PSRemoting apenas em uma rede confiável, já que essencialmente está executando um servidor web para ouvir conexões remotas.

Get-NetConnectionProfile

Se você estiver bem em executar o PSRemoting em um perfil de rede diferente de Privado ou Domínio, você pode pular a verificação do perfil de rede usando o parâmetro SkipNetworkProfileCheck. Usar este parâmetro abrirá as portas do WinRM no firewall do Windows.

Enable-PSRemoting -SkipNetworkProfileCheck

Usar o parâmetro SkipNetworkProfileCheck abrirá o firewall do Windows para o PowerShell Remoting no seu perfil de rede atual, mas só permitirá conexões remotas de máquinas na mesma sub-rede.

Dois parâmetros que podem ser usados com o Enable-PSRemoting trabalham juntos. Eles são os parâmetros -Force e -Confirm. Você pode usar -Force para pular todas as solicitações que normalmente o comando Enable-PSRemoting lhe daria. Você também pode usar -Confirm:$false para obter o mesmo resultado.

Usando o comando winrm quickconfig

O comando winrm quickconfig costumava ser uma maneira popular de configurar o PSRemoting antes de o cmdlet Enable-PSRemoting ser criado, mas ainda tem seu lugar. Se você executar apenas winrm quickconfig, ele habilitará o serviço WinRM, criará um ouvinte HTTP e habilitará as regras do firewall. Estas são todas coisas que já são feitas pelo Enable-PSRemoting, mas isso não configura a máquina para ser capaz de lidar com sessões de PowerShell remotas.

Onde os comandos winrm são úteis é na configuração de ouvintes HTTPS. Embora você possa fazer isso manualmente, se tiver um certificado apropriado para o ouvinte HTTPS, você pode simplesmente executar winrm quickconfig -transport:https e o ouvinte HTTPS e as regras do firewall HTTPS serão configurados.

Habilitando o PSRemoting remotamente

Até agora, você aprendeu que pode habilitar o PSRemoting executando um comando em um computador local. Isso nos leva a um cenário de ovo e galinha. O PSremoting permite que você execute comandos em computadores remotos, mas como você executa um comando remotamente sem PSRemoting?

Três maneiras; o utilitário PSexec, WMI e Política de Grupo.

Usando o PsExec

O PsExec é uma ferramenta útil que permite executar comandos remotos, assim como o PSRemoting faz. No entanto, o PsExec utiliza um método de comunicação diferente, o que você pode aproveitar!

Com o PsExec, você pode executar o Enable-PSRemoting a partir do seu computador local usando o seguinte comando. O comando abaixo está chamando o PsExec e se conectando ao servidor ServerB. Em seguida, ele inicia um processo do PowerShell e executa o comando Enable-PSRemoting com o switch -Force para pular as solicitações usuais.

.\psexec.exe \ServerB -h -s powershell.exe Enable-PSRemoting -Force

Essa opção é boa para casos isolados em que você precisa habilitar o PSRemoting em um sistema remoto, mas não é ideal para habilitar o PSRemoting em muitos sistemas e exige que você baixe o PsExec.

Usando o WMI

Às vezes, o PsExec não funciona. Muitos softwares de segurança bloqueiam o PsExec, mas não se preocupe, você também tem o WMI!

Usando o PowerShell e o cmdlet Invoke-CimMethod. Com o cmdlet Invoke-CimMethod, você pode instruir o PowerShell a se conectar ao computador remoto via DCOM e invocar métodos.

Felizmente para você, o WMI possui classes Win32_Process que permitem invocar processos. Ao invocar um método Create contra o Win32_Process, o Invoke-CimMethod se conecta ao computador remoto, invocando o PowerShell e executando o Enable-PSRemoting conforme mostrado abaixo.

O exemplo abaixo está criando uma tabela de hash para a conexão de sessão onde o nome do servidor, credenciais e protocolo são especificados. Em seguida, na tabela de hash seguinte, os parâmetros para o Invoke-CimMethod estão sendo definidos. Uma vez que estes são executados, uma sessão CIM está sendo criada sobre o protocolo DCOM que inicia um processo do PowerShell que, por sua vez, executa o comando Enable-PSRemoting.

$SessionArgs = @{
     ComputerName  = 'ServerB'
     Credential    = Get-Credential
     SessionOption = New-CimSessionOption -Protocol Dcom
 }
 $MethodArgs = @{
     ClassName     = 'Win32_Process'
     MethodName    = 'Create'
     CimSession    = New-CimSession @SessionArgs
     Arguments     = @{
         CommandLine = "powershell Start-Process powershell -ArgumentList 'Enable-PSRemoting -Force'"
     }
 }
 Invoke-CimMethod @MethodArgs

No caso de você estar usando isso em um ambiente de domínio, e o usuário que está executando os comandos tem direitos administrativos no servidor de destino, a linha Credential = Get-Credential pode ser excluída.

Usando a Política de Grupo

A última, e provavelmente a melhor opção para habilitar o WinRM em uma ampla gama de computadores é através da política de grupo. Ao usar a Política de Grupo, você pode criar um único Objeto de Política de Grupo e aplicar essa política em milhares de computadores de uma só vez.

Todos os computadores devem estar em um domínio do Active Directory para usar a Política de Grupo.

Para usar a Política de Grupo para habilitar o WinRM em muitos computadores de uma só vez, você vai precisar definir três itens de configuração diferentes:

  1. Habilitar o serviço WinRM.
  2. Abrir a porta do Firewall do Windows para WinRm.
  3. Criar o ouvinte do WinRM e permitir conexões com ele.

Primeiro, faça RDP para um controlador de domínio ou, melhor ainda, instale o pacote de ferramentas do Administrador do Servidor Remoto (RSAT) em uma estação de trabalho associada ao domínio. Agora, você deve ter o Console de Gerenciamento de Diretiva de Grupo (GPMC) disponível.

Habilitando o Serviço WinRM

Para habilitar o serviço WinRM em todos os computadores de destino:

  1. Abra o GPMC e crie uma GPO. Enquanto estiver na nova GPO, navegue até Configuração do Computador —> Configurações do Windows —> Configurações de Segurança —> Serviços do Sistema
  2. Selecione Windows Remote Management (WS-Management).
  3. Na janela de configuração, marque a caixa para Definir esta configuração de política.
  4. Selecione o botão de opção Automático para configurar o serviço WinRM para iniciar automaticamente na inicialização.
  5. Clique em OK para confirmar a configuração.

Abrindo a Porta do Firewall do Windows

Em seguida, você precisa abrir a porta WinRM em todos os computadores de destino. Enquanto ainda estiver editando a GPO criada acima:

  1. Navegue até Configuração do Computador —> Configurações do Windows —> Configurações de Segurança —> Firewall do Windows Defender com Segurança Avançada.

2. Clique em Nova Regra de Entrada para criar uma nova regra de entrada.

3. Na primeira página, selecione Predefinido e escolha Windows Remote Management como mostrado abaixo.

Windows Remote Management

4. Na próxima página, marque a caixa para a regra de Rede Doméstica/Privada a menos que você saiba que redes públicas são usadas em seus ambientes e você precisará permitir conexões remotas a partir delas.

Domain/Private network rule

5. Na próxima página, deixe o padrão de Permitir a conexão e clique em Concluir para criar a regra.

Crie o Listener WinRM e a Lista de Filtros

O último item de configuração a ser adicionado à sua GPO é a criação do ouvinte WinRM e permitir conexões a esse ouvinte WinRM. Essa configuração cria o ouvinte WinRM para HTTP e permite conexões a ele a partir dos IPs ou intervalos de IP especificados.

Ainda enquanto edita a GPO do WinRM:

  1. Navegue até Configuração do Computador —> Modelos Administrativos —> Componentes do Windows —> Gerenciamento Remoto do Windows (WinRM) —> Serviço WinRM.

2. Selecione Ativado para a configuração Permitir gerenciamento remoto de serviço através do WinRM.

3. Sob a configuração Permitir gerenciamento remoto do servidor através do WinRM, forneça um asterisco (*) tanto para o Filtro IPv4 quanto para o Filtro IPv6, como mostrado abaixo.

Observe que você pode especificar vários hosts separados por vírgula em cada lista de filtros se você souber antecipadamente quais hosts se conectarão a todos os computadores de destino.

Allow remote server management through WinRM

4. Clique em OK para confirmar a configuração mais recente da GPO.

Aplicando a GPO

Neste momento, a GPO deve estar criada e pronta para ser utilizada. A última tarefa que você precisa fazer agora é aplicar esta GPO a todos os computadores de destino nos quais você deseja habilitar o WinRM. Neste tutorial, você não aprenderá como atribuir uma GPO a computadores de destino.

Se você não sabe como atribuir uma GPO a um conjunto de computadores no Active Directory, você deve conferir este artigo.

Próximas etapas

Neste tutorial, você aprendeu como habilitar o PSRemoting de várias maneiras diferentes. Como habilitar o PSRemoting dependerá muito do seu ambiente e espero ter abordado o seu cenário aqui.

Agora, pegue o que você aprendeu, vá em frente e comece a usar o PSRemoting no seu ambiente!

Source:
https://adamtheautomator.com/enable-psremoting/