RDP 2FA: 如何为远程桌面添加双重身份验证

Add Two-Factor Authentication to Remote Desktop

RDP 2FA 是在远程桌面会话打开之前、在你的密码之外还需要进行的第二重身份检查,例如手机批准或一次性验证码。Windows 并未自带它。除了智能卡之外,RDP 登录界面没有原生方式强制要求第二因素,微软已在其自己的 问答论坛上确认了这一点。你可以通过两种方式为 RDP 添加 2FA:在主机上安装凭据提供程序,使第二因素在登录过程中触发;或将外部连接通过受 Microsoft Entra MFA 支持的远程桌面网关进行路由。我两种都搭建过,正确选择取决于你是在保护一台电脑还是域内的一批设备。

RDP 值得花力气加固。它在勒索软件团伙的初始入侵途径名单中名列前茅,而被盗或经暴力破解获得的凭据通常就是入侵方式。微软自己的数据清楚地表明第二因素的价值:MFA 可阻止 99.9% 的自动化账户入侵攻击。仅靠密码,攻击者与你的桌面之间只差一次猜中。

如果你的真正目标是安全的远程访问,而不是特指 RDP,还有第三条路径。HelpWire 可在完全不将 3389 端口暴露到互联网上的情况下,为你提供有人值守和无人值守的远程控制,而且其账户登录也可以用 2FA 进行保护。下文将详细介绍。

Windows 是否内置用于 RDP 的双重身份验证?

没有。Windows 没有针对 RDP 连接的原生双因素身份验证。登录堆栈内置的唯一第二因素是智能卡支持,而大多数家庭和小型企业环境从未部署它。

Windows Hello for Business 常被拿来作为反例,但它并不是。Hello for Business 是一项无密码的便捷功能。它用 PIN 或生物识别手势替代你的密码,仍然只是单一因素;并且除非你连接到基于 Azure 的桌面,否则它不适用于标准 RDP 会话。Windows Server 2022 为加入域的计算机增加了 FIDO2 登录,更接近真正的 MFA,但它仍然缺少完整方案所需的集中式策略、离线支持以及对 RD Gateway 的覆盖。对于其他情况,你需要添加第三方凭据提供程序或一个由 Entra 支持的网关。

RDP 双因素身份验证的工作原理

RDP 2FA 的工作方式是在你的密码与打开的会话之间插入第二道身份检查。有两种架构可实现它。

凭据提供程序,位于主机上。凭据提供程序是在 RDP 主机上安装的小型软件组件。当你输入用户名和密码时,提供程序会拦截登录,针对本地帐户或 Active Directory 验证第一因素,然后触发第二因素,例如推送通知、一次性验证码或硬件密钥。只有在两者都通过后,会话才会打开。这种方式适用于单台 PC 或少量机器。

配合 RADIUS MFA 的 RD 网关,位于网络前端。远程桌面网关位于各主机之前,而不是安装在每台主机上。外部 RDP 流量先到达网关,网关通过 RADIUS 将请求转发到网络策略服务器,NPS 扩展再调用 Microsoft Entra 发起第二因素挑战。此处仅支持推送或电话呼叫批准,因为网关没有为用户提供输入验证码的字段。这种方式适用于在单一入口后面有许多主机的域环境。

哪种 RDP 2FA 方法适合您

使用 Cisco Duo 或 multiOTP 为单台电脑添加双因素认证,使用带有 RD 网关的 Microsoft Entra MFA 用于域内主机群,并使用 HelpWire 以彻底避开暴露的 RDP。下表将每种方法与成本、第二因素以及是否会让 RDP 暴露在互联网上进行对应。

对比表

方法 费用 最适合 第二因素 独立 PC,无域 将 RDP 暴露到互联网
Cisco Duo 最多 10 个用户免费 小型环境,快速部署 推送、OTP、电话、硬件令牌 是,RDP 仍然暴露
multiOTP 免费,开源 单台离线 PC,家庭实验环境 TOTP、HOTP、离线 是,RDP 仍然暴露
Entra MFA + NPS + RD Gateway Entra MFA 许可证 域内机群通过单一网关 推送、电话 否,由网关前置 RDP
HelpWire 免费 完全跳过暴露的 RDP 账户 2FA、TOTP 否,无开放的 3389 端口

使用 Cisco Duo 为 RDP 添加 2FA(最多 10 位用户免费)

Cisco Duo 是在 RDP 上免费部署 2FA 的最快方式,永久免费层可免费覆盖多达 10 位用户。Duo Authentication for Windows Logon 安装在主机上,为 RDP、本地登录和需要凭据的 UAC 提示添加第二因素,并支持推送、一次性密码、电话回拨和硬件令牌。

  1. 创建一个免费的 Duo 账户并打开 Duo 管理面板。前往 Applications,单击 Protect an Application,搜索 Microsoft RDP,并单击 Protect。将集成密钥、密钥和 API 主机名复制到安全的位置。

  2. 为你的用户注册。在 Users 下,添加你自己,并通过扫描激活二维码,将你手机上的 Duo Mobile 应用绑定。确认该账户显示为 Active 状态。

  3. 在 RDP 主机上下载 Duo Authentication for Windows Logon 安装程序。以管理员身份运行,并在提示时粘贴集成密钥、密钥和 API 主机名。

  4. 在安装期间,如果您只希望在远程会话中要求第二因素,而不在本地控制台登录时要求,请勾选仅在通过 RDP 登录时提示进行 Duo 身份验证。

  5. 将 Microsoft RDP 应用程序的新用户策略设置为“拒绝访问”这可防止未注册的帐户绕过提示。

  6. 重启,然后通过 RDP 重新连接。输入密码后,Duo 会向你的手机发送推送通知。批准后,会话将打开。

在你强制执行此项之前的一个保障措施。Duo 有一个故障模式设置,用于控制当主机无法连接到 Duo 的云时会发生什么。fail open 允许在中断期间在没有第二因素的情况下继续登录,fail secure 则会阻止登录。对于面向互联网的机器,请选择 fail secure,并预留一个 Duo Bypass 账户或本地控制台访问,以避免云中断时你被完全锁定。

使用 multiOTP 的免费离线双因素认证,适用于单台电脑

multiOTP 是在没有域且不依赖云的独立 PC 上的最佳免费选项。它在 Apache 2.0 许可下开源,包含仅 RDP 模式,并且可在完全离线的情况下验证 TOTP 和 HOTP 验证码,因此即使互联网中断也能继续工作。当前版本为 5.10.2.2,发布于 2026 年 4 月。

  1. 从项目的 GitHub Releases 页面下载 multiOTP 软件包和 multiOTP 凭据提供程序到目标计算机上。

  2. 将 multiOTP 解压到一个永久文件夹,例如 C:\multiOTP。在该文件夹中以管理员身份打开命令提示符。

  3. 创建一个与您的 Windows 用户名关联的 2FA 账户。运行 multiotp.exe -create yourusername TOTP,然后使用 multiotp.exe -qrcode yourusername qr.png 生成配置用的二维码。

  4. 使用 Microsoft Authenticator、Google Authenticator 或免费的 multiOTP 令牌应用扫描二维码。使用 multiotp.exe yourusername 123456 验证生成的 6 位验证码是否有效。

  5. 安装 multiOTP 凭据提供程序。在向导中,为仅本地设置将服务器 URL 留空,并勾选仅 RDP 选项,使提示仅在远程登录时触发。

  6. 在重启之前设置一个排除帐户。添加 MULTIOTP_EXCLUDED_ACCOUNT 以便预留一个备用的本地管理员,这样如果注册出现问题,您仍然有办法进入系统。然后重启并测试 RDP 连接。

multiOTP 不需要任何云服务,这使其非常适合隔离的机器或家庭实验室。代价是需要手动配置。没有管理控制台、没有推送通知,注册需要在命令行中完成。

通过 Microsoft Entra 和 RD 网关实现 RDP 多重身份验证

对于拥有众多 RDP 主机的域环境,在远程桌面网关(Remote Desktop Gateway)后端使用 Microsoft Entra MFA 是更接近原生的方案。它保护所有通过该网关的连接,而无需你在每台机器上安装提供程序。此路径适合 IT 团队,而非仅有单台 PC 的用户,并且确实需要相当的部署与配置工作量。

 

你需要具备四项条件:一套可正常工作的远程桌面网关、一个具有可用 MFA 许可的 Entra ID 租户、一台网络策略服务器,以及将 Entra 与本地 Active Directory 同步。搭建方案如下:

  1. 在与 RD 网关分离的服务器上安装 NPS 角色。该网关作为 RADIUS 客户端指向此 NPS 服务器。

  2. 在 NPS 服务器上安装适用于 Microsoft Entra 多重身份验证的 NPS 扩展,然后运行随附的 PowerShell 脚本将其绑定到你的租户。

  3. 在 RD 网关管理器中,将 RD CAP 存储设置为在运行 NPS 的中心服务器,并添加 NPS 服务器的主机名。

  4. 在两端将 RADIUS 共享密钥配置为完全一致。此处的不匹配是导致流程静默失败的最常见原因。

  5. 使用已启用 Entra MFA 的帐户进行测试。输入密码后,用户会收到推送通知或电话,批准后,会话将打开。

必须围绕其进行规划的硬性限制:RD 网关不提供用于输入验证码的字段,因此只有推送通知和电话呼叫批准这两种要素能够到达用户。OTP 应用代码和短信输入无法通过该网关使用。请在部署前将用户的默认 Entra MFA 方法设置为推送,否则他们的首次连接会卡住。

您应该使用哪种第二因素?

对于标准用户,推送通知或身份验证器应用的一次性密码(OTP)就足够了。对于管理员和其他特权账户,请使用 FIDO2 通行密钥或硬件安全密钥。

推送和应用生成的 OTP 很方便,并能阻止大多数人担心的自动化攻击。短信是最弱的常见要素,因为 SIM 换卡和拦截会削弱其安全性,因此应将短信视为备用而非默认方式。

标准在 2026 年提升了。CISA 现在要求联邦机构在特权远程访问中使用抗网络钓鱼的多因素认证,并强烈建议关键基础设施采用,同时将 RDP 列为高价值目标。对于管理员账户,推送和短信已不再达标,因为多因素认证疲劳攻击会向用户大量发送提示,直到误点为止。FIDO2 通行密钥和硬件密钥在设计上即可抵御网络钓鱼,并符合 NIST SP 800-63B 的 AAL2 和 AAL3 要求。2026 年的实用准则:普通用户用推送,拥有提升权限的任何人使用通行密钥或硬件密钥。

借助 HelpWire,彻底跳过暴露在公网的 RDP

避免 RDP 双因素认证(2FA)麻烦的最简洁方法就是完全不暴露 RDP。HelpWire 无需打开 3389 端口或转发任何端口即可提供有人值守和无人值守的远程控制,从而消除加装的第二因素旨在防御的面向互联网的攻击面。由于没有暴露的 RDP 端点,针对 3389 端口的暴力破解和凭证填充攻击无处下手。

默认情况下,HelpWire 直接连接操作员与远程计算机,中间没有中继服务器,因此会话的暴露面小于经中转的会话。对于按需支持,远程用户按会话授予访问权限,并可随时通过快捷方式或应用内按钮撤销。对于无人值守工作,设备在设置期间授权一次,之后即使无人在场(包括跨重启)也可重新连接。HelpWire 支持在 Windows、macOS 和 Linux 上运行,并提供免费方案。

HelpWire 安全功能

账户访问通过 Auth0 实现,Auth0 是基于标准的登录提供商,受到 Microsoft、AWS 和 Siemens 的信任,且任何账户都可以添加第二因素。双重身份验证已于 2025 年 12 月向所有用户全面开放:您可在 Web 门户中启用它,在密码之上配合使用来自身份验证器应用的基于时间的一次性验证码。会话数据在通过 WSS 和 HTTPS 传输时会被加密,每个会话均由 TLS/SSL 和 AES-256 保护。连接默认为直接点对点,中间没有中继;当无法直连时,流量会回退经由 AWS 基础设施传输,并进行加密与匿名化处理。每个 HelpWire 应用都由 DigiCert 签名以防篡改。对于按需会话,访问远程计算机取决于远程用户的批准,而不是依赖开放端口和可被猜测的密码。

HelpWire 4.8
免费远程支持高级安全功能
访问网站
价格: 免费
受支持的系统: Windows, macOS, Linux
HelpWire

常见问题

免费。Cisco Duo 最多支持 10 名用户且无需费用,multiOTP 是开源的,无需许可费用。Duo 部署更快,并支持推送通知。multiOTP 可离线运行,且无需任何云服务。

是的,可以通过凭据提供程序实现。Windows 没有针对它的原生挂钩,但在其提供程序安装到主机后,Duo、multiOTP 和 Rublon 都接受来自 Microsoft Authenticator 的验证码或推送作为第二因素。

对于标准用户,是的。对于管理员和特权账户,在 2026 年,答案是否定的。CISA 指南和 NIST SP 800-63B 要求在特权远程访问中使用具备抗网络钓鱼能力的认证要素,例如 FIDO2 通行密钥或硬件密钥,因为 push 易受 MFA 疲劳攻击。

这取决于所用的方法。像 Duo 这样的云提供商需要网络连接,并且在发生中断时会回退到其 fail-open 或 fail-secure 设置。multiOTP 在本地验证 TOTP 代码,因此即使完全没有互联网连接,它也会继续提示并进行验证。