网络安全架构设计案例

手动构建经典三层网络架构

Resource map

本文将指引完成以下操作:

  • 创建一个新的VPC;

  • 创建6个子网,2个公有的,4个私有的,跨2个可用区;

  • 创建和配置一个IGW,2个NAT网关,一个ELB;

  • 创建和配置新的路由表,安全组和NACLs;

创建VPC

按照以下操作来创建一个VPC:

  1. 进入AWS的控制台,选择VPC服务;

  2. 在控制台找到【Create VPC】,点击后开始创建VPC;

  3. 选择VPC and more可以快速创建所需要的资源;

  4. Auto-generate填写自定义的项目名称,比如“my-app”;

  5. IPv4 CIDR block填写需要的网段和范围;

  6. Number of Availability Zones (AZs)建议选择2个,可以互为主备;

  7. Number of public subnets建议选择2个,可以作为DMZ安全区用于访问私有子网里面的资源;

  8. Number of private subnets建议选择4个,2个作为应用层放应用服务器,2个作为数据库层,放数据库资源,比如RDS。

  9. NAT gateways ($)建议创建1个,这样服务器可以访问公网安装补丁,但是无法被公网的攻击者远程攻击。

  10. VPC endpoints如果还需要调用S3建议选择“S3 Gateway”

删除默认安全组的入站和出站规则

由于默认安全组容易被攻击者利用,因此建议删除默认安全组的入站和出站规则。

  1. 找到Security Groups;

  2. 勾选默认安全组,下方选择“Inbound rules”, 勾选所有的rules,点击【Edit inbound rules】

  3. 点击【delete】删除规则,然后点击【save rules】

类似的,删除出站规则:

  1. 找到Security Groups;

  2. 勾选默认安全组,下方选择“Outbound rules”,勾选所有的rules,点击【Edit outbound rules】;

  3. 点击【delete】删除规则,然后点击【save rules】。

添加自定义安全组

给每一个子网都添加一个新的自定义安全组,比如:

private1的安全组

private1是us-east-1a这个AZ下的私有子网,应该只允许public1里的资源访问,并且可以访问private2也就是数据库层中的数据。因此配置的时候添加自定义的安全组,比如:指定入站时通过22端口执行SSH连接的只能是public1的网段,80和443端口设置为NAT网关的网段。

出站规则可以指定应用层的资源允许访问数据库层的资源,其余出站不允许。

添加公有子网的NACL

进入控制台VPC,找到菜单中的Network ACLs。然后点击【Create network ACL】:

  1. Name填写“public-NACL”,表示给公有子网使用;

  2. VPC选择我们刚才创建好的VPC;

  3. 点击确认保存后退出;

  4. 选择刚才创建的NACL,【Edit subnet associations】,勾选公有子网,然后点击【save changes】。

  5. 然后【Edit inbound rules】,配置参见截图,其中22端口的访问来源设置为你们公司的IP网段:

inbound rules
  1. 【Edit outbound rules】,Rule number填写“100”, Type选择“All traffic”, Destination填写“0.0.0.0/0”, Allow,表示允许任意出站流量。如果有特殊的管控要求可以根据要求进行配置。点击【Save changes】保存退出。

添加私有子网的NACL-应用层

配置应用层的私有子网NACL和private1和private2关联。

配置的规则和私有子网中安全组的一样,比如:指定入站时通过任意TCP端口发起连接的只能是public1和public2的网段,80和443端口设置为NAT网关的网段。

同样,出站规则可以指定应用层的资源允许访问数据库层的资源也就是private3和private4,其余出站不允许。

添加私有子网的NACL-数据库层

配置应用层的私有子网NACL和private3和private4关联。

配置的规则和私有子网中安全组的一样,比如:指定入站时通过22端口发起连接的只能是private1和private2的网段。

同样,出站规则可以指定数据库层的资源允许访问应用层的资源也就是private1和private2,其余出站不允许。

添加EC2到private1和private2的私有子网中,选择添加好的安全组

VPC、私有子网、安全组都创建好以后就可以开始创建资源了。现在创建EC2实例到私有子网中,以创建实例到private1私有子网为例,步骤如下:

  1. 选择AMI镜像,比如Amazon Linux AMI;

  2. 选择实例类型,比如t2.micro;

  3. 创建key pair;

  4. 编辑VPC,选择刚才创建好的VPC,选择子网private1,选择已有的安全组;

  5. 其余按照需求进行配置;

  6. 点击【launch instance】完成EC2实例的创建。

参考资料

[AWS articles]High Availability for Amazon VPC NAT Instances: An Example

[AWS articles] What is Amazon VPC?

[whitepaper] Building a Scalable and Secure Multi-VPC AWS Network Infrastructure

最后更新于