通过证书或密钥文件进行客户端身份验证的 RDP

通过证书或密钥文件进行客户端身份验证的 RDP

我计划为我的个人电脑(Windows 10,不是Windows Server,因为它只是一个工作站)。

计划如下:

  • 自然地将 RDP 和 LAN 唤醒端口转发到我的机器。
  • 我把两个证书放在一个 USB 密钥上,随身携带,以便随时随地远程访问我的工作站:通常主机证书通常用于 RDP 确认服务器真实性,以及客户端证书(通俗地说,就是客户端必须发送到服务器以确认其真实性的文件)作为第二层安全保护。
  • 每当我想从远程计算机连接到我的计算机时,我都会插入 USB 密钥,执行局域网唤醒来启动我的机器(我已经弄清楚了这部分),打开 RDP 客户端并通过公共端口连接,首先使用客户端身份验证文件进行身份验证,然后使用我的常用密码进行身份验证。

我发现的大多数关于实施此安全措施的资源都需要使用 Windows Server,这令人困惑,因为 IPsec 设置似乎也只适用于 Windows Server 或智能卡(我特别想使用的是 USB 闪存驱动器)。我可以使用常规 RDP 和局域网唤醒来做到这一点吗?还是我需要设置具有适当客户端证书身份验证支持的隧道,例如 VPN 或 SSH(这可能意味着完全放弃 RDP 并使用 VNC 或类似的替代方案)?

答案1

自然地将 RDP 和 LAN 唤醒端口转发到我的机器。

不建议这样做,因为 Windows 中的 RDP 服务历来存在许多无需身份验证即可利用的安全问题。尽管要求 NLA(默认设置)可以稍微改善这种情况,但仍被视为不必要的高风险。

因此,请考虑使用 VPN 隧道,或者 SSH(如果您想要随身携带到难以安装 VPN 应用程序的随机 PC 上)。(另一种选择是鳄梨它是基于浏览器的 VNC 和 RDP 服务器网关。

令人困惑的 IPsec 设置似乎也只适用于 Windows Server 或智能卡

IPsec 在 Windows 的客户端版本上运行良好,尽管设置起来相当混乱——Windows 10 有类似IPsec 客户端;旧版 XP 客户端(已过时的 IKEv1 客户端)、作为 Windows 防火墙一部分的新客户端(wf.msc);以及配置为“IKEv2 VPN”连接的客户端。

智能卡可能需要 Windows Server。

或智能卡(我特别想使用的是 USB 闪存驱动器)。

“智能卡身份验证”并不严格要求证书位于物理智能卡上(以自包含 USB 令牌的形式出现) - 它只要求证书可通过 Windows CAPI 获得,但它实际上会接受私钥从 .pfx 文件导入“基于软件的”Windows 证书存储区的证书。

但这个计划最大的问题是,无论你安装私钥的机器上,私钥的副本都会保留下来(因为 RDP 客户端不支持直接从文件中读取私钥),所以你会信任任何一台随机的电脑来保管你的密码您的证书密钥对。真的,即使你没有必须安装 .pfx 文件,你需要仍然信任任何随机计算机,并将您的证书密钥对存放在 USB 记忆棒上。

这实际上就是智能卡的全部意义——私钥不能即使是恶意 PC 也无法从中提取信息;该卡在内部执行签名操作并仅返回结果。但您不必携带整个读卡器到处都有——如上所述,有 USB 棒状的智能卡,其中 Yubikey 是一种流行的智能卡。(我特别指的是 Yubikey NEO 和更高型号中的“CCID/PIV”模式,模拟 PIV 卡,它甚至不需要像其他智能卡那样的驱动程序。)

另一个问题是,据我所知,RDP 中的“智能卡身份验证”依赖于 Active Directory,因为它是通过 Kerberos PKINIT 实现的,而不是通过普通的直接证书身份验证实现的。(不一定是 Windows Server - Samba 可以执行 AD - 但它仍然需要 AD。)它也是一个选择对于用户的 AD 密码,而不是第二个因素。

最后一个问题是,之前影响 Windows RDP 服务的一些安全问题预认证,这意味着它们可能在验证您的密码之前就被利用了——因此在验证您的“智能卡”凭证之前也有可能被利用。(虽然它们已经被修补,但与 OpenSSH 或 WireGuard 相比,这绝对不是一个好的记录。)

(这可能意味着完全放弃 RDP 而使用 VNC 或类似的替代方案)?

RDP 仍然可以通过 SSH 隧道工作;只需确保使用 3389 以外的“本地”端口进行配置即可。(您确实会失去基于 UDP 的传输模式,但它是可选的,而且性能上的差异甚至不是很明显。)

相关内容