# 远程桌面改端口(含防火墙) ## 场景 3389 被扫得太厉害,安全日志里全是爆破;或者公司规范要求非标端口。 ## 前置条件 - 有控制台或 IPMI 兜底,改完连不上还能救回来 - 云主机记得同步改安全组 - 新端口没被占用:`netstat -ano | findstr :13389` ## 配置 ```powershell # 1. 改端口(十进制) $key = "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" Set-ItemProperty -Path $key -Name PortNumber -Value 13389 # 2. 防火墙放行 New-NetFirewallRule -DisplayName "RDP-13389" -Direction Inbound ` -Protocol TCP -LocalPort 13389 -Action Allow -Profile Domain,Private,Public # 3. 可选:禁用原来的 3389 规则 # 中文系统叫「远程桌面 - 用户模式(TCP-In)」,英文叫「Remote Desktop - User Mode (TCP-In)」 Disable-NetFirewallRule -DisplayName "远程桌面 - 用户模式(TCP-In)" # 4. 重启服务(会断开当前会话,能重启机器就重启) Restart-Service TermService -Force ``` ## 验证 ```powershell netstat -ano | findstr :13389 Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" PortNumber ``` 客户端连接:`mstsc /v:10.0.0.5:13389`。 ## 回滚 ```powershell Set-ItemProperty -Path $key -Name PortNumber -Value 3389 Enable-NetFirewallRule -DisplayName "远程桌面 - 用户模式(TCP-In)" Restart-Service TermService -Force ``` ## 坑 - 改完 `TermService` 会断开所有在线会话,生产上先发通知。 - 端口是**每台机器**的,不是整个域。批量改用组策略首选项推注册表。 - 云主机:Windows 防火墙改了、安全组没改,一样连不上。 - 换端口**不等于安全**,扫描器照样扫全端口。真要防爆破,上 VPN / 堡垒机 / 限制源 IP。 - 多台机器用了不同端口时,文档里写清楚,不然半年后没人记得哪台是哪个。