亚马逊AWS官方博客
在 AWS 上构建安全的 Citrix 桌面云
随着时间的发展,很多用户慢慢放弃了传统数据中心构建业务的思维方式,选择关闭数据中心,使用云计算的新模式。不少用户希望在 AWS 上构建 Citrix 的桌面云方案, 以满足弹性和敏捷的需求。但在方案设计中会遇到各种问题,传统企业对于数据安全性、资产设备所有权、技术可控性要求较高。数据资产代表企业核心竞争力,如何在不同纬度抵御安全威胁,防止数据外泄是企业在数字化转型过程中的一大挑战。本文将重点从数据安全性的角度讨论如何在AWS上构建安全的 Citrix 桌面云,并满足信息安全部门的合规要求。
Citrix方案简介
Citrix Virtual Apps and Desktops(之前称XenApp 和XenDesktop) 提供虚拟化解决方案。利用这些方案,IT 可以在提供随时随地访问任何设备的功能的同时,控制虚拟机、应用程序和安全性。最终用户可以使用独立于设备的操作系统和界面的应用程序和桌面,架构如下(来自于Citrix):
具体技术实现如下:
(1) 用户认证。 用户的凭据通过 Citrix 的客户端 Receiver 或 Web 浏览器方式传递给 NetScaler 后端的 Citrix Web 服务 StoreFront,通过和 Controller 的 Broker Service 通信确定所需的资源,并获取可用资源的 ICA 文件。
(2) ICA 连接。客户端 Receiver 打开ICA文件,使用 ICA 文件中的配置进行连接。客户端连接使用 Citrix 私有的 ICA 协议,建立在 TCP/IP 协议上,详见 Independent Computing Architecture 。
安全方案分析
我们通常会从传输中的数据和静态数据两个维度讨论数据安全性。静态数据的安全性从技术上主要是使用加密方式,Citrix 的整套解决方案在迁移到AWS后主要是使用的 AWS EC2 服务,磁盘使用的是 AWS EBS,EBS 是和 AWS KMS 服务深度集成的,因此通过使用 KMS 可以提升静态数据的安全防护能力,详细的介绍及配置方式可以参考:AWS数据纵深防御篇-如何配置EBS整合KMS的静态加密。
针对传输中的数据,Citrix VDI方案中有两次数据连接发生。第一次是用户身份验证的标准https连接,第二次是终端用户 ICA 的连接,不同的协议访问可以使用不同的方案及安全服务或产品来满足需求。
安全方案设计
1. 采用 rehost 迁移方案,在AWS上部署使用和本地数据中心一样的架构,结合云原生安全服务满足安全需要,例如安全组、NACL等。方案实现没有技术风险,是 AWS 的推荐方案。AWS 和 Citrix 都提供了标准的白皮书和文档,本文不再深入讨论,关于架构设计详见: Citrix XenApp on AWS: Reference Architecture 和 XenApp and XenDesktop 7.6 Reference Architecture on AWS 。
2. 采用 re-architect 迁移方案,结合云上已有的安全产品和云原生安全服务来提供防护。将终端用户的请求进行分层防护,在一些特定的场景下可以更加灵活的应对,属于定制化方案,也是本文重点介绍的方案。
方案架构图
我们建议利用 AWS 原生的安全特性以及特定安全厂商的Web 应用防火墙(WAF)来对Citrix VDI系统进行更高的安全防护,架构图如下:
具体技术实现如下:
1.终端用户访问https://ctx.awssample.com(自定义的VDI 域名),发起请求。
2.NLB 通过端口为53的侦听器将流量转发到 NetScaler 的 ADNS 服务,同样使用此方式和其他站点的 NetScaler之 间建立 GSLB 服务,并将最近的实际站点地址返回给用户。
3.终端用户使用返回的实际站点地址重新发起 https 请求。
4.NLB 通过端口为443的侦听器将流量转发到 NetScaler 的 WAF Server 目标组,这个目标组根据目标类型是 IP 地址和端口的健康状态进行检查,同时启用 SSL 证书。端口的地址可以为真实后端服务器可用端口地址(例如管理口IP地址和端口等)。
5.WAF 收到请求后会对流量进行清洗,之后将请求转发给 Citrix NetScaler 的 Citrix Gateway vServer 地址。
6.NetScaler 的 Citrix Gateway vServer 的收到请求后会将用户请求信息发送给 LDAP服务器进行认证,并将结果返回给 StoreFront,StoreFront 同时和后端XenApp服务器交互获取用户的应用访问信息,并通过.ica文件返回终端用户。
注意:StoreFront 里面的配置的 NetScaler 地址会调整为https://ctx.awssample.com:8443
7.终端用户获取到ica文件,并通过 Citrix receiver 发起 SSLProxyHost 为awssample.com:8443的请求到NLB。
8.NLB 将用户请求通过端口为8443的侦听器将流量转发至NetScaler的Citrix vServer的目标组
9.客户端和服务器端建立 ICA 连接。
注:没有GSLB需求的用户可以忽略步骤1和2。
具体实现步骤
为了使读者更加容易理解方案的具体实现,作者对方案中的用户身份验证和ICA连接部分做了详细的测试实践(未进行GSLB测试),测试环境中EC2的配置如下:
Name |
Instance Type |
Private IP Address |
描述 |
Bastion |
t2.large |
10.10.10.150/24 |
跳板机、堡垒机 |
Barracuda WAF |
m4.xlarge |
10.10.1.65/24 |
WAF |
NS |
m4.xlarge |
10.10.1.201/24 10.10.1.200/24 |
NSIP,Citrix Gateway vServer,ADNS(可选) |
AD&CS |
t2.large |
10.10.1.10/24 |
域控制器和证书服务器 |
XenApp VDA |
t2.large |
10.10.1.180/24 |
XenApp VDA |
XenApp Server |
t2.large |
10.10.1.20/24 |
XenApp的服务器,集成CDC、SF、License Server和SQL express |
本文仅对关键配置进行说明,如果对其他配置步骤有任何的疑问,可以联系AWS团队。
NLB 的配置
侦听器的配置:两个协议类型为TLS的侦听器分别运行在443和8443端口。
目标组的配置:使用IP地址做为目标类型,尤其是 NetScaler 对应的目标组,可能会运行多个vServer,对应的IP地址都不一样。
Citrix StoreFront的配置
在创建Store的过程中,根据向导进行配置 Remote Access 的过程需要添加NetScaler Gateway 的信息,如下:
使用文本编辑工具打开.ica文件可以查看对应对应的SSLProxyHost地址,以确保配置正确。
优势和总结
本文中提到的两种方案都非常成熟,在国内外有众多案例,尤其第二个定制化的方案可以完全根据企业上云的不同背景和出发点为依据,满足不同场景的需要。这表现在:
1.尽可能利用现有资源,不增加其他安全设备额外的许可费用或学习成本;
2.数据分流,实现Citrix portal 端的 Web防护能力;
3.所有核心应用资源运行在私有子网,云托管服务部署在公有子网对外提供服务,通过云原生安全服务提升防护能力和可用性。
希望这些方案对各位读者有所帮助。
常见问题
1.是否可以使用 应用负载均衡器ALB 部署在 Citrix NetScaler 前端?
答: 不可以。 终端用户在获取到 ICA 文件后连接应用或桌面使用 Citrix 的私有协议,其建立在 TCP/IP的上层协议,AWS ALB 是七层负载均衡,只支持 HTTP/HTTPS 协议,在用户身份验证通过后无法通过 ICA 文件打开应用或桌面。另外,GSLB的实现主要是通过DNS,是使用的UDP协议,ALB不支持UDP协议。
2.是否可以采用AWS WAF服务?
答: 通常情况下可以。需要注意的是 AWS WAF 只能和 CloudFront和ALB进行集成,因此在以上方案的用户身份认证过程中需要将NLB 转发流量到 ALB 上,之后再由 AWS WAF 进行流量清洗,再转发给 Citrix NetScaler。
3.如果是第三方的 WAF 产品,是否支持?
答: 作者在本方案中使用的是 Barracuda 的 WAF进行测试,其他传统安全厂商的 WAF 产品也都是支持的。 AWS 中国区的Marketplace已经上线超过70种安全服务,包括Imperva、F5、Radware、Fortinet等 (排名不分先后)。
4.Citrix NetScaler自身支持 WAF ,针对 WAF 为何还需要其他产品或服务?
答:Citrix NetScaler 的WAF 是通过session policy的方式可以直接挂载到Citrix Gateway 的 vServer上,但只有特定的Platinum 版本才可以,同时在一些用户的环境中已经使用了其他第三方的 WAF 服务,因此本方案是解决一个特定的安全场景问题。 如果用户是使用Citrix NetScaler的 WAF 功能,则可以以上方案中的步骤4和5,对于用户身份验证的请求,NLB 可以直接转发至Citrix Gateway 的 vServer上,由 vServer 上挂载的WAF session policy来进行流量清洗。
5.如何考虑高可用架构?
答: 建议采用多可用区或多区域的部署方式,通过 Citrix NetScaler 的 GSLB 或者 AWS Route 53 服务来对将用户的请求通过 DNS 解析的方式路由到最近的站点。每个站点使用烟囱式的部署方式,Citrix NetScaler 的HA仅在同一个可用区内,因为Citrix Gateway 的 vServer 的私有 IP 一定要运行在一个Subnet 里,而Subnet无法跨可用区。
6.关于证书有什么值得注意的吗?
答:NLB、WAF及Citrix NetScaler上都需要配置SSL证书。Private key、SSL certificate和root certificate 都是需要的,并且需要使用PEM格式。