亚马逊AWS官方博客
通过 AWS Network Firewall 实现东西向资源和服务的有效防护
摘要
AWS在2020年底的Re:Invent大会上发布了新的安全产品的管理服务Network Firewall(网络防火墙),客户可以通过使用它来对外网进行隔离(也叫南北向),也可以用于内网之间进行隔离(也叫东西向,如同一个区域的不同VPC之间,不同区域的不同VPC之间,云和IDC之间等),实现基于规则的检测和防护。
它支持有状态的规则,也支持无状态的规则,可以灵活的配置。为了让客户更加快速的理解和使用Network Firewall,我们撰写了本系列文章。
在第一篇中,主要介绍Network Firewall的基本概念以及南北向防护的配置例子,并提供对应的CloudFormation模板让用户实现动手操作,更好的理解Network Firewall的架构设计和场景设计。
在第二篇中,将介绍基于云上的多区域互联的东西向防护,帮助客户基于Network Firewall的构建全方位的云上网络防护。
在第三篇中,将介绍在混合云环境下,本地IDC和云上资源如何协作并在防火墙的监管下的实现检测和保护下的互通。
本文为本系列的第二篇。
关键字
Network,Firewall,TGW,防火墙,网络防火墙,规则,规则组,中转网关,南北向,东西向,混合云,混合网络
架构设计
这是我们设计的客户常见的混合云网络架构图,云上环境的内网和外网(南北向)有网络防火墙隔离;云上环境区域/VPC之间,云上环境和私有IDC环境之间(东西向)有网络防火墙隔离;私有IDC环境的防火墙由客户的基础架构确定,不在此架构设计中。
图例:全球一张网架构
在东西向防护的架构设计中,我们引入了一个全新的VPC专门用于防火墙规则和数据包检测(简单理解为Inspect VPC,或者NFW VPC),完成内网数据校验,如下图所示(以us-east-1为例,Inspect VPC为iad-vpc1,所有的内网数据都先通过它的规则校验)。
图例:同区域内不同VPC互联架构
要正常使用如上图所示的内网检测架构,除了防火墙专用VPC外,还需要使用一个新的组件叫Transit Gateway(中转网关),通过它来实现多个VPC的互联(在此之前,我们可以可以通过VPC Peering实现互联,但是那是1:1的网络方式,这是星型的方式)。
其他的需要互相通讯的VPC都叫Spoke VPC(后续本系列文档第三篇的VPN客户端也加入这个群组),除了防火墙配置外,中转网关(TGW)的路由配置,是我们本篇文章的重点内容之一。
环境部署
此处我们使用本系列文章的第一篇《(一)通过AWS Network Firewall实现南北向资源和服务的有效防护》部署的环境,具体操作细节请参考那一篇文档。
具体的环境部署和确认,本篇内容不再赘述,确保操作过程没有跳着文档做,也确保部署和交付过程没有任何错误即可满足本篇的条件。
配置内网间的东西向防护
此处我们分两个步骤配置云上区域/VPC的内部防火墙,先配置同一个区域的多个VPC互相通讯,再配置跨区域的多个VPC互相通讯,并测试防火墙的规则是否和预期一致。
同区域内的东西向防护
我们以弗吉尼亚北部区域的vpc2和vpc3互通为例配置同区域内的路由和防火墙配置。
在如下的图例中,iad-vpc1被称为Inspect VPC或NFW VPC,iad-vpc2和iad-vpc3被称为Spoke VPC。在Spoke VPC的pub网段和pri网段的实例需要互通(注意,此处不是说同一个VPC的两个子网),又需要接受网络防火墙的监管,此时直接的VPC Peering就行不通了,必须先把流量转发到TGW上,然后再通过TGW转发到NFW VPC检测流量,接着再返回。
图例:同区域内不同VPC互联架构(含路由表,iad-vpc2除外)
配置Spoke VPC内部的路由表
A.我们先配置iad-vpc3内的路由表;
打开VPC的路由表的控制台(点击这里),选中“vpc3-rtb-pub”(公有子网的路由表),编辑它,添加到vpc2的路由走TGW,如下图红框所示:
图例:编辑vpc3-rtb-pub的路由表
选中“vpc3-rtb-pri”(私有子网的路由表),编辑它,添加到vpc2的路由走TGW(操作方式和内容同上,不再重复截图);
选中“vpc3-rtb-tgw”(tgw子网的路由表),添加0.0.0.0/0的路由到TGW,如下:
图例:编辑vpc3-rtb-tgw的路由表
B.接下来配置iad-vpc2内的路由表,目的地换成vpc3,对应都走TGW,配置方式请参考上面章节,不再重复描述和截图展示;
配置Inspect VPC内部的路由表
选中“vpc1-rtb-tgw”,编辑它的路由表,添加0.0.0.0/0的路由到Network Firewall的vpce,如下图红框所示:
图例:编辑vpc1-rtb-tgw的路由表
选中“vpc1-rtb-fw”,编辑它的路由表,添加0.0.0.0/0的路由到TGW,此处不再截图展示。
注意:这两个路由表的路由刚好相反,Firewall的0.0.0.0/0发给TGW,TGW的0.0.0.0/0发给Firewall,在这个过程中完成流量数据包的校验(匹配规则)。
配置TGW的路由表
打开VPC中TGW的路由表页面(点击这里),选中“rtb-spoke”,在下面的Tab页面中选择“Route”,然后选择“Create static route”,添加0.0.0.0/0的路由到iad-vpc1的attachment(默认把所有流量都走防火墙的VPC,即iad-vpc1)。
图例:配置TGW的Spoke VPC 的默认路由
选中“rtb-nfw”,添加如下图所示的4条静态路由(注意,这是回城路由,Spoke VPC 有多少个子网就需要添加多少条,例如本系列第三篇还会添加VPN的路由部分),分别指向iad-vpc2的attachment(10.11.10.0/24和10.11.20.0/24)和iad-vpc3的attachment(10.12.10.0/24和10.12.20.0/24)。
图例:配置TGW的Inspect VPC的路由表
测试验证
登录iad-vpc2或者iad-vpc3里面的EC2做个ping的测试(因为我们内网是放开ping的)。
图例:登录vpc2的pub子网的EC2来ping位于vpc3的pri子网的EC2
注意:请用同样的方式配置俄勒冈区域的区域内VPC东西向互联和网络防火墙配置,推荐配置顺序如下(这是一个需要细心配置和核对的步骤):
A.配置pdx-vpc2和pdx-vpc3的路由表(包括pub子网和pri子网);
B.配置Inspect VPC(pdx-vpc1)的路由表(包括tgw子网和fw子网);
C.配置pdx-tgw的路由表(包括Spoke和nfw两个路由表);
配置完毕后,也建议做个ping的测试,确保环境配置正确,方便后续的测试(注意机器内网IP和弗吉尼亚北部区域的差别):
图例:登录vpc2的pub子网的EC2来ping位于vpc3的pri子网的EC2
跨区域间的东西向防护
跨区域的互联比区域内要复杂一些,它需要配置TGW互联,并配置对应路由传递才可实现。部署架构如下图所示(示例):
图例:跨区域的VPC通过TGW互联并接受Network Firewall监管
如上图所描述,我们以位于us-east-1里面的一个EC2访问位于us-west-2里面的一个EC2为例,它的数据包会经过约26个路由跳数才完成一个循环(此处我们配置了所有东西向的进出流量0.0.0.0/0都走防火墙的路由规则所以才会导致连续两次进出防火墙,其最佳实践在本系列第三篇将单独讨论)。
其他注意事项:
A.我们在两边的区域都配置了防火墙,如果仅仅是为了内网网络安全使用,其实配置一端就可以了;
B.两边都配置的好处是不需要流量牵引,双方松耦合,路由可以灵活定义,且无额外牵引流量费用产生;
C.两边都配置的坏处在于,放通策略的时候必须都配置(不仅是出去的路由,回来的路由也需要全部成对的配置),否则链路会不通(有一个点没通,就整个通不了);
D.在有网络和数字合规性要求的地方往往要求单独配置;
配置TGW Peering
打开弗吉尼亚北部区域的TGW控制台的Attachments配置页面(点击这里),选择“Create Transit Gateway Attachment”,然后配置TGW Peering(其中第一个红框是类型(选Peering),第二个红框选择Peering对方俄勒冈区域以及对应的TGW的id,这个需要复制并手工输入(注意,他支持跨账号的TGW Peering),参考配置如下:
图例:创建TGW Peering
大概需要2分钟,创建成功后会进入到等待接受的状态,此时我们切换到俄勒冈区域的TGW Attachments的页面(点击这里),选中等待中的TGW Peering的请求,然后选择“Actions”里面的“Accept”并确认即可(在创建TGW时有个选项,可以设置默认自动接受对等连接请求)。
配置TGW Peering路由
TGW的Peering连接创建成功后,打开弗吉尼亚北部区域VPC中TGW的路由表页面(点击这里),选中“rtb-spoke”,在下面的Tab页面中选择“Associations”,然后选择“Create association”,把刚才创建的TGW Peering添加进来(因为这个路由表的所有路由都指向了NFW attachment,所以添加了以后不需要修改其他对应路由)。
选中“rtb-nfw”,添加如下图所示的红框中的2条静态路由,指向TGW Peering的attachment(依次添加10.21.0.0/16和10.22.0.0/16两条,这是回城路由)。
图例:创建TGW Peering 的路由
图例:配置完毕的IAD TGW NFW路由
切换到俄勒冈区域的TGW的路由表页面(点击这里),先选中“rtb-spoke”,先关联新创建的TGW Peering和路由表,然后再选中“rtb-nfw”,添加2条静态路由,指向TGW Peering的attachment(依次添加10.11.0.0/16和10.12.0.0/16两条)。
图例:配置完毕的PDX TGW NFW路由
配置Spoke VPC内部的路由表
进入到弗吉尼亚北部区域(us-east-1)的VPC的路由表页面(点击这里),配置对应的iad-vpc2和iad-vpc3的各个子网的路由表,不再截图赘述,参考如下表格即可。
区域 | Route Table | Destination | Target | 备注 |
IAD | vpc2-rtb-pub | 10.21.0.0/16 | tgw_id | |
vpc2-rtb-pub | 10.22.0.0/16 | tgw_id | ||
vpc2-rtb-pri | 10.21.0.0/16 | tgw_id | ||
vpc2-rtb-pri | 10.22.0.0/16 | tgw_id | ||
vpc3-rtb-pub | 10.21.0.0/16 | tgw_id | ||
vpc3-rtb-pub | 10.22.0.0/16 | tgw_id | ||
vpc3-rtb-pri | 10.21.0.0/16 | tgw_id | ||
vpc3-rtb-pri | 10.22.0.0/16 | tgw_id |
进入到俄勒冈区域(us-west-2)的VPC的路由表页面(点击这里),配置对应的pdx-vpc2和pdx-vpc3的各个子网的路由表,不再截图赘述,参考如下表格即可。
区域 | Route Table | Destination | Target | 备注 |
PDX | vpc2-rtb-pub | 10.11.0.0/16 | tgw_id | |
vpc2-rtb-pub | 10.12.0.0/16 | tgw_id | ||
vpc2-rtb-pri | 10.11.0.0/16 | tgw_id | ||
vpc2-rtb-pri | 10.12.0.0/16 | tgw_id | ||
vpc3-rtb-pub | 10.11.0.0/16 | tgw_id | ||
vpc3-rtb-pub | 10.12.0.0/16 | tgw_id | ||
vpc3-rtb-pri | 10.11.0.0/16 | tgw_id | ||
vpc3-rtb-pri | 10.12.0.0/16 | tgw_id |
因为NFW的路由表和TGW的路由表都是默认0.0.0.0/0的方式配置的,所以此处不用修改,如果不是这种配置,则还需要修改对应的内网防火墙VPC(分别对应iad-vpc1和pdx-vpc1的tgw子网路由和fw子网路由)。
测试验证
此时可以登录iad-vpc2/3里面的EC2,然后ping pdx-vpc2/3里面的EC2的内网地址做个ping的测试(因为我们内网是放开ping的,而ssh没有放开)即可看到内网跨区域的网络防火墙策略生效后的效果。
图例:防火墙规则验证性测试(注意不同的内网IP)
实验做到这里,我们就已经配置好云上环境的内外网隔离(南北向)和区域内部/跨区域之间隔离(东西向)的配置并验证过,和我们的预期完全一致。
在本系列的第三篇文章,我们将介绍如何跟本地的IDC集成(此处我们使用了SIN区域并使用VPN做模拟),以及在云上使用Network Firewall的最佳实践和讨论。
扩展阅读
请参考本系列的第一篇《(一)通过AWS Network Firewall实现南北向资源和服务的有效防护》
请参考本系列的第三篇《(三)通过AWS Network Firewall实现混合云环境下资源和服务的有效防护》
参考文档
1.Network Firewall官方文档:
2.Network Firewall部署架构设计:
3.Transit Gateway官方文档:
https://docs.thinkwithwp.com/zh_cn/vpc/latest/tgw/what-is-transit-gateway.html
4.VPC官方文档:
https://docs.thinkwithwp.com/zh_cn/vpc/latest/userguide/what-is-amazon-vpc.html