在 AWS 上建立一个内外网分离的生产环境,可以减少应用服务的暴露面,有效的保证你的应用服务器的安全。通常我们会将web应用放在外网的子网内,数据库服务器等放在内网的子网。我们将按照下图来部署动手实践环境,实现在public subnet的EC2虚拟机可以直接通过互联网可以访问,在Private subnet的EC2虚拟机不能通过互联网直接访问,但是却可以在内部来访问互联网安装应用等等。

下面是动手实践详细的操作步骤:

如果没有AWS的实验账号,请大家参考下面链接免费申请:

想学习云计算么?教你如何免费白嫖微软和AWS的云资源一年_免费使用azure一年-CSDN博客

一、创建VPC

  1. 在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 等,以提高整体安全性。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐