我计划为我的个人电脑(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 的传输模式,但它是可选的,而且性能上的差异甚至不是很明显。)