亚马逊AWS官方博客
利用 AWS Network Firewall 实现 WorkSpaces 的流量控制
1 背景
Amazon WorkSpaces 是一种完全托管的桌面即服务(DaaS),以安全性和简单性为优先考虑。客户可以通过多种方式保护其 Amazon WorkSpaces 部署的安全性。安全组和网络访问控制列表可用于客户的虚拟专用云(VPC),但在实际的使用场景中客户通常希望扩展网络安全控制以防止已知的风险。例如,为会话中的 Web 浏览启用域名过滤以减轻恶意软件的影响。要实现 4 层之上的网络安全控制可以通过两种方法之一来实现这一点。一种方法是将互联网流量路由到其本地防火墙进行检查。或者在 AWS Marketplace 上使用等效的防火墙服务,这些方法可能会增加复杂性和时间,阻碍了 WorkSpaces 项目启动。AWS Network Firewall 是 AWS 提供的云原生的网络安全服务,可以为 WorkSpaces 提供此类过滤和检查并降低许可证成本。
AWS Network Firewall 是一项托管服务,它具有第 7 层入侵预防系统(IPS)规则,并具有应用 TLS 指纹识别以防止伪造 IP 或 FQDN 的能力。通过在路由级别提供有状态和无状态规则,从 OSI 模型的第 3 到第 7 层,扩展了保护范围,超出了 SG 和 NACL 级别的保护。
它使用证书完全限定域名(FQDN)或服务器名称指示(SNI)来确定是否允许 HTTPS 流量的网站,这是 WorkSpaces 客户经常提出的安全要求。本文将详细介绍如何使用 AWS Network Firewall 实现 WorkSpaces 的流量控制。
2 前提条件
本文演示 Network Firewall 的前提需要提前规划和部署一套 Workspaces 的运行环境,并确保 Workspaces 可以正常访问互联网。为简化演示,本文将创建一个 VPC,在一个可用区内完成 Workspaces 的环境构建。
1、创建一个 VPC,CIDR 块 192.168.0.0/16。在一个可用区内创建 1 个公有子网,网段 192.168.128.0/20,用于部署 workspaces,完成路由表配置,详情如下图所示。
2、完成活动目录创建,并将目录注册在公有子网,并启用互联网访问权限,如下图所示。
3、创建一个 WorkSpaces,用于后续的网络控制测试。
3 Network Firewall 详细配置
3.1 网络设计
本文设计中,Amazon WorkSpaces 部署在单个 VPC 中。VPC 的一个可用区内包含 2 个公有子网,其中 1 个公有子网用于部署 WorkSpaces,另一个公有子网用于部署 AWS Network Firewall 的 endpoint,因此我们需要将已有的 VPC 网络设计进行如下修改。
- 在 AZ1 增加 1 个公有子网。
- 将 Network Firewall 的 endpoint 部署在新增的公有子网。
- 修改 Workspaces 公有子网的路由,指向新增公有子网中的 Network Firewall 的终端节点 vpce-0750。
- 增加一个 IGW 回程的路由表。168.128.0/20 指向 Firewall 的 endpoint,vpce-0750。
3.2 配置过程
Network Firewall 包含如下核心组件。
- 防火墙 — 防火墙将要保护的 VPC 与防火墙策略中定义的保护行为相连。对于要保护的每个可用区,您可以为网络防火墙提供专用于防火墙终端节点的公有子网。要使用防火墙,您需要更新 VPC 路由表,以通过防火墙终端节点发送传入和传出流量。
- 防火墙策略 — 防火墙策略定义防火墙在一系列无状态和有状态规则组和其他设置中的防火墙行为。您只能将每个防火墙与一个防火墙策略相关联,但可以将防火墙策略用于多个防火墙。
- 规则组 — 规则组是定义如何检查和处理网络流量的无状态或有状态规则的集合。规则配置包括 5 元组和域名筛选。您还可以使用 Suricata 开源规则规范提供有状态规则。
3.2.1 创建防火墙
您可以在 AWS 管理控制台、AWS 命令行界面 (CLI) 用于创建和管理防火墙。在 VPC console(VPC 控制台)的导航窗格中,展开 AWS Network Firewall,然后选择在 Firewalls(防火墙)菜单中Create firewall(创建防火墙)。
首先选择我们已经部署 Workspaces 的 VPC,并选择 Firewall 的子网为 VPC 中新建的公有子网,如下图所示。
关联防火墙策略处选择新创建一个空的策略,名称为 deny-some-website。然后点击屏幕最下端的创建防火墙。
等待 5 分钟左右防火墙状态完成。接下来还需要两个步骤完成防火墙的配置,配置防火墙策略和修改 VPC 的路由表,见下图。
详细信息中记录下 Firewall 的 endpoint,在后续配置路由表时需要用到。
3.2.2 配置防火墙策略
点击已经创建的空防火墙策略进行编辑。
防火墙策略中包含有状态和无状态规则组,本文的目标是阻止 WorkSpaces 访问特定的 website,因此需要创建一个有状态规则组。
Domain list 中填入需要控制访问的域名,例如.youtube.com。action 处选择 deny,见下图。
创建规则组之后,返回防火墙策略界面,显示见下图。
3.2.3 配置路由表
完成了防火墙创建和防火墙策略的配置之后,我们需要修改和配置路由表使防火墙规则对 WorkSpaces 生效。本文中需要配置 3 个路由表见下图。
每个路由表的详细配置如下:
注意:需要在该路由表中配置边缘关联
按照上述修改配置路由表之后,Workspaces 的网络访问流量将经过 Network Firewall 并受其防火墙规则控制。
3.3 扩展配置
在实际的生产环境中,网络设计考虑访问安全将更加全面,通常会将 Workspaces 部署在私有子网,利用 NAT 实现互联网访问。高可用方面往往将 Workspaces 部署在 2 个可用区实现 HA 保护。因此下面将给出更符合实际使用场景的网络架构设计。
- 分别在 AZ1 和 AZ2 的两个私有子网部署 Workspaces,网段分别为 168.128.0/20 和 192.168.144.0/20。WS 路由表的 0.0.0.0/0 指向相同 AZ 的 NAT。
- NAT 的路由表 0.0.0/0 指向相同 AZ 的 Firewall 子网的 Endpoint,vpce-1xxx 和 vpce-2xxx。
- Firewall 的路由表 0.0.0/0 指向 VPC 的 IGW。
- IGW 的路由表需要增加 2 条路由,分别是 168.128.0/20 指向 vpce-1xxx,192.168.144.0/20 指向 vpce-2xxx。
4 测试效果
我们使用 Workspaces Client 登陆已经创建好的 workspaces,输入用户名和密码后登陆到 windows 界面。
在桌面上我们使用 Firefox 浏览器进行测试,清除浏览器的缓存,新建无痕模式窗口。按照前面防火墙规则的配置,我们禁止使用 Workspaces 访问 youtube.com 网站,其它网站可以访问,接下来看看实际的访问效果。
输入域名 thinkwithwp.com,我们看到可以正常访问 AWS 的官网。
输入 www.youtube.com,我们看到该域名禁止访问。因此通过浏览器域名访问效果证明我们在 Network Firewall 中的防火墙规则配置已经生效。
我们登录 AWS console,进入 Network Firewall 的配置,点击监控。
通过监控可以清晰的看到防火墙的工作情况,例如有状态数据包有多少被 pass 或者 drop。
5 结论
AWS Network Firewall 提供了一种云原生解决方案,客户完全可以不使用传统硬件防火墙厂商的解决方案实现其云上 Workspaces 的网络安全访问控制,加速其本地桌面环境向 AWS WorkSpaces 的迁移。如前所述,本文设计示例是单 VPC 防火墙管理的起点,在实际使用场景中客户可能使用多 VPC 的防火墙集中管理方式,篇幅限制未包含这部分内容的设计和演示。
6 参考文档
- Network Firewall 官方文档
- Network Firewall 部署架构设计:
- AWS Network Firewall Workshop(在线实验手册):
https://networkfirewall.workshop.aws
- 快速上手 Amazon WorkSpaces 云中的虚拟桌面: