Gateway

RDP 代理

RDP 代理功能作为 NetScaler Gateway 的一部分提供。在典型的部署中,RDP 客户端在远程用户的计算机上运行。NetScaler Gateway 设备部署在 DMZ 中,而 RDP 服务器场位于企业内部网络中。

远程用户;

  1. 连接到 NetScaler Gateway 公有 IP 地址
  2. 建立 SSL VPN 连接
  3. 验证
  4. 通过 NetScaler Gateway 设备访问远程桌面

无客户端 VPN 和 ICA 代理模式支持 RDP 代理功能。

注意:

NetScaler Gateway 不支持远程桌面会话主机 (RDSH)、远程应用程序、RDS 多用户、RDP 会话或 RDP 应用程序。

以下 RDP 代理功能提供通过 NetScaler Gateway 对远程桌面场的访问权限。

  • 通过无客户端 VPN 或 ICA 代理模式(无全通道)保护 RDP 流量。

  • 通过 NetScaler Gateway 访问 RDP 服务器的 SSO(单点登录)。如果需要,还提供了禁用 SSO 的选项。

  • 强制(SmartAccess)功能,NetScaler 管理员可以通过 NetScaler Gateway 配置禁用某些 RDP 功能。

  • 满足所有需求的单/无状态(双)网关解决方案 (VPN/ICA/RDP/Citrix Endpoint Management)。

  • 与 RDP 的本机 Windows MSTSC 客户端兼容,无需任何自定义客户端。

  • 在 MACOSX、iOS 和 Android 系统上使用 Microsoft 提供的现有 RDP 客户端。

下图描述了部署的概述:

RDP 代理概述

通过无客户端 VPN 进行部署

在此模式下,RDP 链接通过 add vpn url 配置或通过外部门户以书签形式发布在 Gateway 主页或门户上。用户可以单击这些链接以访问远程桌面。

通过 ICA 代理进行部署

在此模式下,使用 wihome 参数在 Gateway VIP 上配置自定义主页。可以使用允许用户访问的远程桌面资源列表自定义此主页。此自定义页面可以托管在 NetScaler 上,或者如果是外部的,则可以是现有网关门户页面中的 iFrame。

在任一模式下,用户单击预配置的 RDP 链接或图标后,对应资源的 HTTPS 请求将到达 NetScaler Gateway。网关为请求的连接生成 RDP 文件内容并将其推送到客户端。调用本机 RDP 客户端,并连接到 Gateway 上的 RDP 侦听器。网关通过支持强制执行 (SmartAccess) 对 RDP 服务器执行单点登录。网关会根据 NetScaler 配置阻止客户端访问某些 RDP 功能,然后在 RDP 客户端和服务器之间代理 RDP 流量。

执法细节

NetScaler 管理员可以通过 NetScaler Gateway 配置配置某些 RDP 功能。NetScaler Gateway 为重要的 RDP 参数提供了“RDP 强制”功能。NetScaler 可确保客户端无法启用阻止的参数。如果启用了阻止的参数,则 RDP 强制功能将取代启用客户端的参数,并且不支持这些参数。

重要: 强制功能仅在启用 SSO 的情况下适用。

用于实施的支持的 RDP 参数

支持强制执行以下重定向参数。这些参数可作为 RDP 客户端配置文件的一部分进行配置。

  • 剪贴板的重定向

  • 重定向打印机

  • 磁盘驱动器的重定向

  • COM 端口的重定向

  • PNP 设备的重定向

连接流程

连接流程可分为两个步骤:

  • RDP 资源枚举和 RDP 文件下载。
  • RDP 连接启动。

基于上述连接流程,有两种部署解决方案:

  • 无状态(双)网关解决方案-RDP 资源枚举和 RDP 文件下载通过身份验证器网关进行,但 RDP 连接启动通过 RDP 侦听器网关进行。

  • 单一网关解决方案-RDP 资源枚举、RDP 文件下载和 RDP 连接启动通过同一网关进行。

无状态(双)网关兼容性

下图描述了部署情况:

双网关兼容性

  • 用户连接到身份验证器网关 VIP 并提供凭据。

  • 成功登录网关后,用户将被重定向到主页或外部门户,其中枚举了用户可以访问的远程桌面资源。

  • 用户选择 RDP 资源后,Authenticator Gateway VIP 将以指示用户单击的已发布资源的格式 https://vserver-vip/rdpproxy/rdptarget/listener 接收请求。此请求包含有关用户选择的 RDP 服务器的 IP 地址和端口的信息。

  • 身份验证器网关处理 /rdpproxy/ 请求。由于用户已经过身份验证,因此此请求附带有效的网关 cookie。

  • RDPTargetRDPUser 信息存储在 STA 服务器上,然后生成 STA 票证。使用配置的预共享密钥对存储在 STA 服务器上的信息进行加密。身份验证器网关使用在网关虚拟服务器上配置的 STA 服务器之一。

  • 在 /rdpproxy/ 请求中获取的“侦听器”信息将作为“fulladdress”放置到 .rdp file 中,STA 票证(预先附有 STA AuthID)将作为 loadbalanceinfo 放置到 .rdp file 中。

  • .rdp file 发送回客户端端点。

  • 本机 RDP 客户端启动并连接到 RDPListener Gateway。它在初始数据包中发送 STA 票证。

    RDPListener 网关验证 STA 票证并获取 RDPTargetRDPUser 信息。要使用的 STA 服务器是通过使用中存在的“AuthID”来检索的 loadbalanceinfo

  • 创建网关会话用于存储授权/审核策略。如果用户存在会话,则会重复使用该会话。

  • RDPListener 网关使用 CREDSSP 连接到 RDPTarget 和单点登录。

重要:

  • 对于无状态 RDP 代理,STA 服务器会验证 RDP 客户端发送的 STA 票证以获取 RDPTarget/RDPUser 信息。除了 VPN 虚拟服务器之外,还必须绑定 STA 服务器。

单网关兼容性

下图描述了部署情况:

单网关兼容性

重要:

在单个网关部署的情况下,不需要 STA 服务器。身份验证器网关对 RDPTarget 和 NetScaler 身份验证、授权和审核会话 Cookie 进行安全编码,并将其作为 .rdp file 中的 loadbalanceinfo 发送。当 RDP 客户端在初始数据包中发送此令牌时,身份验证器网关将解码 RDPTarget 信息、查找会话并连接到 RDPTarget

支持单个监听器

  • RDP 和 SSL 流量的单个侦听器。

  • 可以通过 NetScaler 设备上的相同 2 个元组(即 IP 和端口)处理 RDP 文件下载和 RDP 流量。

RDP 代理的许可证要求

高级版、高级版

注意:

只有 Gateway 平台许可证或只有标准版的客户不能使用 RDP 代理功能。

您可以使用以下命令启用 RDP 代理。

enable feature rdpProxy
<!--NeedCopy-->

书签

通过门户生成 RDP 链接。您可以通过提供为用户提供生成自己的 URL 的选项,而不是为用户配置 RDP 链接或通过外部门户发布 RDP 链接 targerIP:Port。对于无状态的 RDP 代理部署,管理员可以将 RDP 侦听器信息包含在 FQDN: Port 格式中,作为 RDP 客户端配置文件的一部分。这是在 rdpListener 选项下完成的。此配置用于在双网关模式下通过门户生成 RDP 链接。

书签

创建书签

  1. 在门户页面上创建书签以访问 RDP 资源:(ActualURL 以 rdp://开头)。

  2. Add VPN url <urlName> <linkName>  <actualURL>

    • URL 必须采用以下格式: rdp://<TargetIP:Port>
    • 对于无状态 RDP 代理模式,URL 必须采用以下格式: rdp://<TargetIP:Port>/<ListenerIP:Port>

    • URL 在门户上发布的格式如下: https://<VPN-VIP>/rdpproxy/<TargetIP:Port> https://<VPN-VIP>/rdpproxy/<TargetIP:Port>/<ListenerIP:Port>
  3. 将书签绑定到用户、组、VPN 虚拟服务器或 VPN 全局。

要为 RDP Proxy 启用的功能和模式

-  enable ns feature ssl

-  enable ns feature sslvpn

-  enable ns feature rdpproxy

-  enable mode usnip
<!--NeedCopy-->

RDP Proxy 高级配置步骤

无状态 RDP 代理配置中涉及的以下高级步骤。

  • 创建 RDP 服务器配置文件
  • 创建 RDP 客户端配置文件
  • 创建并绑定虚拟服务器
  • 创建书签
  • 创建或编辑会话配置文件或策略
  • 绑定书签

配置客户端配置文件

在身份验证器网关上配置客户端配置文件。以下是示例配置:

add rdpClient profile <name> [-addUserNameInRdpFile ( YES | NO )] [-audioCaptureMode ( ENABLE | DISABLE )] [-keyboardHook <keyboardHook>] [-multiMonitorSupport ( ENABLE | DISABLE )] [-psk <string>] [-rdpCookieValidity <positive_integer>] [-rdpCustomParams <string>] [-rdpFileName <string>] [-rdpHost <optional FQDN that will be put in the RDP file as ‘fulladdress>] [-rdpUrlOverride ( ENABLE | DISABLE )] [-redirectClipboard ( ENABLE | DISABLE )] [-redirectComPorts ( ENABLE | DISABLE )] [-redirectDrives ( ENABLE | DISABLE )] [-redirectPnpDevices ( ENABLE | DISABLE )] [-redirectPrinters ( ENABLE | DISABLE )] [-videoPlaybackMode ( ENABLE | DISABLE )]
<!--NeedCopy-->

将 RDP 客户端配置文件与 VPN 虚拟服务器关联。

这可以通过配置 sessionAction+sessionPolicy 或通过设置全局 VPN 参数来完成。

示例:

add vpn sessionaction <actname> -rdpClientprofile <rdpprofilename>

add vpn sessionpolicy <polname> NS_TRUE <actname>

bind vpn vserver <vservername> -policy <polname> -priority <prioritynumber>
<!--NeedCopy-->

或者

set vpn parameter –rdpClientprofile <name>
<!--NeedCopy-->

配置服务器配置文件

在监听器网关上配置服务器配置文件。

add rdp ServerProfile <profilename> -rdpIP <IPV4 address of the RDP listener> -rdpPort <port for terminating RDP client connections> -psk <key to decrypt RDPTarget/RDPUser information, needed while using STA>`
<!--NeedCopy-->

rdp ServerProfile 必须在 VPN 虚拟服务器上配置。

add vpn vserver v1 SSL <publicIP> <portforterminatingvpnconnections> -rdpServerProfile <rdpServer Profile>`  
<!--NeedCopy-->

示例配置

使用 CLI 配置 RDP 代理

以下是使用 CLI 进行的 RDP 代理配置示例。

  • 为用户添加包含目标信息的 VPN URL。

     add aaa user Administrator –password freebsd123$%^
    
     add vpn url rdp RdpLink rdp://rdpserverinfo
    
     add dns addrec rdpserverinfo 10.102.147.132
    
     bind aaa user Administrator  –urlName rdp
     <!--NeedCopy-->
    
  • 为 VPN 连接配置 RDP 客户端和服务器配置文件。

     add rdp clientprofile p1 –psk citrix -redirectClipboard ENABLE
    
     add rdp serverprofile p1 -rdpIP 10.102.147.134 -psk citrix
    
     add vpn vserver mygateway SSL  10.102.147.134 443 –rdpserverprofile p1
    
     set vpn parameter -clientlessVpnMode ON -defaultAuthorizationAction ALLOW -rdpClientProfileName p1
    
     add ssl certKey gatewaykey -cert rdp_rootcert.pem  -key rdp_rootkey
    
     bind ssl vserver mygateway -certkeyName gatewaykey
     <!--NeedCopy-->
    
  • 添加用于从 NetScaler 到目标的连接的 SNIP。

     add ns ip 10.102.147.135  255.255.255.0 –type SNIP
     <!--NeedCopy-->
    

使用 GUI 进行 RDP 代理配置

  1. 导航到 NetScaler Gateway > 策略,右键单击 RDP,然后单击 启用功能

  2. 单击导航窗格上的 RDP。在右侧,选择 客户端配置文件 选项卡,然后单击 添加

  3. 输入客户端配置文件的名称和名称,然后对其进行配置。

    为配置文件添加名称

  4. 在“RDP 主机”字段中,输入解析为 RDP 代理侦听器的 FQDN,该侦听器的 FQDN 通常与 NetScaler Gateway 设备的 FDQN 相同。

  5. 预共享密钥中,输入密码,然后单击 确定

    预共享密钥密码

  6. 输入服务器配置文件的名称。

  7. 输入要绑定此配置文件的网关虚拟服务器的 IP 地址。

  8. 输入为 RDP 客户端配置文件配置的相同预共享密钥。单击创建

    重新输入预共享密钥密码

  9. 如果要在无客户端访问门户页面上添加 RDP 书签,请在左侧展开 NetScaler Gateway,展开 资源,然后单击 书签

  10. 在右侧,单击 添加

  11. 给书签起个名字。

  12. 对于 URL,请使用 IP 或 DNS 输入 rdp://MyRDPServer

  13. 选择 将 NetScaler Gateway 用作反向代理, 然后单击 创建

  14. 根据您的要求创建书签。

    添加多个书签

  15. 创建或编辑会话配置文件。导航到 NetScaler Gateway > 策略 > 会话

  16. 在安全选项卡上,将 默认授权操作 设置为 允许。或者,您可以使用授权策略来控制访问权限。

    设置默认验证操作

  17. 在远程桌面选项卡上,选择您之前创建的 RDP 客户端配置文件。

    选择 RDP 客户端配置文件

  18. 如果要使用书签,请在“客户端体验”选项卡上,将“无客户端访问”设置为“”。

    将无客户端访问权限设置为开

  19. 在“已发布的应用程序”选项卡上,确保 ICA 代理处于 关闭状态

    将 ICA 代理设置为“关”

  20. 修改或创建网关虚拟服务器。

  21. 在“基本设置”部分中,单击“更多”。

    设置基本设置

  22. 使用 RDP 服务器配置文件列表选择您之前创建的 RDP 服务器配置文件。

    使用 RDP 服务器配置文件

  23. 向下滚动。确保未选中“仅 ICA”。

    仅将 ICA 设置为关闭

  24. 绑定证书。

  25. 绑定身份验证策略。

  26. 绑定配置了 RDP 客户端配置文件的会话策略/配置文件。

    绑定会话策略

  27. 您可以将书签绑定到 NetScaler Gateway 虚拟服务器或身份验证、授权和审核组。要绑定到 NetScaler Gateway 虚拟服务器,请在右侧的“高级设置”部分中单击 已发布的应用程序

    单击发布的应用

  28. 在左侧的“已发布的应用程序”部分中,单击“无 URL”。

    不设置 URL

  29. 绑定您的书签。

    绑定书签

  30. 由于未为此 NetScaler Gateway 虚拟服务器指定仅 ICA,因此请确保正确配置了 NetScaler Gateway 通用许可证。在左侧,展开 NetScaler Gateway ,然后单击 全局设置

    设置全局设置

  31. 在右侧,单击 更改身份验证 AAA 设置

    更改身份验证设置

  32. 最大用户数 更改为许可限制。

    设置最大用户数

  33. 如果要使用 DNS 连接到 RDP 服务器,请确保在设备上配置了 DNS 服务器(流量管理 > DNS > 名称服务器)

    配置 DNS 服务器

  34. 如果要使用短名称而不是 FQDN,请添加 DNS 后缀(流量管理 > DNS > DNS 后缀)

    使用 FQDN

  35. 连接到网关并登录。

    连接到网关

  36. 如果已配置 书签,请单击书

    单击书签

  37. 您可以将地址栏更改为 /rdpproxy/MyRDPServer。您可以输入 IP 地址(例如 rdpproxy /192.168.1.50)或 DNS 名称(/rdpproxy /myserver)。

    更改地址栏

  38. 打开下载的 .rdp file

    下载 RDP 文件

  39. 您可以通过转到 NetScaler Gateway 策略 > RDP 来查看当前连接的用户。右侧是“ 接”选项卡。

    单击连接选项卡

禁用 SSO 的选项

可以通过配置 NetScaler 流量策略来禁用带有 RDP 代理的 SSO(单点登录)功能,以便始终提示用户输入凭据。禁用 SSO 后,RDP 强制 (SmartAccess) 将不起作用。

示例:

add vpn trafficaction <TrafficActionName> HTTP -SSO OFF
<!--NeedCopy-->

可以根据要求配置流量策略,以下是两个示例:

  • 要为所有流量禁用 SSO:

     add vpn trafficpolicy <TrafficPolicyName>  "url contains rdpproxy" <TrafficActionName>
     <!--NeedCopy-->
    
  • 基于源/目标IP/FQDN 禁用 SSO

     add vpn trafficPolicy <TrafficPolicyName>  "HTTP.REQ.URL.CONTAINS("rdpproxy") && CLIENT.IP.SRC.EQ(<IP>)" <TrafficActionName>
     bind vpnvserver rdp -policy <TrafficPolicyName> -priority 10
     <!--NeedCopy-->