

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 限制 VPC 的出站流量
<a name="restricting-outbound-traffic"></a>

## 使用安全组限制 VPC 的出站流量
<a name="restricting-outbound-traffic-security-groups"></a>

评估架构的出站流量要求后，开始修改 VPC 的安全组规则以满足组织的安全需求。确保将所有必要的端口、协议和目标 IP 地址添加到安全组的允许列表中。

有关其说明，请参阅 *Amazon VPC 用户指南*中的[使用安全组控制到资源的流量](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

**重要提示**  
在测试环境中更新 VPC 的安全组规则后，请务必确认您的应用程序仍按预期运行。有关更多信息，请参阅本指南的**使用 VPC 流日志分析您的 VPC 出站流量的最佳实践**部分。

*特定 AWS 服务的关键安全组注意事项*

**Amazon Elastic Compute Cloud（Amazon EC2）**

创建 VPC 时，它带有一个允许所有出站流量的[默认安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/default-custom-security-groups.html#default-security-group)。Amazon Elastic Compute Cloud（Amazon EC2）实例默认使用此安全组，除非您创建自己的[自定义安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/default-custom-security-groups.html#creating-your-own-security-groups)。

**重要提示**  
要减轻您的 Amazon EC2 实例无意中使用默认安全组的风险，请移除该组的所有出站规则。有关更多信息，请参阅 *Amazon VPC 用户指南*中[使用安全组规则](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#working-with-security-group-rules)部分中的**删除安全组规则**。

**Amazon Relational Database Service（Amazon RDS）**

除非数据库充当客户端，否则所有 Amazon RDS DB 实例的出站安全组规则都可以删除。有关更多信息，请参阅 *Amazon RDS 用户指南*中的 [VPC 安全组概述](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html#Overview.RDSSecurityGroups.VPCSec)。

**Amazon ElastiCache**

除非该实例充当客户端，否则可以删除亚马逊 ElastiCache (Redis OSS) 和亚马逊 ElastiCache (Memcached) 实例的所有出站安全组规则。有关更多信息，请参阅下列内容：
+ [安全组：EC2-Class](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SecurityGroups.html) ic * ElastiCache （亚马逊（Redis OSS）用户指南）*
+ [了解 ElastiCache 和亚马逊 VPCs（亚马](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/VPCs.EC.html)*逊 ElastiCache (Memcached) 用户指南*）

## 使用 AWS Network Firewall 和 DNS 主机名限制 VPC 的出站流量
<a name="restricting-outbound-traffic-network-firewall-hostnames"></a>

当应用程序使用动态 IP 地址时，最佳实践是使用 DNS 主机名来筛选其 VPC 的出站流量，而不是使用 IP 地址。例如，如果应用程序正在使用应用程序负载均衡器，则该应用程序的关联 IP 地址将发生变化，因为节点会不断扩展。在这种情况下，使用 DNS 主机名筛选出站网络流量比使用静态 IP 地址更安全。

您可以使用 [AWS Network Firewall](https://aws.amazon.com/network-firewall/) 将您的 VPC 的出站互联网访问限制为一组主机名，由 HTTPS 流量中的[服务器名称指示（SNI）](https://https.cio.gov/sni/)提供。

有关更多信息和 Network Firewall 策略规则示例，请参阅 *AWS Network Firewall 开发者指南*中的[域筛选](https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-examples.html#suricata-example-domain-filtering)。有关详细说明，请参阅以下 AWS Prescriptive Guidance（APG）模式：[使用 Network Firewall 从出站流量的服务器名称指示（SNI）捕获 DNS 域名](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic.html)。

**备注**  
SNI 是 TLS 的扩展，在流量中保持未加密状态。它表示客户端试图通过 HTTPS 访问的目标主机名。

**重要提示**  
在测试环境中更新 Network Firewall 状态规则后，请确保您的应用程序仍按预期运行。确保 SNI 提供的必需的 DNS 域名均未被阻止。

*架构示例*

下图显示了使用 AWS Network Firewall DNS 主机名过滤 VPC 出站流量的示例架构：

![用于使用 AWS Network Firewall DNS 主机名过滤 VPC 出站流量的架构示例](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/secure-outbound-network-traffic/images/network-firewall-architecture-dns-hostnames.png)


下图显示了如下工作流：

1. 出站请求从私有子网内发出，然后发送到受保护子网中的 NAT 网关。

1. NAT 网关收到的 HTTPS 流量将路由到公有子网中的 AWS Network Firewall 终端节点。

1. AWS Network Firewall 检查请求并应用配置的防火墙策略规则来接受或拒绝传递到 Internet 网关的请求。

1. 经批准的出站请求将发送到互联网网关。

1. 来自互联网网关的经批准的流量将被发送到互联网以访问预期的 URL（由 SNI 在非加密的 HTTPS 标头中提供）。