通过修改NAT Gateway所在子网的NACL实现限制Workspaces的外网访问

本文描述了如何对Workspaces的外部网络访问行为进行限制,例如用户希望关闭单个桌面的互联网访问,而不影响其他桌面访问互联网的场景。

一、背景

Workspaces的网络管控能力分两种场景:

1、使用默认的VPC运行Workspaces。

此时可以在AWS Managed AD托管的域控制器的设置中找到名为Allow Internet的选项。开启这个选项,Workspaces将可以访问互联网的资源。关闭这个选项,则Workspaces没有访问互联网的资源。

注意:

  • 本选项只针对使用默认VPC时候,Workspaces都为于Public Subnet有效;
  • 此选项对本域控制器下所有Workspaces有效,不能独立控制。

2、使用自定义的Private Subnet运行Workspaces。

此时需要注意:

  • 在AWS Managed AD托管的域控制器的设置中名为Allow Internet的选项无效;
  • 无论是否打开这个选项,Workspaces都是通过本VPC的NAT Gateway对互联网访问。

因此,为了限制外网,可以修改NAT Gateway所在子网的NACL实现限制Workspaces的外网访问。

3、扩展更细致化的管控

如果需要更多管控场景,例如按照域名进行策略管控、按照源地址、目标地址进行更细致管控,则建议使用Network Firewall或者Gateway Load Balancer搭配第三方NGFW AMI进行管控。

本文仅描述上述三个场景的场景二。

二、创建含有Private Subnet和NAT Gateway的VPC

在创建Workspaces之前,需要先规划好网络,创建VPC并确保VPC是包含Public Subnet、Private Subnet和NAT Gateway。这个步骤在新版的创建VPC界面已经被高度简化,跟随向导提示即可完成创建。如下截图。

按照以上步骤,即可自动创建出一个新的VPC,并满足以下特点:

  • 包含Public Subnet和Private Subnet
  • Public Subnet内有NAT Gateway,且绑定EIP
  • Public Subnet的路由表默认下一跳0.0.0.0/0被指向Internet Gateway
  • Private Subnet内有Workspaces
  • Private Subnet的路由表默认下一跳0.0.0.0/0被指向NAT Gateway

在以上网络环境下,创建Workspaces时候选择所处位置在Private Subnet,即可满足本文后续管控条件。

三、修改Network ACL

1、查看要限制的Workspaces的内网IP

登录到Workspaces,查询本机的VPC内网IP。Windows系统可运行ipconfig,Linux系统可运行ifconfig查看VPC内网IP。如下截图。

由此可看到,IP地址172.31.101.217就是本机的VPC内网IP。

2、修改NACL

进入VPC服务,找到左侧的Network ACL菜单,找到NAT Gateway所在的Public Subnet对应的Network ACL,点击编辑按钮。如下截图。

新插入一行,在Rule number的位置输入数字90,数字要小于默认的规则100,例如填写为90,也可以不填写为整数,例如填写89;在类型Type的位置选择All traffic表示所有流量;在来源Source位置填写要管控的云桌面的VPC内网IP例如172.31.101.217/32;最后在行为位置选择Deny。最后点击保存修改。如下截图。

保存修改完毕后,可以看到Network ACL界面增加了新的一条规则。如下截图。

Network ACL配置完成。

3、验证访问

为了验证新的规则生效,此时可以在被限制的Workspaces上测试对外网的访问。经测试Ping和浏览器都无法打开外部网络。如下截图。

与此同时,本桌面对VPC内处于同位于Private Subnet子网的其他EC2还是有访问权限的,只是NAT所在子网限制了其路由。由此即可实现限制外网。

4、额外放行EFS服务(可选)

在以上基础上,如果当前桌面正在使用EFS文件服务,还需要在上文基础上再增加一条允许EFS服务。如下截图。

全文完。