3389 端口暴露在公网:接下来会发生什么
记录 RDP 一旦可从公网访问,Windows 服务器会遭遇什么;如何确认您的服务器是否暴露,以及该怎么处理。
「暴露」在实践中意味着什么
一台 TCP 3389 可被公网任意地址访问的服务器并不隐蔽,它已经被编入名录。扫描服务持续索引整个 IPv4 空间——Shodan 和 Censys 都把结果做成可检索的形式——而任一时刻在 3389 上应答的 Windows 机器数量以百万计。
这意味着暴露不是一个概率问题,而是一张时间表。您的地址不需要被谁特意发现;它早已在名单上,而这份名单被所有做凭据攻击的人购买、传播并反复重扫。
实际后果是:刚刚暴露的服务器没有任何安静期。不存在这样一个窗口——可以先保持默认配置,下周再来做加固。
第一周,按小时计
这个模式稳定到可以预测。在一台开放 RDP 且没有防护的全新 Windows Server 上,可以预期以下数量级:
- 第一小时——来自扫描器的第一次连接尝试。常常在几分钟之内,因为大规模扫描器是持续运行的,而不是按计划任务跑。
- 第一天——几十到数百次登录失败。账户名来自一份标准清单:Administrator、admin、user、test、sql、backup、scanner。
- 第一周——每天数千次,昼夜稳定。此时已经有多个不同的僵尸网络盯上您,它们彼此不协调,所以数量是叠加的。
- 第一个月——常常达到数万。安全日志开始快速轮转,旧事件在任何人读到之前就已消失。
- 此后——速率趋于稳定。它不会衰减:不存在任何机制能让机器人得出「这台不值得试」的结论。
他们究竟在尝试什么
两种不同的手法产生相同的流量特征,而区分它们很重要,因为防御方式不同。
经典暴力破解死磕一个账户——通常是 Administrator——并跑完一份密码表。它很吵,会触发锁定策略,而且对任何不在表里的密码都无效。
密码喷洒(password spraying)反过来:一个常见密码,对大量账户名各试一次,然后暂停,再换下一个密码。它的设计就是要待在锁定阈值以下,而它才是真正能成功的手法——在账户足够多的组织里,总有人在用当季的那个密码。
两者都出现在同一条 4625 流里,也都被同一件事阻止:在对方跑完清单之前封禁来源。而两者都不会被锁定策略阻止——喷洒就是为绕开它而生的,暴力破解则会把它变成您自己造成的服务中断。
确认自己是否暴露
请从您自己的网络之外做这件事。在局域网内一切都会应答,这说明不了任何问题。用另一条线路上的另一台机器:
# 从您网络之外的机器,针对服务器的公网 IP:
Test-NetConnection -ComputerName 203.0.113.10 -Port 3389
# 在服务器上:什么在监听,监听在哪个接口
Get-NetTCPConnection -State Listen |
Where-Object LocalPort -in 3389,3390 |
Select-Object LocalAddress, LocalPort, OwningProcess
# 以及当前有哪些防火墙规则放行了 RDP:
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow |
Where-Object { ($_ | Get-NetFirewallPortFilter).LocalPort -contains 3389 } |
Select-Object DisplayName, Profile关闭它,按优先级排序
按每个方案实际消除的风险量排序:
- 根本不暴露。通过 VPN、RD 网关或堡垒机访问服务器。这是消除暴露而不是管理暴露,下面所有选项都是相对于它的妥协。
- 限制来源。如果合法地址集合很小且稳定——办公网段、VPN 出口、跳板机——就在防火墙里只放行这些,其余丢弃。适用时非常好,而在有人出差的那一刻就不再适用。
- 自动封禁攻击来源。盯住失败流,对越过阈值的来源按子网永久封禁。当服务必须对任意地址保持可访问时,这就是答案。
- 从 3389 迁走。把非定向流量削减约 90%,对任何专门找您的人毫无防护作用。作为上述某一项之外的降噪手段有用,但绝不能作为替代。
如果必须保持开放
大量服务器无法放到 VPN 之后——外包人员、客户自有的机器、从任何地方连入的团队。如果这是您的情况,暴露是既定事实,工作就变成让它可以被扛住。
开启网络级身份验证,让未认证的客户端永远不会被创建会话。对所有能远程登录的账户强制长密码和多因素认证。重命名或禁用内置 Administrator 账户,因为它是所有清单上的第一个名字。保持主机打补丁:RDP 出现过认证前即可利用的漏洞,将来还会有。
然后补上 Windows 不提供的那一块:某个盯住失败流并把它转成防火墙规则的东西。RDP Protector 做的正是这件事——按子网封禁、能挺过重启的永久阻断,以及在封禁任何东西之前就已包含您自己地址的白名单。一台服务器永久免费,足以让您看到真实数字,而不是估算。
FAQ
- 暴露的 RDP 服务器多快会被发现?
- 通常在端口开放后的一小时内,常常只要几分钟。大规模扫描器持续遍历整个 IPv4 空间,因此被发现与是否有人专门盯上您无关:您的地址已经在被不断重扫的名单里。不存在可以推迟加固的安静期。
- 把 RDP 直接暴露在公网上,有安全的时候吗?
- 可以做到可接受,但做不到「无风险」意义上的安全。如果必须如此,请同时具备:网络级身份验证、多因素认证、长且唯一的密码、禁用或重命名的内置 Administrator 账户、及时的补丁,以及对反复失败来源的防火墙自动封禁。缺少其中任何一项,风险都会明显上升。
- 如何检查我的 RDP 端口是否对公网开放?
- 请从您自己的网络之外测试——用另一条线路执行 Test-NetConnection -ComputerName <公网IP> -Port 3389。在局域网内测试证明不了任何事,因为内部流量绕过了边界。在服务器上,Get-NetTCPConnection 能显示服务是否监听在 0.0.0.0,即包括公网在内的所有接口。
- 暴力破解和密码喷洒有什么区别?
- 暴力破解用大量密码猛攻一个账户;喷洒则缓慢地用一个常见密码去试大量账户,以便待在锁定阈值以下。真正容易得手的是喷洒,而它恰恰是账户锁定策略拦不住的手法。两者都表现为事件 4625,也都能通过在防火墙封禁来源来阻止。
