如何在自定义VPC中安全启动EC2实例

在自定义VPC中启动EC2实例,包含公有和私有子网、路由表、安全组以及安全的访问路径。

如何在自定义VPC中安全启动EC2实例

在默认VPC中启动Amazon EC2实例速度很快,但往往无法满足生产或预发布环境所需的控制力。自定义VPC允许您选择地址范围、划分公有和私有子网,并精确决定哪些路径可以访问互联网。

本指南展示了一种实用的安全布局:用于负载均衡器或堡垒机的公有子网、用于应用程序实例的私有子网、匹配这些角色的路由表,以及仅允许必要流量的安全组。

理解安全VPC的核心组件

虚拟私有云(VPC)是所有安全AWS网络的基础。在启动实例之前,必须确保以下组件正确配置:

  1. VPC:网络的主要容器,定义私有IP地址范围(CIDR块)。
  2. 子网:VPC内的划分,分为公有子网(可直接访问互联网)和私有子网(隔离)。
  3. 互联网网关(IGW):公有子网中的资源与互联网通信所需。
  4. 路由表:决定子网网络流量去向的规则。
  5. 安全组(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)

  1. 在AWS控制台中创建一个IGW资源。
  2. 将此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实例

启动实例时,确保将其映射到上述正确的网络组件。

  1. 选择AMI和实例类型: 选择所需的Amazon机器映像(AMI)和硬件规格。
  2. 网络设置: 在“配置实例详细信息”步骤中:
    • 网络: 选择您的自定义VPC
    • 子网: 如果启动不应直接暴露于互联网的应用服务器,请选择私有子网10.0.2.0/24)。
    • 自动分配公有IP: 如果启动到私有子网,请确保禁用。(如果选择公有子网,对于需要直接公共访问的实例,如堡垒机,您可以启用此选项)。
    • 安全组: 选择您在第三步中配置的安全组
  3. 存储和密钥对: 配置存储并关联密钥对以进行安全的SSH访问。

访问私有子网中的实例

由于私有子网中的实例没有公有IP地址,您无法直接从公共互联网进行SSH连接。您必须使用以下两种安全方法之一:

  1. 堡垒机(跳板机):公有子网中启动一个小型、加固的EC2实例。您首先SSH到堡垒机,然后从堡垒机使用私有IP地址SSH到私有实例。
  2. AWS Systems Manager(SSM)Session Manager: 这是首选的现代方法。如果实例安装了SSM代理并附加了允许SSM连接的适当IAM角色,您可以直接从AWS控制台启动安全Shell会话,无需入站SSH规则或堡垒机。

总结与后续步骤

在自定义VPC中保护EC2实例涉及从宏观层面(VPC、子网、路由表)到微观层面(安全组)分层网络安全性。通过仔细控制IP地址和流量:

  • 确保应用服务器位于隔离的私有子网中。
  • 仅在必要时使用IGW或NAT网关。
  • 通过安全组入站规则应用最小权限原则。

实例启动后,请记住使用AWS CloudTrail和VPC Flow Logs监控其活动,以保持对私有网络流量的持续可见性。