摘要
远程桌面网关(RD Gateway)是微软远程桌面服务中的一项关键角色服务,它允许授权用户通过互联网安全地访问内部网络资源。近期,为解决生产环境中Windows安全访问问题,我们引入了RD Gateway,提升了内网接入的安全性。本文将详细介绍RD Gateway部署及在生产中的使用方法。
1. RD Gateway是什么
RD Gateway是在Windows Server上的功能角色 ,其核心功能是让经过授权的远程用户能够从任何连接互联网的设备安全地访问公司内部或私有网络上的资源。这些资源可以包括远程桌面会话主机、运行特定应用程序的服务器、虚拟机,或者任何启用了远程桌面的计算机。
它的工作原理是将传统的远程桌面协议(RDP)封装在HTTPS协议中(即 RDP over HTTPS),从而在用户设备与内部资源之间建立一个安全、加密的通道。这意味着用户无需建立传统的虚拟专用网络(VPN)连接,就能像在本地网络一样访问内部应用,同时有效降低了将内部资源直接暴露给互联网的风险。
2. 演进历程与引入背景
RD Gateway 并非凭空出现,它的发展紧密与微软企业计算模式的演进息息相关。根据名称溯源,在 Windows Server 2008 R2 中,其前身“终端服务网关(TS Gateway)”被正式更名为“远程桌面网关(RD Gateway)”,成为远程桌面服务角色的一部分。
引入该功能的主要原因是满足企业日益增长的安全远程访问需求,随着移动办公和分支机构访问内部应用的需求激增,企业需要一种比VPN更精细、更安全的解决方案。为此RD Gateway 应运而生,它允许企业精细控制“谁”(通过RD CAP策略)可以连接以及“可以访问什么”(通过RD RAP策略),而无需开放整个内部网络,极大地提升了安全性。
随着技术不断演进,在 Windows Server 2008 R2 中,RD Gateway 增加了多项重要功能,例如可配置的空闲和会话超时时间、系统与登录消息显示,以及支持可插拔的身份验证和授权机制,使其功能更加完善和灵活。
3. 需求介绍
由于读/写卡器驱动的兼容性问题,公司的WEB前端页面代码与Chrome、Firefox等浏览器无法兼容,只能使用Windows Edge或IE 11,这便是造成用户无法彻底脱离Windows的主要原因。
为此,我们基于dockurr构建了大量Windows虚机以便于用户接入访问,但如何对用户身份进行识别并进行后端Windows远程桌面资源匹配和流量分发成为首要解决的问题。

图3-1、组网结构
在生产环境中,用户终端通过零信任接入安全域,再通过负载均衡分发的方式访问核心区远程桌面。起初我们尝试通过F5 BIGIP直接分发RDP流量,但发现存在BIGIP VIP暴露面过大、网络策略可维护性低的问题,因此后续统一改造为RD Gateway模式,如图3-1所示。
以下将对上述两种方案进行介绍。
4. BIGIP直接进行RDP流量分发
4.1 七层策略分发
我们首先尝试基于F5 BIGIP直接进行RDP流量的分发,由于远程桌面(RDP)有其自身的安全和加密体系,虽然它也可以利用 TLS/SSL 来增强安全性(例如进行服务器身份验证和加密通信),但其协议本身是独立的,并非构建在HTTP之上,当 RDP 客户端(如 mstsc.exe)直接通过3389端口连接服务器时,它发起的是RDP协议握手,而非TLS/SSL握手(除非配置了特定的安全层)。即使配置为使用 TLS,RDP 连接过程也不包含在 TLS 握手初期发送 SNI 信息的标准行为。所以,F5 或其他负载均衡设备无法像处理 HTTPS 流量那样,从 RDP 连接请求中提取出 SNI 字段来做分发决策,因此F5对后端RDP流量的调度只能使用四层策略。
4.2 四层策略分发
用户终端的身份(客户端IP)在经过零信任的地址池转换后丢失,无法透传到负载均衡,因此无法基于客户端IP进行分发。此外,由于零信任使用私有的客户端地址池,其源端口为随机分配,与用户终端的源端口也不一致,因此也无法使用源端口范围进行识别,当然,即便可以使用源端口,我们可以对客户端的源端口范围进行限制,这种方式效果也有限,毕竟可分配的端口资源较少。
netsh int ipv6 set dynamic tcp start=65500 num=36
因此我们只能基于“目的IP+目的端口”进行策略分发,策略类似于如下模式,其弊端是:端口开放范围过大,暴露面增加,如下后端远程桌面的端口数量和F5开放的端口数比例为1:1,且映射关系复杂不便于记忆和维护,以下为F5 irules中的端口映射关系。
when CLIENT_ACCEPTED {
if { [matchclass [IP::remote_addr] equals grp_zero_trust] }{
if { [TCP::local_port] equals 33089 }{
pool pool_rdp_services member 192.168.0.11:33089
} elseif { [TCP::local_port] equals 33189 } {
pool pool_rdp_services member 192.168.0.12:33189
} elseif { [TCP::local_port] equals 33289 } {
pool pool_rdp_services member 192.168.0.13:33289
} elseif { [TCP::local_port] equals 33389 } {
pool pool_rdp_services member 192.168.0.14:33389
}
}
}
5. 基于RD Gateway转发RDP流量
我们尝试在Windows Server 2025上搭建RD Gateway服务,以下为详细过程。
5.1 安装RD Gateway服务
在服务器管理器中打开“添加角色和功能”菜单,操作步骤请参考图5-1~图5-9

图5-1、添加角色和功能

图5-2、添加角色和功能向导

图5-3、选择基于角色或基于功能的安装

图5-4、选择“从服务器池中选择服务器”

图5-5、选择需要安装的角色
【注意】Windows Server 2025的远程桌面服务依赖其他相关服务,至少需要安装:“Active Directory Domain Services”、“DNS Server”、“Network Policy ad Access Services”和“Remote Desktop Gateway”四个服务,后面将说明这些服务安装的原因。

图5-6、确认需要安装的功能(无需修改)

图5-7、勾选“如果需要,自动重新启动目标服务器”

图5-8、执行安装

图5-9、确保AD DS、DNS、IIS、NAPS和远程桌面服务都正常运行
5.2 配置域控制器
RD Gateway 要求使用域账户(如<域>\<账户名>而非本地计算机账户(如 <计算机名>\<账户名>)进行身份验证,主要基于其安全架构、策略集中管理和网络资源访问控制的需求:
1)RD Gateway采用集中式身份验证与策略管理,依赖Active Directory(AD)对用户身份进行统一验证和授权。本地账户信息仅存储在单台计算机上,域控制器无法对其进行验证;
2)授权策略(RD CAP/RD RAP)通常直接与AD安全组绑定;
3)RD Gateway 的目标是安全地让用户访问内网资源(如其他远程桌面会话主机)。访问这些资源本身通常也需要域身份验证。使用域账户可以确保从网关到目标资源的整个连接链身份一致且可管理。
添加“林”、“域控制器”,“加入域”的过程不再赘述,这里重点需要授予接入RD Gateway的操作系统账号的网络接入权限。
打开菜单:“服务器管理器”→“工具”→“Active Directory 用户和计算机”,确保接入RD Gateway的授权操作系统账户<域>/<账户>具备网络接入权限。

图5-10、活动目录配置
在Active Directory 用户和计算机管理面板中,展开左侧导航树:域→Users,在用户列表中找到接入RD Gateway的用户账号,一般为当前Windows Server 2025的管理员账号,双击该账号,在“拨入”选项卡下,选择“网络访问权限”→“允许访问”选项。

图5-11、授予网络访问权限
5.3 配置网络策略服务器NPS
RD Gateway(远程桌面网关)依赖网络策略服务器(NPS)来实现集中式策略管理和增强型安全认证:
1)NPS作为中央策略存储库,统一管理RD CAP,定义谁可以连接到RD Gateway,避免了在每个网关上单独配置策略的繁琐;
2)NPS作为RADIUS服务器,为RD Gateway提供集中式的身份验证、授权和审计(AAA)功能;
3)NPS可以作为桥梁,将RD Gateway与云端的Microsoft Entra多重身份验证服务连接起来,为远程连接增加第二重安全验证;
NPS的具体配置方法如下:
在网络策略服务器配置面板中,选择“策略”→“网络策略”,特别要确保“连接到微软路由和远程访问服务”、“连接到其他访问服务”的状态均为“启用”。

图5-12、网络策略服务配置
【注意】若上述策略状态为拒绝,将造成远程终端访问RD Gateway失败,后端的报错日志如图5-13所示,但从当前RD Gateway 所在主机上访问443端口将不受影响。

图5-13、审核失败日志
5.4 RD网关配置
在服务器管理中,选择右上角“工具”→“Remote Desktop Services”→“远程桌面网关管理器”:

图5-14、启动“远程桌面网关管理器”

图5-15、在RD网关管理器-本地网关上右键“属性”

图5-16、调整RD网关的连接数不设限

图5-17、为RD网关配置自签证书

图5-18、创建自签证书
【注意】证书默认颁发给域名:<计算机名>.<域>,点击“创建并导入证书”,在新的窗口中填写证书名称和存储路径。

图5-19、导入刚才创建好的证书

图5-20、导入证书前添加信任
【注意】请妥善保管该自签名证书,后续所有接入RD Gateway的客户端均需要添加该证书的信任,方法为“查看证书”,在“详细信息”选项卡下,点击“复制到文件”。

图5-21、将证书拷贝出来人工分发给所有接入终端

图5-22、在接入终端上双击证书并安装证书

图5-23、选择当前用户

图5-24、将证书导入“受信任的根证书颁发机构”以强制信任该自签证书

图5-25、点击完成以执行

图5-26、保持默认设置以监听在0.0.0.0:443/tcp和0.0.0.0:3391/udp上
【注意】请修改IP地址为确定的地址,减少暴露面。

图5-27、NPS服务在本地运行
【注意】剩余的选项保持默认即可。
5.5 配置网关策略

图5-28、新建授权策略

图5-29、选择“创建RD CAP和RD RAP(推荐)”
RD CAP相当于网关的前置策略,用于对远程接入进行审核,RD RAP相当于后端策略,对后端远程桌面服务资源调度进行控制。
如下为已经创建好的RD CAP和RD RAP策略,请按照要求在“新建授权策略向导”中进行逐一配置。
5.5.1 RD CAP策略

图5-30、策略名称任意填写
我们尽量采用简单的Windows密码身份验证方法,同时对访问RD Gateway的操作系统用户所属的组进行设定。

图5-31、身份验证及来访者身份
若需要对用户所属的组进行设定,可点击“添加组”,并在弹出的对话框中点击“高级”(图15所示),同时在新弹出的搜索框中点击“立即查找”,选定需要添加的组后点击“确定”。

图5-32、选择组

图5-33、立即查找

图5-34、启用所有客户端设备重定向
5.5.2 RD RAP策略

图5-35、RAP策略名称任意

图5-36、授权用户组(操作方式和CAP类似)

图5-37、这里设置后端RDP服务IP地址池

图5-38、设定RDP端口范围
图20、图21所示的配置相当于负载均衡器的后端成员,类似Nginx的Upstream Server。
6. RD Gateway的使用
在普通Windows终端上,参考5.4节中的证书授信方式添加信任,并配置证书CN域名的强制解析,如在c:\windows\system32\drivers\etc\hosts中配置 <BIGIP VIP> <证书CN>的映射关系。
运行RDP客户端mstsc.exe,并做如下配置:

图6-1、在“常规”选项卡中填写RD网关后端的远程桌面地址+端口
【注意】以上常规选项卡中的内容是后端远程桌面的账号,并非RD网关的账号。

图6-2、在“高级”选项卡中填写RD网关的指向
点击“设置”打开“RD网关服务器设置”界面:

图6-3、配置服务器名
【注意】请选择“使用这些RD网关服务器设置”,服务器名与证书CN保持一致,登录方法选择“询问密码”,点击连接。

图6-4、第一层验证(RD网关凭据)
【注意】这里的凭据即Windows Server 2025操作系统账户,注意为<域>\<账户名>格式。

图6-5、第二层验证(资源验证/远程桌面凭据)
成功经过二次验证后,可以访问远程桌面:

图6-6、验证通过后的画面
7. 常见问题处理
【1】网关凭据审核失败,要求重新输入,但无任何其他错误提示。
【分析】域环境与本地账户混淆:如果RD网关服务器已加入域,其“administrators组账户”很可能是域管理员账户(如:DOMAIN\Administrator),而非本地管理员账户(如 GATEWAY_SERVER_NAME\Administrator)。尽量不要使用后者进行登录,本人尝试若域控制器未启用的状态下,使用“计算机名\Administrator”登录网关会出现其他异常提示,建议尽量使用域账户登录。
【2】该计算机无法验证 RD 网关 “192.168.*.*”的身份。连接到无法识别的服务器是不安全的。请联系网络管理员以获取帮助。
【分析】RD网关不应使用IP,因在5.4节签发证书时,颁发给了GATEWAY_SERVER_NAME(计算机名)或GATEWAY_SERVER_NAME.DOMAIN,而默认情况下不会将服务器IP配置到SAN备用名。
【3】错误信息如下:
[Window Title]
远程桌面连接
[Content]
连接到远程资源时出现问题。请联系网络管理员寻求帮助。
[^] 隐藏详细信息(D) [确定]
[Expanded Information]
错误代码: 0x3000008
扩展错误代码: 0x0
时间戳 (UTC): 09/21/25 02:00:07 AM
按Ctrl+C进行复制。
【分析】确认客户端可以访问 RD 网关服务器的端口(默认 443)及RD网关服务器到后端服务器的远程桌面端口的策略是否打通。防火墙或网络设备可能阻止了这些端口的通信。
【4】错误信息如下:
[Window Title]
远程桌面连接
[Content]
由于以下原因之一,远程桌面无法连接到远程计算机“*********”:
1) 你的用户帐户未获得授权,无法访问 RD 网关“WIN-*******”
2) 你的计算机未获得授权,无法访问 RD 网关“WIN-*******”
3) 你使用的是不兼容的身份验证方法(例如,RD 网关可能需要智能卡,但你提供的是密码)
请与网络管理员联系以获取帮助。
[^] 隐藏详细信息(D) [确定]
[Expanded Information]
错误代码: 0x300001c
扩展错误代码: 0x0
时间戳 (UTC): 09/22/25 01:50:36 AM
按Ctrl+C进行复制。
【分析】在事件查看器中进一步分析原因
【5】无法创建该 DNS 服务器的委派,因为无法找到有权威的父区域或者它未运行 Windows DNS 服务器。如果你要与现有 DNS 基础结构集成,应在父区域中手动创建对该 DNS 服务器的委派,以确保来自域“*****”以外的可靠名称解析。否则,不需要执行任何操作。
【分析】对于域内的名称解析,一切正常;但对于需要从互联网解析您域名的场景,需要您自行确保父区域的委派已设置正确。正常情况来说:DNS服务无需做其他额外配置,使用默认设置即可。
8. 总结
我们将RD Gateway应用于生产过程中,出现了各种问题。对此做了一些反思和总结后我们认为,RD Gateway的实施过程之所以艰难复杂,主要源于其架构设计上对多个关键组件的深度依赖和精细配置要求。首先,它与Active Directory域服务、公钥基础设施(PKI)以及网络策略服务器(NPS)紧密集成,这意味着管理员不仅需要正确部署和连接这些基础服务,还需确保它们之间的交互万无一失,任何一个环节的微小配置错误都可能导致整个认证或授权流程失败。其次,安全策略的配置极其繁琐,管理员需要精确地定义RD CAP(连接授权策略)和RD RAP(资源授权策略),这些策略决定了“谁”能连接以及“能访问什么”,策略规则的细微偏差或域名解析的不匹配(例如内部使用.local域而外部使用.com域)都会引发连接故障。再者,网络环境的复杂性带来了巨大挑战,尤其是在企业网络通常包含防火墙和DMZ(外围网络)的情况下,管理员必须准确开放一系列特定端口(如HTTPS的443、RDP的3389等)并配置复杂的端口转发规则,同时还要处理SSL证书的部署、验证和信任问题,任何网络规则或证书的疏漏都会直接阻断加密隧道建立。正是这些关键组件环环相扣的严苛要求,共同构成了RD Gateway部署过程中的主要障碍。
1419

被折叠的 条评论
为什么被折叠?



