Home PowerShellHardening com Privilégios Mínimos: Restringindo o PowerShell Remoting de Forma Segura

Hardening com Privilégios Mínimos: Restringindo o PowerShell Remoting de Forma Segura

por Cropped josimarhedler.pngJosimar Hedler
763 visualizações 10 minutos leitura

O PowerShell Remoting é uma ferramenta poderosa para administração e automação no Windows, permitindo executar comandos e gerenciar máquinas remotamente de forma rápida e eficiente. Porém, esse mesmo poder representa um risco significativo quando exposto a contas que não deveriam utilizá-lo.

Por padrão, apenas administradores e membros do grupo Remote Management Users conseguem executar comandos via PowerShell Remoting. No entanto, existem cenários em que contas comuns acabam precisando desse tipo de acesso para tarefas específicas. Embora isso não represente um problema imediato, qualquer permissão remota mal configurada pode virar uma porta aberta para abuso especialmente se a identidade do usuário for comprometida.

E é exatamente aí que mora o risco, quando uma conta sem privilégios administrativos consegue executar comandos remotamente, ela passa a ter um vetor adicional para movimentação lateral, coleta de informações ou execução de scripts que não deveriam estar ao seu alcance.

Por isso, é fundamental controlar de forma rigorosa quem realmente pode usar o PowerShell Remoto e, sempre que possível, limitar esse recurso apenas a identidades confiáveis e com necessidade real de acesso. Neste artigo, vou mostrar o que é o PowerShell Remoting, por que essa restrição é tão importante dentro de uma estratégia de Identidade e Acessos, e como configurar tudo passo a passo para reforçar a segurança do seu ambiente.

O que é o PowerShell Remoting e por que ele é usado?

O PowerShell Remoting permite que usuários autorizados executem comandos e scripts em computadores remotos diretamente de suas próprias máquinas. Ele utiliza o serviço Windows Remote Management (WinRM), baseado no protocolo WS-Management, garantindo comunicação segura entre dispositivos na rede.

A seguir, os principais motivos para seu uso nas organizações:

Gerenciamento centralizado

Administradores de TI podem gerenciar diversos computadores e servidores a partir de um único ponto, evitando deslocamentos ou acesso físico às máquinas.

Automação de tarefas

Facilita a automação de atividades repetitivas, como instalação de softwares, execução de scripts e aplicação de configurações. Isso aumenta a eficiência e reduz falhas humanas.

Sessões interativas

Permite iniciar sessões interativas em máquinas remotas, oferecendo ao administrador uma experiência semelhante ao acesso direto ao dispositivo.

Em resumo, o PowerShell Remoting oferece uma forma segura, escalável e eficiente de gerenciar sistemas remotamente. No entanto, devido ao seu alto poder administrativo, é fundamental restringir seu uso, habilitando-o apenas quando realmente necessário para minimizar riscos de segurança.

Por que os administradores de TI devem limitar o acesso remoto ao PowerShell para usuários que não são administradores?

Imagine conceder a um analista de suporte acesso remoto ao PowerShell para verificar servidores. Com o tempo, se essa permissão for utilizada de forma inadequada seja por ação indevida ou por uma conta comprometida um invasor pode obter acesso a sistemas críticos e executar comandos com privilégios elevados, como criar contas administrativas ou rodar scripts maliciosos.

Conceder PowerShell Remoting para quem não deve é como entregar a chave mestra da empresa: a pessoa (ou um atacante) pode se movimentar livremente, acessar dados sensíveis e causar danos significativos. Por isso, é fundamental restringir esse acesso apenas a administradores confiáveis e monitorar todas as sessões remotas, garantindo a detecção rápida de qualquer atividade suspeita.

Chegou a hora do Hands-On para aprender como restringir esses acessos.

Atenção: As implementações apresentadas em nossos artigos foram desenvolvidas com base em documentações oficiais e nas boas práticas recomendadas pela Microsoft. Entretanto, enfatizamos que qualquer implementação deve ser previamente testada em ambientes de homologação ou testes para garantir a segurança e a estabilidade do ambiente de produção

Configurando a Politica de Grupo para habilitar o acesso remoto ao PowerShell somente para Administradores.

Antes de começar, certifique-se de ter direitos de Administrador de Domínio e de que o Console de Gerenciamento de Política de Grupo (GPMC) esteja instalado.

Para começar, o WinRM precisa estar habilitado para que o PowerShell Remoting funcione em todo o domínio. Sem essa configuração, os comandos remotos falharão e os administradores poderão enfrentar erros de conexão. Para criar a política, siga os passos abaixo:

  1. No seu servidor abra Group Policy Management ou gpmc.msc Win+R
  2. Exapnada e clique no seu dominio, e cliquem em Create a new GPO in this domain… e em seguida de um nome ao a sua GPO

Feito isso, clique na Politica com botão direto do mouse e em edit

Na proxima tela vá ate, Computuer Configutation -> Policies -> Windows Components -> Windows Remote Management (WinRM) ->Win Service

Em seguida clica em WinRM Service, e depois em Allow remote server management through WinRM, em seguida em Enabled Ativado . Essa configuração permite que o Gerenciamento Remoto do Windows (WinRM) aceite conexões remotas para sessões do PowerShell.

No filtro IPv4, digite um * (um Asterisco) para permitir conexões de todos os endereços IP, ou espesifique IPs confiaveis para um acesso ainda mais restrito, e clique em OK.

Habilitar o acesso do Windows PowerShell somente para administradores.

Em seguida, vamos configurar a política para garantir que apenas administradores confiáveis possam executar comandos via PowerShell Remoto. Para isso, siga os passos abaixo.

No assistente de Group Policy Management, clique com botão direto do mouse na politica que criamos anteriormente, e selecione Edit

  1. Computer Configuration
  2. Policies
  3. Windows Settings
  4. Security Settings
  5. Restricted Groups
  6. Clique com botão direto do mouse Add Group, Domain Admins, ou caso você tenha algum outro grupo configurado pode estar adicionando.

Vamos configurar o serviço WinRM para inicar automaticamente.

Depois de permitir o acesso ao PowerShell para os administradores, é importante ajustar o WinRM para iniciar automaticamente. Assim, o serviço permanece ativo mesmo após reinicializações, garantindo que o PowerShell Remoting continue operacional para atividades de administração sem interrupções.

Atenção: Se o WinRM estiver parado ou configurado para iniciar manualmente, as conexões remotas do PowerShell podem falhar, afetando a automação e o acesso administrativo, para evitar isso, siga os passos abaixo para definir o serviço WinRM como inicialização automática.

Clique com o botão direito do mouse na política que você criou, selecione Edit e siga o caminho de navegação abaixo:

  1. Computer Configuration
  2. Preferences
  3. Control Panel Settings
  4. Services
  5. New service

Siga os pasos abaixo da configuração:
Inicialização: Automática (Início Atrasado)
Nome do serviço: WinRM
Ação de serviço: Iniciar serviço, Depois clique em OK.

Configurar regras de firewall para o serviço WinRM

Para aumentar a segurança, é recomendável configurar regras do Firewall do Windows específicas para o serviço WinRM, dessa forma, apenas perfis seguros como Domínio ou Privado poderão utilizar o PowerShell Remoto, evitando acessos vindos de redes públicas.

Vamos em Editar a politíca que criamos:

  1. Computer Configuration
  2. Policies
  3. Windows Settings
  4. Security Settings
  5. Windows Defender Firewall wiht advanced security
  6. Inbound Rules
  7. New Rule

Selecione Predefined e, na lista suspensa, escolha Windows Remote Management Clique em Next .

Desmarque a caixa de seleção Windows Remote Management (HTTP-In) para o perfil Público para impedir conexões remotas do PowerShell em redes não seguras, e em Next

Selecione Allow the connection, e em Finish 

Por fim, execute o comando abaixo nos computadores de destino para aplicar a política imediatamente: gpupdate /force.
Com essa GPO em vigor, apenas administradores poderão iniciar sessões de PowerShell Remoting, enquanto usuários sem privilégios administrativos permanecerão completamente bloqueados.

Com essa abordagem, você bloqueia a execução do PowerShell.exe e do pwsh.exe para usuários comuns, mantendo o acesso liberado apenas para administradores que precisam da ferramenta para administração e automação. A seguir, veja como aplicar a restrição completa do PowerShell para contas sem permissões elevadas.

Antes, limitamos apenas o acesso remoto ao PowerShell. Mas e se um usuário tentar rodar um script malicioso diretamente na própria máquina usando o PowerShell ele tera êxito e para aumentar a proteção do endpoint, é possível bloquear totalmente o uso do PowerShell para contas sem privilégios administrativos, assim, usuários não autorizados ficam impedidos de abrir o PowerShell ou executar comandos localmente.

O AppLocker é a opção ideal para aplicar esse tipo de bloqueio, já que permite definir com precisão quais aplicativos podem ser executados pelos usuários, utilizando critérios como editor, caminho ou hash do arquivo. As Políticas de Restrição de Software até podem cumprir esse papel, mas o AppLocker entrega muito mais flexibilidade e granularidade mesmo exigindo uma configuração um pouco mais elaborada.

Atenção: Deve-se ser feito com muita atenção para nao bloquear o PowerShell.exe dos Administradore, por isso as implementações apresentadas em nossos artigos foram desenvolvidas com base em documentações oficiais e nas boas práticas recomendadas pela Microsoft. Entretanto, enfatizamos que qualquer implementação deve ser previamente testada em ambientes de homologação ou testes para garantir a segurança e a estabilidade do ambiente de produção

Confira abaixo o passo a passo para configurar o AppLocker e impedir que usuários sem permissões administrativas executem o PowerShell.

Vá para Group Policy Managementent e crei uma nova Política, de ume sugestivo ”Block PowerShell app for non-admins e clique em edit

  1. Computer Configuration
  2. Policies
  3. Windows Settings
  4. Security Settings
  5. Application Control Policies
  6. AppLocker
  7. Executable Rules
  8. Create New Rule
AppLocker

Na tela Antes de começar, clique em Next

Em permission, ao lado de Usuário ou grupo , clique em Select , digite Domain Users, ou grupo que deseja. . Isso selecionará todos os usuários que não são administradores. Depois clique em Next

Na janela de Conditions selecione Path, e depois em Next

AppLocker

No campo Path, informe o local do PowerShell.exe ou selecione manualmente os arquivos indicados abaixo. Dessa forma, você inclui as versões de 32 e 64 bits do PowerShell na lista de aplicações bloqueadas para usuários sem permissão. No meu caso o caminho e esse listado abaixo, mas o seu pode ser diferente.

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Aqui você pode dar um Create, na janela de aviso pode dar um Yes, e esta criado nossa configuração

Isso garante que todos os usuários sem privilégios de administrador sejam impedidos de executar o PowerShell.exe ou o pwsh.exe, enquanto os administradores mantêm acesso total. Além disso, isso evita o uso indevido do PowerShell para scripts não autorizados ou ataques.

Para finalizar, abra o Prompt de Comando e execute gpupdate /force para que a política seja aplicada. Se quiser conferir se as regras do AppLocker foram carregadas corretamente, utilize o cmdlet abaixo.

Get-AppLockerPolicy -Effective -Xml 

As soluções anteriores dependiam de GPOs, que podem exigir uma configuração mais detalhada. Como opção mais simples e direta, você pode limitar o acesso remoto ao PowerShell para usuários sem permissão administrativa usando apenas alguns comandos no próprio PowerShell.

  1. Abra o PowerShell e execute-o como administrador.
  2. Após a conexão, primeiro você precisa verificar quais usuários têm acesso ao PowerShell Remoting executando o seguinte cmdlet
Get-PSSessionConfiguration | Select-Object Name, Permission 

Na saída exibida, você verá que a sessão Microsoft.PowerShell está configurada para permitir conexões do grupo BUILTIN\Remote Management Users. Isso indica que qualquer integrante desse grupo — inclusive usuários sem direitos administrativos consegue abrir uma sessão remota do PowerShell.

Power

Para impedir que esses usuários iniciem sessões remotas do PowerShell, basta executar o cmdlet Set-essionConfiguration conforme abaixo.

Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI 

Isso fará surgir uma janela de permissões exibindo todos os usuários e grupos que atualmente têm autorização para se conectar via PowerShell Remoting.

Em seguida, selecione Domain Users ou Remote Management Users e remova-os da lista. Assim, somente os administradores continuarão autorizados a usar o PowerShell Remoting. Finalize clicando em Apply e em OK para salvar as mudanças.

Power

Por fim, aplique e reinicie o serviço WinRM Restart-Service WinRM

Conclusão

Espero que este conteúdo tenha facilitado o processo de bloquear o acesso remoto ao PowerShell para usuários sem direitos administrativos e contribuído para tornar seu ambiente Active Directory mais seguro. Adotar boas práticas para acesso remoto reforça ainda mais a proteção de toda a sua infraestrutura. Se tiver alguma dúvida ou quiser compartilhar sua experiência, deixe seu comentário. Em breve, traremos mais materiais sobre segurança cibernética. Até a próxima e mantenha seu ambiente protegido!

Links de referência para aprimorar sua leitura: Application Control
Links de referência para aprimorar sua leitura: AppLocker
Links de referência para aprimorar sua leitura: Criar e gerenciar Group Policy

Comente aqui se você já implementou alguma dessas políticas no seu ambiente e quais desafios enfrentou. Compartilhe sua experiência! Aproveite também para participar da nossa comunidade no WahtsApp. Clique aqui para acessar nosso grupos e faça parte dessa Jornada.

Você também pode gostar

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

error: Este conteúdo está protegido.

Olá! Este site utiliza cookies para melhorar sua experiência de navegação, personalizar conteúdo e anúncios, fornecer funcionalidades de redes sociais e analisar nosso tráfego. Ao continuar a usar nosso site, você concorda com o uso de cookies. Aceitar