对于大多数系统管理员来说,远程桌面是最常用的 Windows 功能之一。但每次选择「信任远程 PC」时,都需要冒一些远程桌面凭据泄漏的风险,如果你对所连接的远程计算机并不了解,甚至在连接一台已受感染或被动了手脚的远程系统,凭据泄漏风险就更大了。
为了消除这一潜在安全威胁,微软在 Windows 10 周年更新和 Windows Server 2016 中引入了远程凭据保护(Remote Credential Guard)功能。「远程凭据保护」可以帮助用户通过远程桌面连接将 Kerberos 请求重定向回请求发起设备来保护您的凭据,同时还为远程桌面会话提供了 SSO(单点登录)支持。如果远程服务器已被恶意攻陷,由于凭据和凭据衍生的验证信息都不会发往目标服务器,也可保证验证凭据不会暴露。
远程凭据保护的常见使用场景如下:
- 由于 Administrator 拥有很高特权,必需受到最大程度的保护。通过使用「远程凭据保护」进行 Remote Desktop 连接,凭据不会通过网络传递到目标设备。
- Helpdesk 团队管理的设备可能已经被感染,「Remote Credential Guard」可以保护 Helpdesk 成员在进行 RDP 连接时不被恶意软件窃取凭据。
下图为 Remote Credential Guard 的工作示意图,可以帮助大家了解其工作原理。
远程凭据保护软、硬件要求
远程桌面客户端和服务器必须满足以下要求才能使用远程凭据保护特性:
- Remote Desktop 服务器和客户端必需是 Active Directory 成员。(服务器和客户端必需加入同一域或加入的域有信任关系)
- 必须使用 Kerberos 身份验证
- 操作系统必需是 Windows 10 version 1607 或 Windows Server 2016
- 必需使用 Windows 10 或 WS 2016 中内置的经典「远程桌面连接」应用,UWP 应用不支持此特性。
启用远程凭据保护功能
Remote Credential Guard 功能默认不启用,我们可以通过更改注册表或配置组策略的方式手动开启。
注册表方法
1 使用 Windows + R 快捷键打开「运行」— 执行 regedit 打开注册表编辑器。
2 导航到如下路径:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa
3 新建一个名为 DisableRestrictedAdmin 的 DWORD (32 位)值,并将其值设置为 0 即可。
如果你想偷懒,也可在「命令提示符」中直接使用如下命令更改注册表:
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin /d 0 /t REG_DWORD
组策略方法
如果要在域成员中批量启用,最好的办法就是通过组策略为特定客户端启用「远程凭据保护」支持。
1 使用 Windows + R 快捷键打开「运行」— 执行 gpedit.msc 打开组策略编辑器(域管理员直接使用 GPMC)。
2 导航到如下路径:
计算机配置—管理模板—系统—凭据分配
3 在右侧找到「限制向远程服务器分配凭据」将其启用,再在下拉列表中选择「需要远程 Credential Guard」后点击「确定」
4 更改完成后,等待一些时间即可生效或者执行 gpupdate /force 强制刷新策略。
临时启用远程凭据保护
使用参数为RDP连接启用远程凭据保护
除了通过注册表或组策略直接启用远程凭据保护功能外,还可以通过附加参数临时启用。
mstsc.exe /remoteGuard
使用远程凭据保护时的注意事项
- 远程凭据保护不包括「设备声明」。 例如,如果您尝试从远程访问文件服务器,并且文件服务器需要设备声明,则访问将被拒绝。
- 远程凭据保护不能用于连接到加入 Azure Active Directory 的设备。
- 远程桌面凭证保护仅适用于 RDP 协议。
- 虽然不会有凭据直接发送到目标设备,但目标设备仍然自己获取 Kerberos 服务的 Ticket。
- 远程桌面网关与远程凭据保护不兼容。
- 无能使用「已保存」或非自身的凭据,必须使用登录到设备的用户凭据。
- 客户端和服务器都必须加入到同一个域或域必须具有信任关系。
- 服务器和客户端必须使用 Kerberos 进行身份验证。
好好好!