在 AWS 上建立一个内外网分离的生产环境,可以减少应用服务的暴露面,有效的保证你的应用服务器的安全。通常我们会将web应用放在外网的子网内,数据库服务器等放在内网的子网。我们将按照下图来部署动手实践环境,实现在public subnet的EC2虚拟机可以直接通过互联网可以访问,在Private subnet的EC2虚拟机不能通过互联网直接访问,但是却可以在内部来访问互联网安装应用等等。
下面是动手实践详细的操作步骤:
如果没有AWS的实验账号,请大家参考下面链接免费申请:
想学习云计算么?教你如何免费白嫖微软和AWS的云资源一年_免费使用azure一年-CSDN博客
一、创建VPC
- 在AWS管理控制台中,找到并选择"VPC"服务。点击"创建VPC",输入VPC的名称,选择一个合适的IPv4 CIDR块。例如,
10.0.0.0/16
。然后选择右下角的 Create VPC按钮创建
二、配置互联网网关
创建互联网网关并将其附加到 VPC,以允许公有子网中的资源访问互联网。
选择mytest-vpc,附加网关
三、公共子网(用于Web服务器)
VPC内创建一个子网,选择之前创建的VPC,分配一个CIDR块,例如10.0.1.0/24
。
如下图:在AWS Console VPC的左边菜单栏,选择Subnets 菜单,然后在右上角选择Create Subnet
在Subnet创建的界面中,选择刚才创建的VPC mytest-vpc
输入子网的名称 public-subnet1, 子网CIDR 10.0.1.0/24,然后选择"create subnet"
四、私有子网(用于内部资源)
- 重复创建子网的步骤来创建另一个子网,用于内部资源,选择相同的VPC,分配一个不同的CIDR块,例如
10.0.2.0/24
。创建完成后,我们有两个子网在VPC内
五、NAT 网关
在公有子网中创建 NAT 网关,以允许私有子网中的资源访问互联网。
如下图,选择public-subnet,然后分配IP地址,
六、配置路由表
创建两个路由表,一个用于公有子网,另一个用于私有子网。公有子网路由表应包含到互联网网关的路由,私有子网路由表应包含到 NAT 网关的路由。
1、创建public-subnet的路由表
在AWS Console 的VPC找到左侧菜单的Route Table 菜单项目,然后选择Create routes
路由表创建完毕后,选择Edit Route table,增加一条指向0.0.0.0/0的指向互联网的路由,如下图:
选择子网关联(Subnet associations)TAB页,然后选择 "Edit subnet associations"
在Available subnets 中选择public-subnet1,然后选择save associations
2、创建private-subnet的路由表
在AWS Console 的VPC找到左侧菜单的Route Table 菜单项目,然后选择Create routes
创建完毕后选择编辑路由表,然后增加一条指向互联网0.0.0.0/0的路由,Target选择NAT Gateway,然后选择保存,如下图:
创建路由表的子网关联,如下图:选择"Edit subnet associations" 按钮
在Available subnets选择 private-subnet1,如下图
七、分别在public subnet和private subnet 创建EC2虚拟机
1、在public subnet 创建EC2虚拟机
如下图:选择免费的t2.micro linux 实例.选择之前创建好的VPC,选择自动分配公有IP,
2、在Private subnet 创建EC2虚拟机
如下图:选择免费的t2.micro linux 实例.选择之前创建好的VPC,选择禁用自动分配公有IP,
- 创建安全组以控制对 EC2 实例的入站和出站流量。
- 为公有实例和私有实例创建单独的安全组。
八、访问两个不同的EC2进行测试
选择public subnet的EC2实例,通过Putty来访问EC2实例,是可以访问的。
由于Private subnet上的EC2实例只有私网地址,所以是无法直接通过Putty 通过internet直接访问的,我们在public subnet上的这台主机来访问 private subnet 上的EC2实例。
首先上传.pem 文件到 public subnet上的EC2 实例,然后用ssh 命令来访问
找到private subnet ec2实例的连接信息,如下图:
拷贝实例连接命令行:
结果如下图:登录到private subnet 的EC2虚拟机上在内部是可以访问internet的。
通过这种设置,公有 EC2 实例可以直接访问互联网,而私有实例则只能通过 NAT 网关访问互联网。所有对外的流量都必须经过公有实例(如 Web 服务器或负载均衡器)。这样可以增强安全性,因为私有实例不直接暴露在互联网上。
需要注意的是,还需要根据具体需求配置安全组规则、路由表以及其他 AWS 服务(如 RDS、ElastiCache 等)。此外,还应考虑使用 AWS 的其他安全服务,如 AWS WAF、AWS Shield 等,以提高整体安全性。