如何让远程桌面连接(RDP)更安全

本文最后更新于:2022年8月28日 晚上

Windows 系统的远程桌面(英文 Remote Desktop Protocol,简称 RDP)可以帮助在家的你远程控制办公电脑。而“远程”就意味着操作的数据会传输在互联网中,个人信息有被窥视的风险。因此,我们需要通过相关设置来提高远程桌面的安全水平。

一、提高远程桌面连接的安全层和加密等级

修改本地组策略可以提高远程桌面连接的安全层和加密等级,我们可以通过在 运行(快捷键: Win + R)中输入 gpedit.msc 来打开“本地组策略编辑器”。

在“计算机配置\管理模板\Windows 组件\远程桌面服务\远程桌面会话主机\安全”中,我们分别设置“设置客户端连接加密级别”和“远程(RDP)连接要求使用指定的安全层”。

本地组策略编辑器
图1 本地组策略编辑器

1. 设置客户端连接加密级别

此策略设置指定在远程桌面协议(RDP)连接期间,是否要求使用特定加密级别来保证客户端计算机和 RD 会话主机服务器之间的通信安全。

如果启用此设置,则在远程连接期间,客户端和 RD 会话主机服务器之间的所有通信必须使用此设置中指定的加密方法。默认情况下,该加密级别设置为“高”。

加密级别 说明
高级别 “高级别”设置对客户端与服务器之间传送的数据使用 128 位强加密进行加密。在仅包含 128 位客户端(例如,运行远程桌面连接的客户端)的环境中使用此加密级别。不支持此加密级别的客户端无法连接到 RD 会话主机服务器。
客户端兼容 “客户端兼容”设置对在客户端和服务器之间传送的数据以客户端支持的最大密钥强度进行加密。在包含不支持 128 位加密的客户端环境中使用此加密级别。
低级别 “低级别”设置仅对由客户端发送到服务器的数据使用 56 位加密进行加密。
设置客户端连接加密级别
图2 设置客户端连接加密级别

如果禁用或未配置此设置,则不会通过“组策略”强制使用用于远程连接到 RD 会话主机服务器的加密级别。

通过“系统加密”配置 FIPS 兼容。在“组策略”中使用加密、哈希和签名设置的 FIPS 兼容算法(位于“计算机配置\Windows 设置\安全设置\本地策略\安全选项”下)。“FIPS 兼容”设置通过使用 Microsoft 加密模块、采用联邦信息处理标准(FIPS)140 加密算法对客户端和服务器之间发送的数据进行加密和解密。在客户端和 RD 会话主机服务器之间的通信需要最高级别的加密时使用此加密级别。

“系统加密”中的“FIPS 兼容”默认是已禁用的。对于远程桌面服务,默认使用 56 位或 128 位的 RC4 加密算法,在开启“FIPS 兼容”后,它将仅使用三重 DES 加密算法(3DES)来加密远程桌面服务网络通信。开启“FIPS 兼容”可能导致兼容性问题,例如,在 Windows 10 系统远程桌面连接 Windows XP 的时候,会出现“不支持 FIPS 安全级别”的提示。

如果你不需要连接 Windows XP 等早期的系统,可以打开“FIPS 兼容”来提高安全水平。

2. 远程(RDP)连接要求使用指定的安全层

此策略设置指定是否需要使用一个特定的安全层在远程桌面协议(RDP)连接期间保护的客户端和 RD 会话主机服务器之间的通信。

如果启用此策略设置,客户端和 RD 会话主机服务器的远程连接期间的所有通信都必须都使用此设置中指定的安全方法。

可用的是下列安全方法:

安全层 说明
协商 协商方法强制执行的客户端程序支持的最安全方法。如果支持传输层安全(TLS)版本 1.0,它用于 RD 会话主机服务器验证身份。如果不支持 TLS,本地远程桌面协议(RDP)加密用于安全通信,但 RD 会话主机服务器尚未进行身份验证。
RDP RDP 方法使用本机 RDP 加密安全客户端和 RD 会话主机服务器之间的通信。如果选择此设置,RD 会话主机服务器未通过身份验证。
SSL SSL 方法要求使用 TLS 1.0 对会话主机服务器进行身份验证。如果不支持 TLS,则连接将失败。
远程(RDP)连接要求使用指定的安全层
图3 远程(RDP)连接要求使用指定的安全层

如果你禁用或未配置此策略设置,在组策略级别未指定要用于远程连接到 RD 会话主机服务器的安全方法。

安装 3080079 更新 后,Windows 7 或 Windows Server 2008 R2 添加了对 TLS 1.1 和 TLS 1.2 的 RDS 支持。使用 SSL 安全层可以提供更加安全的连接。推荐选择“SSL”。

如果客户端计算机运行的是 Windows 7,则必须安装 RDC 8.0 更新才能使用 TLS 1.2。 如果没有 RDC 8.0 更新,Windows 7 客户端只能使用 TLS 1.0。

二、远程桌面(RDP)配置 SSL 证书

TLS/SSL 连接要求在 Windows 系统上必须存在 SSL 证书。如果 SSL 证书不存在,连接可能会退回到内置 RDP 安全(如果允许)或失败[1]。因此,为了使用更安全的 TLS 1.2 来连接 RDP 主机和客户端,推荐在 Windows 主机上安装 SSL 证书。

1. 申请 SSL 证书

DNSPod(腾讯云)万网(阿里云)等域名注册商那里购买了域名后,申请免费的 SSL 证书。具体操作可以参考 域名型(DV)免费 SSL 证书申请流程-腾讯云文档中心免费证书快速上手-阿里云帮助中心

2. 下载 SSL 证书

SSL 证书管理控制台-腾讯云数字证书管理服务控制台-阿里云 下载用于 Internet Information Services(IIS)的 PFX 格式 SSL 证书。

3. 安装 SSL 证书

  1. 双击 PFX 证书文件,开启“证书导入向导”。如下图所示,存储位置选择本地计算机

    证书导入向导
  2. 导入过程中会要求你为私钥输入密码,打开下载的 SSL 证书压缩包,将 TXT 格式的私钥文件中的内容粘贴在密码文本框,点击“下一步”。

    证书密钥
  3. 指定证书存储的位置,点击“浏览”,选择个人

    证书存储位置
  4. 正在完成证书导入向导,单击“完成”。

  5. 收到导入成功提示后,单击“确定”。

4. 配置 SSL 证书

远程桌面服务 RDS 配置 SSL 证书有两种方法,一种是使用 wmic 命令指定证书指纹给远程桌面服务 RDS,另一种是通过修改注册表来指定证书指纹[2]

其中,第一种方法使用 wmic 指令更加简单,操作步骤如下:

  1. 打开“本地计算机证书管理器”。由于我们将证书安装在本地计算机,所以我们需要通过在 运行(快捷键: Win + R)中输入 certlm.msc 来管理本地计算机证书。

    本地计算机证书
  2. 选择并打开证书。选择“证书 - 本地计算机” > “个人” > “证书”,双击打开安装好的 SSL 证书。

  3. 查看证书指纹。在弹出的“证书”窗口中,选择“详细信息”标签页,就可以查看到证书指纹,将其复制。

    证书详细信息
  4. 用管理员身份运行命令提示符(CMD)或 PowerShell。

  5. 在 CMD 或者 PowerShell 中输入以下指令即可:

    1
    wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="复制的证书指纹"
    更新远程桌面服务的证书

5. 重启 TermService 服务

运行(快捷键: Win + R)中输入 services.msc 打开“服务”,重启 TermService 服务。注意,要建立安全连接,连接的域名应该与 SSL 证书一致。

之后连接不会再提示证书警告,并且能在全屏模式下看到连接栏中的小锁。

建立安全连接
图4 建立安全连接

三、禁止 RDP 使用 TLS 1.0

虽然在前面我们给 RDP 服务指定了更安全的 TLS 安全层,但是 TLS 1.0 已经不再被视为安全的 TLS 协议,我们需要禁用 TLS 1.0,让 RDP 使用更安全的 TLS 1.1 或 TLS 1.2。

  1. 打开注册表编辑器(regedit.exe)。点击“开始”,输入 注册表编辑器regedit,或者在 运行(快捷键: Win + R)中输入 regedit.exe

  2. 在注册表编辑器中打开 HKEY_LOCAL_MACHINE\SYSTEM\CurrentcontrolSet\Control\SecurityProviders\SCHANNEL\Protocols

    注册表编辑器
  3. 鼠标右键点击 Protocols 项,选择 新建 - ,命名新项为 TLS 1.0

  4. 鼠标右键点击 TLS 1.0 项,选择 新建 - ,命名新项为 Server

  5. 鼠标右键点击 TLS 1.0 项,选择 新建 - ,命名新项为 Client

  6. 鼠标右键点击 Server 项,选择 新建 - DWORD (32位)值,窗口右侧命名新值为 Enabled,双击 Enabled,在弹出的窗口中 基数 选择 十进制数值数据 输入 0,点击确定。

    修改Enabled键值
  7. 鼠标右键点击 Client 项,选择 新建 - DWORD (32位)值,窗口右侧命名新值为 Enabled,双击 Enabled,在弹出的窗口中 基数 选择 十进制数值数据 输入 0,点击确定。

    Client项设置

通过添加以上键值,可以禁止这台电脑使用 TLS 1.0 连接其他 RDP 服务端,也可以阻止其他的 RDP 客户端使用 TLS 1.0 连接这台电脑。

若要使这些键值生效,你需要重启你的电脑。

四、总结

提高远程连接的安全层和加密等级、配置 SSL 证书、禁用 TLS 1.0,这些配置的确能够提高远程桌面连接 RDP 的安全性。但实际上,RDP 的最大威胁还是漏洞,2019 年就曾经出现了最严重的漏洞 “BlueKeep”(官方分类为 CVE-2019-0708),如果攻击者向特定端口(通常为 3389)发送经特殊设计的请求,则攻击者可以在计算机上执行所需的任何代码[3]

因此,安全使用 RDP 的关键还是及时地给系统安装补丁。

参考资料

  1. Windows 连接器 > 网络安全性 - Sun Ray Software 发行版 5.4 管理指南, Oracle. https://docs.oracle.com/cd/E35310_01/E40129/html/Windows-Network-Security.html
  2. Listener Certificate Configurations in Windows Server 2012 / 2012 R2 - Microsoft Tech Community. https://techcommunity.microsoft.com/t5/ask-the-performance-team/listener-certificate-configurations-in-windows-server-2012-2012/ba-p/375467
  3. RDP 的安全风险是什么?| RDP 漏洞 | CloudFlare. https://www.cloudflare.com/zh-cn/learning/access-management/rdp-security-risks/

如何让远程桌面连接(RDP)更安全
https://vickey.fun/2022/08/27/Make-Remote-Desktop-Connection-More-Secure/
作者
饶玮琪
发布于
2022年8月27日
许可协议