AWS 网络 ACL:为什么我需要允许出站端口 80 才能浏览互联网?

AWS network ACL: why do I need to allow outbound port 80 to be able to browse Internet?

我对 AWS 和网络还很陌生。我一直在玩网络ACL。我意识到,如果我不允许网络 ACL 上的出站端口 443 (HTTPS),我将无法使用浏览器从 EC2 实例 [=] 中转到 https://www.google.com 21=] 在与此 ACL 关联的子网中。

同样,如果我不允许出站端口80,我将无法前往http://www.cnn.com

这让我很困惑。当我允许 ACL 上的端口 80 出站时,我是否允许 EC2 从我的 EC2 上的临时端口 与 CNN 服务器上的端口 80 交谈,或者我是否允许 EC2从 EC2 上的端口 80 发起连接

您不必添加任何规则。默认网络 ACL 配置为允许所有流量流入和流出与其关联的子网。每个网络 ACL 还包含一个规则,其规则编号为星号。此规则可确保如果数据包不匹配任何其他编号规则,则会被拒绝。您不能修改或删除此规则。

规则允许所有 IPv6 流量流入和流出您的子网。我们还添加了规则编号为星号(全部捕获)的规则,以确保数据包在不匹配任何其他定义的编号规则时被拒绝。

网络 ACL 具有单独的入站和出站规则(无状态),每个规则可以允许或拒绝流量。

出站规则允许从 子网 到 Internet 的出站流量。换句话说,它是将流量与ACL列表中定义的规则匹配并应用它(ALLOW/DENY)。

如果您的私有实例不应被互联网上的 public 用户访问,从安全角度来看,最好将这些实例放置在 私有子网 并在 public 子网中使用 NAT 实例 并使所有流量都通过此 NAT 实例进行补丁更新并获得 public 访问权限。

有关详细信息,请查看 Amazon Docs

使用实例级别的安全组在实例中获得安全性 level.And 与安全组不同,ACL 是无状态的并且在子网级别工作,即如果您希望您的实例通过端口 80(http) 进行通信,那么您已添加允许端口 80 的入站和出站规则。