公共子网和私有子网的 NACL 和 NAT 网关

公共子网和私有子网的 NACL 和 NAT 网关

我有一个包含 3 个子网的 VPC:

  1. 公共(FE 层,仅限入站互联网访问)
  2. 受保护(应用层,仅限出站互联网访问)
  3. 私有(数据库层,完全没有互联网访问)

公共子网 NACL 会阻止除 443 之外的任何端口上来自互联网的所有入站流量。

私有子网 NACL 阻止所有来自互联网的进出。

受保护子网的 NACL 必须允许:

  • 对于出站互联网 https 请求,出站端口为 443 至 0.0.0.0/0
  • 从 1024-65535 上的 0.0.0.0/0 入站,用于响应这些请求

受保护的子网通过位于公共子网中的 NAT 网关路由到互联网。

问题是这样的:只有当公共子网的 NACL 打开以允许端口 1024 - 65535 上的入站流量时,从受保护子网到互联网的出站流量才会起作用。这可能是因为流量经过公共子网(因为 NAT 网关位于那里)。

因此,我可以为公共子网打开 NACL(从 1024-65535 上的 0.0.0.0/0 入站),但这会降低其安全性;事实上,如果我打开所有这些端口,我还不如根本不用理会 NACL(显然我也在使用安全组)。

我是否遗漏了什么?

答案1

NACL 是无状态的。您发现需要打开临时端口允许流量返回到您的子网。阅读一些有关临时端口的信息。

通常,您最好使用安全组而不是 NACL,因为它们是有状态的,并且会自动适应临时端口。如果您愿意,可以同时使用两者。

我通常只使用两个子网,即公共子网和私有子网。公共子网只有 NAT 网关或负载均衡器,并且该子网允许公共 IP。私有子网拥有所有内部资源,我使用安全组而不是子网进行分层。

例如,为 Web 服务器创建一个安全组、为应用服务器创建一个安全组、为数据库服务器创建一个安全组,然后允许所需端口上的安全组之间进行访问。

IE:

  • Web 服务器 SG 在 443 上接受来自 0.0.0.0/0 的流量
  • 应用服务器 SG 仅接受来自 443 上的 Web 服务器子网的流量,并允许出站流量流向数据库 SG
  • 数据库 SG 仅允许来自应用服务器 SG 的端口 3306 上的流量

相关内容