如何在自定义VPC中安全启动EC2实例
在自定义VPC中启动EC2实例,包含公有和私有子网、路由表、安全组以及安全的访问路径。
如何在自定义VPC中安全启动EC2实例
在默认VPC中启动Amazon EC2实例速度很快,但往往无法满足生产或预发布环境所需的控制力。自定义VPC允许您选择地址范围、划分公有和私有子网,并精确决定哪些路径可以访问互联网。
本指南展示了一种实用的安全布局:用于负载均衡器或堡垒机的公有子网、用于应用程序实例的私有子网、匹配这些角色的路由表,以及仅允许必要流量的安全组。
理解安全VPC的核心组件
虚拟私有云(VPC)是所有安全AWS网络的基础。在启动实例之前,必须确保以下组件正确配置:
- VPC:网络的主要容器,定义私有IP地址范围(CIDR块)。
- 子网:VPC内的划分,分为公有子网(可直接访问互联网)和私有子网(隔离)。
- 互联网网关(IGW):公有子网中的资源与互联网通信所需。
- 路由表:决定子网网络流量去向的规则。
- 安全组(SG):在实例级别控制入站和出站流量的有状态防火墙。
第一步:创建自定义VPC和子网
我们首先创建网络容器,并将其划分为功能区域。对于标准设置,建议至少有一个公有子网和一个私有子网。
1.1 创建VPC
创建VPC时,选择一个不与将来可能连接的任何本地网络(例如,使用AWS VPN或Direct Connect)重叠的私有CIDR块。
示例VPC CIDR: 10.0.0.0/16
1.2 创建子网
每个子网位于一个可用区(AZ)中。生产VPC通常至少在两个AZ中使用匹配的公有和私有子网,但本示例保持布局简单,在us-east-1a中设置一个公有子网和一个私有子网。
- 公有子网:
10.0.1.0/24(用于堡垒机或负载均衡器) - 私有子网:
10.0.2.0/24(用于应用服务器和数据库)
第二步:配置互联网连接和路由
私有子网中的资源不应直接访问互联网。公有子网中的资源必须正确路由,通过互联网网关(IGW)访问互联网。
2.1 附加互联网网关(IGW)
- 在AWS控制台中创建一个IGW资源。
- 将此IGW附加到您新创建的VPC。
2.2 配置路由表
路由表定义流量路径。您至少需要两个:一个用于公有子网,一个用于私有子网。
公有路由表
此表将所有非本地流量(0.0.0.0/0)导向附加的互联网网关。
| 目标 | 目标 |
|---|---|
10.0.0.0/16(VPC CIDR) |
local |
0.0.0.0/0 |
igw-xxxxxxxx(您的IGW ID) |
将此路由表与您的公有子网(10.0.1.0/24)关联。
私有路由表
此表仅允许内部通信。关键的是,它不应有指向IGW的路由。
| 目标 | 目标 |
|---|---|
10.0.0.0/16(VPC CIDR) |
local |
将此路由表与您的私有子网(10.0.2.0/24)关联。
最佳实践: 如果私有子网中的资源需要下载补丁或更新,您应该使用放置在公有子网中的NAT网关。私有路由表随后应将
0.0.0.0/0流量指向NAT网关,而不是IGW。
第三步:定义严格的安全组规则
安全组(SG)充当EC2实例的虚拟防火墙。它们在实例级别运行,并且是有状态的(返回流量自动允许)。
对于安全设置,您应遵循最小权限原则,明确只允许必要的入站流量。
Web服务器(私有子网)的安全组示例
如果此EC2实例是仅可从公有子网中的应用负载均衡器(ALB)访问的应用服务器,则规则应高度限制:
入站规则
| 类型 | 协议 | 端口范围 | 源 |
|---|---|---|---|
| HTTP | TCP | 80 | ALB的安全组ID |
| HTTPS | TCP | 443 | ALB的安全组ID |
| SSH | TCP | 22 | 公司网络的IP范围或堡垒机安全组ID |
出站规则
默认情况下,出站流量通常允许到所有目的地(0.0.0.0/0)。如果需要,您可以进一步限制(例如,仅允许连接到RDS实例的安全组)。
安全提示: 切勿在面向公众的安全组上将
0.0.0.0/0分配给端口22(SSH)或端口3389(RDP)。始终将管理访问限制为已知的内部IP范围。
第四步:安全启动EC2实例
启动实例时,确保将其映射到上述正确的网络组件。
- 选择AMI和实例类型: 选择所需的Amazon机器映像(AMI)和硬件规格。
- 网络设置: 在“配置实例详细信息”步骤中:
- 网络: 选择您的自定义VPC。
- 子网: 如果启动不应直接暴露于互联网的应用服务器,请选择私有子网(
10.0.2.0/24)。 - 自动分配公有IP: 如果启动到私有子网,请确保禁用。(如果选择公有子网,对于需要直接公共访问的实例,如堡垒机,您可以启用此选项)。
- 安全组: 选择您在第三步中配置的安全组。
- 存储和密钥对: 配置存储并关联密钥对以进行安全的SSH访问。
访问私有子网中的实例
由于私有子网中的实例没有公有IP地址,您无法直接从公共互联网进行SSH连接。您必须使用以下两种安全方法之一:
- 堡垒机(跳板机): 在公有子网中启动一个小型、加固的EC2实例。您首先SSH到堡垒机,然后从堡垒机使用私有IP地址SSH到私有实例。
- AWS Systems Manager(SSM)Session Manager: 这是首选的现代方法。如果实例安装了SSM代理并附加了允许SSM连接的适当IAM角色,您可以直接从AWS控制台启动安全Shell会话,无需入站SSH规则或堡垒机。
总结与后续步骤
在自定义VPC中保护EC2实例涉及从宏观层面(VPC、子网、路由表)到微观层面(安全组)分层网络安全性。通过仔细控制IP地址和流量:
- 确保应用服务器位于隔离的私有子网中。
- 仅在必要时使用IGW或NAT网关。
- 通过安全组入站规则应用最小权限原则。
实例启动后,请记住使用AWS CloudTrail和VPC Flow Logs监控其活动,以保持对私有网络流量的持续可见性。