如何在自定义VPC内安全地启动EC2实例
将Amazon EC2实例直接启动到默认的AWS公共网络上速度很快,但对于任何生产、分级或敏感环境,这都会引入不必要的风险。保护计算资源需要将其隔离在虚拟私有云(VPC)内——即AWS云中您自己逻辑上隔离的部分。本指南将引导您完成配置自定义VPC、定义子网和路由表等必要的网络组件,以及在严格的安全组规则保护下安全启动EC2实例的基本步骤。
掌握VPC配置是构建健壮、可扩展和安全AWS基础设施的基础。通过手动定义网络边界,您可以获得对流量流、IP寻址和外部连接的细粒度控制,从而显著加强您的应用程序环境,抵御未经授权的访问。
了解安全VPC的核心组件
虚拟私有云(VPC)是所有安全AWS网络构建的基础。在启动实例之前,您必须确保以下组件已正确配置:
- VPC:网络的主容器,定义私有IP地址范围(CIDR块)。
- 子网(Subnets):VPC内的划分,分为公共(具有直接互联网访问)或私有(隔离)。
- 互联网网关(IGW):供公共子网中的资源与互联网通信所必需。
- 路由表(Route Tables):决定子网网络流量去向的规则。
- 安全组(Security Groups, SGs):在实例级别控制入站和出站流量的有状态防火墙。
第 1 步:创建自定义VPC和子网
我们从创建网络外壳并将其划分为功能区域开始。对于标准设置,我们建议至少有一个公共子网和一个私有子网。
1.1 创建VPC
创建VPC时,请选择一个私有CIDR块,该CIDR块不应与您将来可能连接的任何本地网络重叠(例如,通过AWS VPN或Direct Connect)。
VPC CIDR示例: 10.0.0.0/16
1.2 创建子网
子网必须位于特定的可用区(AZ)内以实现高可用性。对于此示例,我们将在 us-east-1a 中创建一个公共子网和一个私有子网。
- 公共子网:
10.0.1.0/24(用于堡垒主机或负载均衡器) - 私有子网:
10.0.2.0/24(用于应用程序服务器和数据库)
第 2 步:配置互联网连接和路由
私有子网中的资源不应具有直接的互联网访问权限。公共子网中的资源必须正确路由才能通过互联网网关(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。
第 3 步:定义严格的安全组规则
安全组(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实例SG)。
安全提示: 绝不要在面向公众的安全组上为端口 22 (SSH) 或端口 3389 (RDP) 分配
0.0.0.0/0。始终将管理访问限制在已知的内部IP范围内。
第 4 步:安全地启动EC2实例
启动实例时,请确保将其映射到上述建立的正确网络组件。
- 选择AMI和实例类型: 选择您所需的Amazon机器映像(AMI)和硬件规格。
- 网络设置: 在“配置实例详细信息”步骤中:
- 网络: 选择您的自定义VPC。
- 子网: 如果您启动的是不应直接暴露给互联网的应用程序服务器,请选择私有子网(
10.0.2.0/24)。 - 自动分配公有IP: 如果启动到私有子网中,请确保此项禁用。(如果选择公共子网,您可以为此需要直接公共访问的实例(如堡垒主机)启用此项)。
- 安全组: 选择您在第 3 步中配置的安全组。
- 存储和密钥对: 配置存储并关联密钥对以进行安全的SSH访问。
访问私有子网中的实例
由于位于私有子网中的实例没有公有IP地址,因此您无法直接从公共互联网进行SSH。您必须使用以下两种安全方法之一:
- 堡垒主机(跳板机): 在公共子网中启动一台小型、强化的EC2实例。您首先SSH到堡垒主机,然后从堡垒主机使用其私有IP地址SSH到私有实例。
- AWS Systems Manager (SSM) 会话管理器: 这是首选的现代方法。如果实例安装了SSM代理并附加了允许SSM连接的适当IAM角色,您可以直接从AWS控制台启动安全的shell会话,而无需入站SSH规则或堡垒主机。
总结和后续步骤
在自定义VPC内保护EC2实例涉及从宏观层面(VPC、子网、路由表)到微观层面(安全组)分层网络安全。通过仔细控制IP寻址和流量流:
- 您确保应用程序服务器驻留在隔离的私有子网中。
- 您仅在必要时使用IGW或NAT网关。
- 您通过安全组入站规则应用最小权限原则。
实例启动后,请记住使用AWS CloudTrail和VPC Flow Logs监控其活动,以持续了解您的私有网络流量。