)
图RDP从裸奔状态到七层防护体系的加固路径——左侧为攻击者眼中的高危服务器右侧为加固完成后的安全状态你的 RDP 端口还开在 3389 吗全球每天有超过 100 万次针对 RDP 端口的暴力破解攻击。Shodan 搜索引擎上仅中国境内就有40 万台 Windows 服务器开放了 3389 端口。攻击者只需要几行 Python 脚本就能对这些服务器展开撞库攻击# 攻击者的暴力破解脚本概念展示请勿使用# 每秒可尝试数百个用户名/密码组合importparamiko# 实际攻击者用类似工具对3389发起RDP暴力破解targets[192.168.x.x:3389]passwords[Admin123,Pssw0rd,123456,admin2024]# ... 配合泄露的密码字典命中率惊人结果账号密码一旦被猜中攻击者直接获得一个完整的 Windows 图形化桌面会话。接下来的横移、勒索、数据窃取……都是后话。这不是小概率事件。2024 年国内发生的重大勒索病毒事件中超过 60% 的初始入侵路径是 RDP 暴力破解。RDP 的四大安全死穴在讲加固方案之前先说清楚为什么 RDP 这么危险死穴 1默认端口 3389全网扫描秒找到攻击者只需要一条命令# masscan 对全网 3389 端口扫描攻击者常用工具masscan0.0.0.0/0-p3389--rate100000# 几分钟内可扫出数百万开放 3389 的主机你用着 3389相当于在全球黑客面前亮起了一盏来打我的霓虹灯。死穴 2单一密码认证字典攻击成功率高Windows 默认只需要一个密码就能登录 RDP。而大多数企业运维人员的密码规律极其相似常见弱密码规律泄露数据库统计 - 公司名年份Company2024 - 键盘走位Qwerty123 - 系统默认Admin123、Pssword - 生日/手机号后四位xxxx1234配合已泄露的密码字典暴力破解的成功率远超大多数人的想象。死穴 3没有失败锁定可以无限重试很多企业的 Windows 服务器没有配置账号锁定策略攻击者可以 7×24 小时不停暴力破解# 检查当前账号锁定策略net accounts# 如果 Lockout threshold Never说明没有锁定策略危险死穴 4RDP 会话无法二次鉴权中间人风险标准 RDP 协议对中间人攻击的防护较弱在未配置 NLANetwork Level Authentication的情况下攻击者可以进行凭据窃取。安全加固方案7 步从高危到安全第 1 步修改默认端口10 分钟完成把 3389 改成一个高位非标准端口直接消失于 80% 的自动化扫描视野# 修改 RDP 端口需要管理员权限$portNumber 52389# 选择 10000-65535 之间的端口# 修改注册表Set-ItemProperty-PathHKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp-NamePortNumber-Value$portNumber# 添加防火墙规则允许新端口New-NetFirewallRule-DisplayNameRDP Custom Port-Direction Inbound-Protocol TCP-LocalPort$portNumber-Action Allow# 删除旧的 3389 防火墙规则可选建议执行Remove-NetFirewallRule-DisplayNameRemote Desktop - User Mode (TCP-In)# 重启远程桌面服务生效Restart-ServiceTermService-ForceWrite-HostRDP 端口已修改为$portNumber请更新所有 RDP 客户端配置⚠️操作前备好另一种登录方式如本地控制台或 VPN避免修改端口后把自己锁在外面。第 2 步启用 NLA网络级认证NLA 要求用户在建立完整 RDP 连接之前先完成身份认证有效抵御中间人攻击# 启用 NLAPowerShellSet-ItemProperty-PathHKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp-NameUserAuthentication-Value 1# 验证是否生效Get-ItemProperty-PathHKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp-NameUserAuthentication# 返回值为 1 NLA 已启用也可通过组策略批量推送适合域环境计算机配置 → 管理模板 → Windows 组件 → 远程桌面服务 → 远程桌面会话主机 → 安全 → 要求使用网络级别身份验证对远程连接的用户进行身份验证→ 已启用第 3 步配置账号锁定策略# 设置账号锁定策略5次失败后锁定30分钟net accounts/lockoutthreshold:5/lockoutduration:30/lockoutwindow:30# 验证策略net accounts# 应显示# Lockout threshold: 5# Lockout duration (minutes): 30# Lockout observation window (minutes): 30或通过 GPO 配置推荐可批量推送计算机配置 → Windows 设置 → 安全设置 → 账户策略 → 账户锁定策略 - 账户锁定阈值5 次 - 账户锁定时间30 分钟 - 重置账户锁定计数器30 分钟后第 4 步限制 RDP 访问 IP 范围只允许固定的跳板机/VPN 出口 IP 访问 RDP其他一律拒绝# 只允许指定 IP 段访问 RDP 端口替换为你的 VPN 出口 IP$allowedIP10.0.0.0/8# 公司内网/VPN 网段$rdpPort 52389# 添加允许规则New-NetFirewallRule-DisplayNameRDP Allow Trusted IP-Direction Inbound-Protocol TCP-LocalPort$rdpPort-RemoteAddress$allowedIP-Action Allow# 添加拒绝规则其他所有 IP 拒绝New-NetFirewallRule-DisplayNameRDP Block All Others-Direction Inbound-Protocol TCP-LocalPort$rdpPort-RemoteAddress Any-Action Block-Priority 200Write-HostRDP 访问已限制为$allowedIP网段第 5 步禁用 Administrator 内置账号创建非标准账号名# 禁用内置 Administrator 账号Disable-LocalUser-NameAdministrator# 创建一个非标准名称的运维账号不要用 admin/root/administrator$adminUseropsuser_prod# 改成你自己的命名$securePasswordConvertTo-SecureStringYourComplexPassword!2024-AsPlainText-ForceNew-LocalUser-Name$adminUser-Password$securePassword-FullNameOps Admin-DescriptionOperations Admin# 加入 Remote Desktop Users 组Add-LocalGroupMember-GroupRemote Desktop Users-Member$adminUserWrite-Host已创建 RDP 管理账号$adminUser第 6 步开启 RDP 会话审计日志# 开启登录审计成功失败都记录auditpol/set/subcategory:Logon/success:enable/failure:enable auditpol/set/subcategory:Other Logon/Logoff Events/success:enable/failure:enable# 查看最近的 RDP 登录失败记录Get-WinEvent-FilterHashtable {LogNameSecurity;Id4625}-MaxEvents 20|Select-ObjectTimeCreated,{NUsername;E{$_.Properties[5].Value}},{NIP;E{$_.Properties[19].Value}}|Format-Table-AutoSize运行最后一条命令如果你看到大量来自陌生 IP 的登录失败记录——说明你的服务器正在被暴力破解而你浑然不知。第 7 步关键为 RDP 登录加上双因素认证前六步都是减少被攻击面但真正做到即使密码泄露也登不进来需要在 RDP 登录层增加第二因素验证。这就回到了Windows Credential Provider的架构参见今天上午文章用户发起 RDP 连接 ↓ NLA 预认证第1步密码/域账号 ↓ Credential Provider 拦截第2步OTP动态口令 ↓ 双因素均通过 → RDP 会话建立 任一因素失败 → 连接断开记录日志配置要点SLA 客户端安装后可以针对 RDP 登录单独配置双因素策略与本地登录策略相互独立SLA 管理控制台 → 策略管理 → 新建 RDP 专项策略 - 触发条件登录方式 Remote Desktop (RDP) - 认证方式密码 OTP 硬件令牌推荐或 手机 TOTP - 失败处理连续3次失败 → 锁定账号30分钟 告警邮件 - 白名单可配置特定 IP 免二次验证如公司内网直连RDP 安全加固效果对比安全措施防御效果实施难度修改默认端口消除 80% 自动扫描攻击⭐ 极简启用 NLA防中间人攻击⭐ 极简账号锁定策略防暴力破解⭐ 极简IP 白名单将攻击面缩小到指定网段⭐⭐ 简单禁用默认账号消除字典攻击中已知用户名⭐ 极简审计日志发现攻击行为留证⭐ 极简双因素认证即使密码泄露也无法登录⭐⭐⭐ 中等建议顺序第1~5步今天就能做完合计约1小时第7步在业务低峰期推进。等保视角这些加固动作对应哪些测评项加固动作等保2.0对应要求测评时的验收方式修改默认端口网络访问控制检查防火墙规则和端口开放情况NLA 密码复杂度身份鉴别 a/b 项查看组策略配置账号锁定策略身份鉴别 c 项net accounts命令验证审计日志安全审计查看事件日志配置双因素认证身份鉴别 d 项两种以上鉴别方式实操演示登录流程等保三级系统身份鉴别 d 项要求使用两种及以上鉴别技术单纯密码不满足。总结7 步 RDP 加固清单□ 第1步修改 RDP 端口3389 → 高位端口 □ 第2步启用 NLA 网络级认证 □ 第3步配置账号锁定策略5次失败锁30分钟 □ 第4步防火墙限制 RDP 来源 IP □ 第5步禁用 Administrator启用非标准账号名 □ 第6步开启登录审计定期检查异常登录 □ 第7步部署 RDP 双因素认证Credential Provider 方案前6步全部免费今天就能做完。第7步需要专业产品支撑但做完之后即使密码泄露攻击者也登不进来。 话题讨论你们公司的 Windows 服务器 RDP 端口现在还开着 3389 吗有没有配置双因素我在安全测试时见过太多企业裸奔的 3389欢迎评论区聊聊你们的现状。