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.
Pré-requisitos
- PowerShell aberto como Administrador.
- A lista de IPs públicos fixos que podem acessar (nos exemplos,
203.0.113.10e a rede198.51.100.0/24). Descubra o IP de saída de cada local em um site comoifconfig.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
- Sem fechar a sessão atual, abra uma nova conexão RDP a partir de um IP autorizado.
- Se conectar, apague a tarefa de reversão:
Unregister-ScheduledTask -TaskName 'Reverter-RDP' -Confirm:$false - 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 3389deve retornarTcpTestSucceeded : 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
Administratorpara 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 comGet-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.mee 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.
