Como restringir o RDP por IP no Windows Server 2019, 2022 e 2025 com PowerShell, achando regras extras da porta 3389 e com reversão automática.

Para que serve

RDP (porta 3389) aberto para a internet é uma das principais portas de entrada de ransomware: robôs testam senhas o tempo todo. A forma mais simples de reduzir esse risco é deixar o Firewall do Windows aceitar a Área de Trabalho Remota somente dos IPs da sua empresa. Este artigo mostra como restringir o RDP por IP com PowerShell, em Windows Server 2019, 2022 e 2025, com uma reversão automática para o caso de você se trancar fora.

Atenção: risco de perder o acesso. Se o IP informado estiver errado, sua sessão RDP cai e não reconecta. Use a tarefa de reversão do passo 2. Se o Windows for uma VM no Proxmox, você recupera o acesso pelo console da VM (Proxmox → VM → Console). Se o Windows estiver instalado direto no servidor, use o console IPMI/iLO.

Pré-requisitos

  • PowerShell aberto como Administrador.
  • A lista de IPs públicos fixos que podem acessar (nos exemplos, 203.0.113.10 e a rede 198.51.100.0/24). Descubra o IP de saída de cada local em um site como ifconfig.me.
  • Acesso ao console da VM no Proxmox, ou ao IPMI/iLO, testado antes.

Se seus usuários acessam de IPs que mudam (home office com IP dinâmico), restringir por IP não resolve sozinho. Nesse caso, coloque o RDP atrás de uma VPN (por exemplo, WireGuard em uma VM dedicada no Proxmox) e libere a 3389 só para a rede da VPN. Veja também o artigo «Como liberar o acesso ao Proxmox (porta 8006), SSH e RDP só pela VPN».

Como restringir o RDP por IP passo a passo

1. Conhecer as regras atuais do RDP

As regras de Área de Trabalho Remota fazem parte de um grupo que tem nome diferente em cada idioma ("Remote Desktop" / "Área de Trabalho Remota"). Para não depender do idioma, use o identificador interno do grupo, @FirewallAPI.dll,-28752:

$grupoRdp = '@FirewallAPI.dll,-28752'
Get-NetFirewallRule -Group $grupoRdp |
  Format-Table Name, DisplayName, Enabled, Direction, Action, Profile -AutoSize

Você verá regras como RemoteDesktop-UserMode-In-TCP e RemoteDesktop-UserMode-In-UDP.

Agora procure outras regras que liberam a 3389 (criadas por instaladores ou manualmente):

Get-NetFirewallPortFilter -Protocol TCP |
  Where-Object LocalPort -eq 3389 |
  Get-NetFirewallRule |
  Where-Object { $_.Enabled -eq 'True' -and $_.Direction -eq 'Inbound' -and $_.Action -eq 'Allow' } |
  Format-Table Name, DisplayName, Profile -AutoSize

Isso é importante: no Firewall do Windows, basta uma regra de permissão para liberar o tráfego. Se existir outra regra aceitando a 3389 de qualquer origem, restringir o grupo oficial não terá efeito.

2. Agendar a reversão automática

A tarefa abaixo devolve o RDP para "qualquer IP" daqui a 10 minutos. Se tudo der certo, você a apaga no passo 4:

$cmd    = "Set-NetFirewallRule -Group '@FirewallAPI.dll,-28752' -RemoteAddress Any"
$acao   = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument "-NoProfile -Command `"$cmd`""
$quando = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(10)
Register-ScheduledTask -TaskName 'Reverter-RDP' -Action $acao -Trigger $quando -User 'SYSTEM' -RunLevel Highest

3. Restringir o RDP aos seus IPs

Set-NetFirewallRule -Group '@FirewallAPI.dll,-28752' `
  -RemoteAddress 203.0.113.10, 198.51.100.0/24

O parâmetro -RemoteAddress aceita IPs isolados, redes em CIDR, faixas (203.0.113.10-203.0.113.20) e endereços IPv6. A alteração vale imediatamente para todas as regras do grupo (TCP e UDP).

Se no passo 1 você encontrou outras regras liberando a 3389, desative-as (ou aplique o mesmo -RemoteAddress):

Disable-NetFirewallRule -Name 'NOME-DA-REGRA'

4. Testar e cancelar a reversão

  1. Sem fechar a sessão atual, abra uma nova conexão RDP a partir de um IP autorizado.
  2. Se conectar, apague a tarefa de reversão:
    Unregister-ScheduledTask -TaskName 'Reverter-RDP' -Confirm:$false
  3. Se não conectar, aguarde os 10 minutos. A regra volta a aceitar qualquer IP e você entra para corrigir.

5. Garantir que o firewall está ligado em todos os perfis

Get-NetFirewallProfile | Format-Table Name, Enabled, DefaultInboundAction
Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True

Um servidor com o perfil Público desligado aceita tudo, independentemente das regras.

Como saber se funcionou

  • Veja os endereços aplicados:
    Get-NetFirewallRule -Group '@FirewallAPI.dll,-28752' |
      Get-NetFirewallAddressFilter |
      Format-Table InstanceID, RemoteAddress -AutoSize
  • De um IP não autorizado (por exemplo, o 4G do celular), teste: Test-NetConnection IP-DO-SERVIDOR -Port 3389 deve retornar TcpTestSucceeded : False.
  • Do IP autorizado, o mesmo teste deve retornar True.

Recomendações extras

  • Mantenha a NLA (Autenticação no Nível de Rede) ativa. Ela exige credenciais antes de abrir a sessão gráfica.
  • Trocar a porta do RDP não é proteção. Scanners encontram a nova porta em minutos. Restrição por IP ou VPN, sim.
  • Configure bloqueio de conta após tentativas erradas (Política de Segurança Local → Políticas de Conta → Política de Bloqueio de Conta) e não use o usuário Administrator para o dia a dia.
  • Camada extra no Proxmox: se o Windows é uma VM, você pode repetir a restrição no firewall da VM no Proxmox (veja também o artigo «Firewall do Proxmox VE: como ativar sem perder o acesso»). Assim, mesmo que alguém altere o firewall do Windows, o filtro externo continua valendo.

Problemas comuns

  • Restringi, mas o RDP continua aberto para todos. Existe outra regra de permissão para a 3389 ou para o programa svchost.exe/TermService. Repita a busca do passo 1 e confira também regras por programa com Get-NetFirewallRule | Where-Object DisplayName -like '*Remote*'.
  • Usuário de um IP autorizado não consegue entrar. O IP de saída dele mudou ou está saindo por IPv6. Confira em ifconfig.me e inclua o novo endereço. Se não for o firewall, veja também o artigo «RDP não conecta: roteiro de diagnóstico para Windows Server».
  • Erro "Acesso negado" ao rodar os comandos. O PowerShell não foi aberto como Administrador.
  • Perdi o acesso e não agendei a reversão. Entre pelo console da VM no Proxmox (ou IPMI/iLO, se for instalação direta), abra o PowerShell como Administrador e rode Set-NetFirewallRule -Group '@FirewallAPI.dll,-28752' -RemoteAddress Any.

Perguntas frequentes

Como liberar o RDP só para um IP no Windows Server?

Rode Set-NetFirewallRule -Group '@FirewallAPI.dll,-28752' -RemoteAddress SEU_IP no PowerShell como Administrador. A mudança vale para as regras TCP e UDP do RDP.

Restringi o IP, mas o RDP continua aberto para todos. Por quê?

Existe outra regra de permissão para a porta 3389 ou para o serviço do RDP. No Firewall do Windows basta uma regra de permissão para liberar o tráfego; desative ou restrinja as outras.

Trocar a porta 3389 protege o RDP?

Não de verdade. Scanners encontram a nova porta em minutos. O que protege é restringir por IP ou colocar o RDP atrás de uma VPN.

E se meus usuários têm IP dinâmico?

Restringir por IP não resolve sozinho. Coloque o RDP atrás de uma VPN e libere a 3389 apenas para a rede da VPN.

Perdi o acesso RDP depois de restringir. Como voltar?

Espere a tarefa de reversão ou entre pelo console da VM no Proxmox (ou pelo IPMI/iLO) e rode o Set-NetFirewallRule com -RemoteAddress Any.

Precisa de ajuda?

Se ficou alguma dúvida, abra um ticket ou fale com o suporte pelo WhatsApp.

Esta resposta lhe foi útil? 0 Usuários acharam útil (0 Votos)

Leia também