把 Windows 服务器的远程桌面直接暴露在公网,几乎等于把管理入口交给全网扫描器。默认监听 3389 的机器会持续收到口令爆破;即便口令够复杂,未打补丁的 RDP 协议栈本身也可能成为未授权远程代码执行的入口。一套靠谱的防护,至少要同时覆盖网络可达性、身份校验和本地账户策略,而不是只换一个端口就结束。

先改端口:能降噪,但不能当主防线
默认端口被全网脚本优先扫,改掉 3389 可以把大量无脑爆破挡在门外,减少日志噪音和账号锁定。但它只是“降低被撞见的概率”,并不能阻止针对性扫描,也挡不住协议层漏洞利用。端口修改应作为辅助手段,主防线仍是:不向公网裸奔、IP 白名单或 VPN、网络级身份验证,以及及时补丁。
修改监听端口的操作要点
官方推荐通过注册表项调整 RDP-Tcp 的监听端口。在提升权限的 PowerShell 中执行(将新端口换成你规划的数值,避免与现有服务冲突,并优先选择未被常见扫描列表盯死的高位端口):
$portValue = 53389
Set-ItemProperty -Path 'HKLM:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp' -Name 'PortNumber' -Value $portValue
也可以在 regedit 中打开同一路径,找到 PortNumber,以十进制写入新端口。修改后需要重启“Remote Desktop Services”相关服务,或直接重启服务器,新端口才会真正生效。
改端口后必须同步完成三件事,否则等于把自己锁在门外:
第一,在 Windows 防火墙(以及云厂商安全组、硬件防火墙)放行新端口的入站 TCP,并视情况收回对旧 3389 的放行。只改注册表不改防火墙,外网永远连不进来。 第二,客户端连接时写清端口,例如 mstsc 地址栏使用 服务器IP:新端口。 第三,用管理机执行连通性检查(把端口换成你的新端口),确认链路与监听一致,再断开旧会话窗口。
改端口的局限性,必须心里有数
扫描器可以对全端口做服务识别,改端口只能避开最廉价的自动化攻击。若服务器仍对 0.0.0.0/0 开放 RDP,攻击面只是从“默认门牌”变成“稍偏一点的门牌”。历史上 RDP 服务端曾出现无需交互、甚至无需成功登录的高危远程代码执行问题;公开资料中就有针对 RDP 服务端、CVSS 评分极高的未授权 RCE,补丁与网络隔离的优先级远高于“换个好听的端口号”。因此:互联网侧应默认拒绝直连 RDP,改端口只作为纵深里的一层减噪措施。
防火墙白名单:把 3389 从“谁都能敲”变成“只认名单”
真正能显著降低暴力破解成功率的,是网络层只允许可信来源访问 RDP 端口。常见可信来源包括:公司出口固定公网 IP、运维跳板机、SSL VPN / IPsec VPN 下发的客户端地址段。逻辑很简单:先“默认拒绝 RDP 入站”,再“精确允许白名单”,必要时再配合“仅配置文件生效范围”(域/专用/公用)。
配置前先想清楚规则顺序与作用域
Windows 防火墙按规则匹配,允许多条“允许”与“阻止”并存。对 RDP 加固,建议采用下面的策略语义,而不是只点开“远程桌面”预置规则就完事:
- 明确监听端口:若已改端口,所有规则都针对新端口;若仍用 3389,就针对 3389。不要假设预置规则会自动跟着注册表走。
- 收紧预置远程桌面规则:系统自带的“远程桌面”入站规则往往默认允许更大范围。应编辑其作用域,或禁用过宽规则后自建更严的规则。
- 新建“允许”规则:协议 TCP、本地端口为 RDP 端口、远程地址为白名单 IP 或 VPN 网段、操作允许、配置文件按实际网络选型(公网网卡通常对应“公用”)。
- 用“阻止”兜底(可选但推荐):对同一本地端口再做一条“阻止任何远程地址”的规则,并确保其评估结果不会误伤白名单。更稳妥的做法是:关闭/收窄所有宽泛允许,只保留白名单允许,使“没有命中允许 = 默认阻止”。
- 云上双层控制:若机器在云主机上,安全组/NSG 必须同样只放行白名单;只改访客机防火墙、安全组仍对全世界开放,攻击流量根本到不了你细调的那一层。
图形界面配置白名单的步骤逻辑
在“高级安全 Windows 防火墙”中:
- 进入“入站规则”,定位与远程桌面相关的启用规则,或选择“新建规则”。
- 规则类型选“端口”→ TCP →“特定本地端口”填入 RDP 端口。
- 操作选“允许连接”。
- 配置文件按网卡场景勾选;面向公网的网卡务必认真核对,避免在“公用”网络上留下过宽允许。
- 关键一步的名称写清楚,例如“RDP-Allow-VPN-and-Office”。
- 创建后打开规则属性 →“作用域”→“远程 IP 地址”→“下列 IP 地址”,逐条加入:
- 办公出口公网 IP(单个或少量固定地址);
- VPN 地址池(例如整段隧道网段,而不是临时拨号后的某一个动态主机地址,除非你能保证该地址稳定);
- 跳板机地址。
- 确认没有另一条“远程地址为任何”的允许规则仍在生效;有则禁用或同样改成白名单。
- 在仍保持控制台或带外管理通道的前提下,用白名单内主机连接测试,再用白名单外主机验证应被拒绝。
用 PowerShell 表达同一逻辑(便于复现与审计)
下面示例演示“允许指定远程地址访问某端口”的规则创建思路。请按环境替换端口与 IP,并在有控制台回退手段时操作:
New-NetFirewallRule -DisplayName "RDP-Allow-Whitelist" `
-Direction Inbound -Action Allow -Protocol TCP -LocalPort 53389 `
-RemoteAddress 203.0.113.10,198.51.100.0/24 `
-Profile Any
若需明确阻止非名单流量,应先保证不存在“Any 远程地址”的宽泛允许;必要时对预置远程桌面规则执行禁用或修改其 -RemoteAddress。规则建好后,用 Get-NetFirewallRule 与 Get-NetFirewallAddressFilter 核对远程地址过滤是否真的挂上,不要只看显示名称。
VPN 场景下的正确白名单对象
若要求“必须先连 VPN 再 RDP”,防火墙远程地址应写 VPN 分配给客户端的内网段 或 VPN 网关侧可达的固定地址,而不是员工家庭宽带的公网 IP。同时:
- 服务器 RDP 监听最好只绑在内网/VPN 可达接口,避免多网卡时误在公网接口暴露;
- 安全组同样只对 VPN 网关或混合云专线开放;
- 在 VPN 未连通时,公网直接打 RDP 端口应表现为超时或明确拒绝,而不是偶尔能通。
测试建议:白名单内 Test-NetConnection -ComputerName <服务器> -Port <RDP端口> 应显示端口开放;白名单外同一命令应失败。不要在只剩一条远程会话、且未验证新规则前,关掉所有旧允许规则。

禁用空密码远程登录:本地策略与组策略怎么选
网络层收紧之后,还要防止“账户存在但口令为空”这类低级且致命的口子。Windows 提供了安全选项:“账户:使用空密码的本地账户只允许进行控制台登录”。启用后,空密码本地账户不能再通过网络登录(含 RDP),只能在物理/控制台登录,从而把空密码账户的风险限制在能接触控制台的人。
单机或工作组:用本地安全策略
适用于:单台服务器、工作组机器、尚未加入域的跳板机。
- 运行
secpol.msc打开“本地安全策略”。 - 进入“本地策略”→“安全选项”。
- 找到“账户:使用空密码的本地账户只允许进行控制台登录”。
- 设置为“已启用”。
- 同时检查:不存在业务必需的空密码本地账户;管理员账户有强口令;Guest 等不用的账户保持禁用。
本地安全策略只影响本机。重装系统或未纳入配置管理时容易回漂,适合台数很少、且你明确接受“每台手工维护”的场景。
域环境:用组策略统一下发
适用于:已加入 Active Directory 的服务器与工作站,需要统一基线、可审计、可回滚。
- 在域控或管理站打开“组策略管理”,创建或编辑面向服务器 OU 的 GPO。
- 路径:
计算机配置→策略→Windows 设置→安全设置→本地策略→安全选项。 - 同样启用“账户:使用空密码的本地账户只允许进行控制台登录”。
- 将该 GPO 链接到存放成员服务器的 OU,并按需使用安全过滤,避免误作用到不该约束的对象。
- 服务器上执行
gpupdate /force,再用gpresult /h确认策略已生效且来源 GPO 正确。
本地策略与组策略的分工(不要混用思路)
| 维度 | 本地安全策略 (secpol.msc) | 组策略 (GPO) |
|---|---|---|
| 作用范围 | 仅本机 | OU/域内计算机集合 |
| 适用场景 | 工作组、单机应急、样机 | 域成员服务器批量基线 |
| 冲突时 | 域成员上,GPO 通常覆盖本地同名安全选项 | 以生效的 GPO 与链接顺序为准 |
| 运维建议 | 改完做文档或镜像固化 | 纳入变更与合规检查,定期 gpresult 抽查 |
域成员服务器上如果只改本地策略,后续 GPO 刷新可能把它盖掉,也会造成“我明明改过却又恢复”的排查陷阱。域环境应把空密码限制写进 GPO;本地策略更适合工作组或临时止血。无论哪种方式,都只是账户策略的一环:仍应禁止共用管理员账号、减少本地管理员数量,并保证真实使用的账户都有强口令与可控的锁定策略。
把网络层到系统层串成一套体系
可以按落地顺序组装,而不是东一榔头西一棒子:
网络层(最先做) 公网安全组默认拒绝 RDP;仅允许 VPN 网段、办公固定 IP 或跳板机。能做到“RDP 根本不出现在公网端口扫描结果里”,爆破和自动化利用会少掉大半。有条件时优先“先 VPN/零信任再进内网 RDP”,而不是把 RDP 当公网业务端口。
主机防火墙层(与安全组叠加) 在操作系统内再做一次远程地址白名单,防止安全组误放开、多网卡绕行或同 VNet 横向移动时被随意连接。规则语义保持“白名单允许 + 无宽泛允许”。
服务与端口层(辅助) 修改默认监听端口并同步防火墙/安全组;客户端改用新端口。接受其局限性,不把它写成核心控制措施。
身份与会话层(系统加固) 启用网络级身份验证(NLA),让认证尽量发生在完整桌面会话建立之前;限制允许通过远程桌面登录的本地/域组;禁用空密码网络登录;控制管理员账户暴露面。NLA 与账户策略不能替代补丁,但能提高攻击成本。
补丁与持续验证(不可缺) RDP 作为长期被重点关照的远程管理面,协议栈高危漏洞出现时,暴露面越大,窗口期越危险。应把累计更新纳入常规变更,并在维护窗口验证 RDP 与依赖角色是否正常。配置变更后做正反两次测试:名单内可连、名单外不可连;同时关注安全日志中的登录失败来源,若仍出现大量陌生 IP,说明白名单或上层安全组仍有漏洞。
操作时容易踩的坑
改端口或改防火墙时,至少保留一种带外手段(云控制台截图、iLO/iDRAC、串口控制台、现场)。先加白名单允许,再删宽泛允许,顺序反了容易直接失联。 白名单 IP 若是家用宽带,次日地址一变就会全员无法运维,这类场景更适合 VPN 网段白名单。 测试不要只从自己当前出口测一次“能连”就结束,还要确认“不该连的真的连不上”。 策略写在本地还是域,取决于机器是否域管理;域服务器以 GPO 为准,并定期核对有效策略。
可直接照着执行的最小加固清单
若你要从一台已对公网开放 3389 的 Windows 服务器收口,可按下列最小闭环推进:先在安全组把来源收到 VPN 或办公 IP,再在系统防火墙写同一套远程地址允许并去掉 Any,视需要改监听端口且三段(注册表、主机防火墙、安全组)一起改,启用空密码仅控制台登录(单机本地策略/域内 GPO 选对载体),打开 NLA 并限制远程桌面用户组,安装并验证安全更新,最后做名单内连通与名单外拒绝的双向测试。
暴力破解看起来喧闹,真正致命的往往是“管理面可达 + 身份薄弱 + 补丁滞后”叠在一起。端口修改降低噪声,防火墙与安全组白名单砍掉大多数网络来源,组策略/本地策略堵住空密码网络登录,再辅以 NLA 与持续更新——这样才是从网络层到系统层可运维、可复查的 RDP 防护体系,而不是堆一堆互不衔接的“安全建议”。

山东省烟台市 1F
改端口真不能当护身符
甘肃省 2F
白名单这步太关键了
广东省深圳市 3F
最怕改完防火墙把自己锁外面
上海市 4F
云安全组也要同步,很多人会漏
山东省烟台市 5F
家宽做白名单确实容易翻车
重庆市 B1
@ Opal Echo IP 一变全员失联,还是 VPN 网段靠谱
重庆市 6F
先连 VPN 再 RDP 会安心很多
甘肃省 B1
@ Veilwhisper 公网扫描基本看不到 RDP 端口,确实省心
广东省深圳市 7F
名单外测试经常被忽略
重庆市 B1
@ 魔帝降临 不测拒绝总感觉没真正收口
上海市嘉定区 8F
NLA 和补丁也不能省
广东省深圳市 B1
@ 紫竹影 补丁窗口一拖,暴露面大的真容易出事
上海市 9F
域环境还是走 GPO 稳一点
甘肃省 10F
这种清单适合照着排查一遍
山东省烟台市 B1
@ 寂寂无声 我下次变更就按这个顺序查
重庆市 11F
空密码远程登录这口子很多人没查过
山东省烟台市 12F
域服务器只改本地策略会被 GPO 盖掉
广东省深圳市 B1
@ Nebulashimmer 域内还是得看 gpresult 生效结果,不然改完白改
上海市 13F
最怕改完端口自己先连不上了
宁夏银川市 B1
@ 松涛道人 确实容易把自己关门外!所以改之前一定要先确认防火墙规则已放行新端口,或者保留一个旧端口通道做备用。
上海市青浦区 14F
先加允许再收紧,顺序错了容易失联
重庆市 15F
多网卡时最容易漏那个公网接口
湖北省武汉市武昌区 16F
家用宽带 IP 老变,还是得靠 VPN 白名单稳当
浙江省 B1
@ 风之使者 确实,动态 IP 简直是白名单的噩梦,VPN 才是真救星。
重庆市 17F
改端口后预置规则不跟着变,这坑没提
重庆市 18F
保留云控制台太重要,不然没后悔药
上海市嘉定区 19F
如果日志还出现一堆陌生 IP,白名单肯定没生效
广东省广州市 20F
看完想起手头那台只改端口的服务器,心里一凉
韩国 21F
域里只改本地策略等于白改,GPO一刷新就打回原形
马来西亚 B1
@ 烬落风吟 哈哈,踩过坑才懂,本地改完Group Policy一推,瞬间回档
上海市南汇区 22F
改完注册表不重启服务,连不上还以为是端口没放行
韩国 23F
白名单、NLA、补丁,三件套缺一不可。
重庆市 24F
规则名写清楚一点,后面排障能省很多时间
上海市普陀区 25F
零信任听着好,小团队落地得慢慢来