可以修改或拒绝NAT网关使用的动态端口(1024-65535)吗?

0

【以下的问题经过翻译处理】 客户试图开发一个DDOS弹性解决方案。他们试图通过互联网访问第三方组件的端口80和443。但是该实例位于私有网络中,因此他们在公有子网中使用了一个NAT网关。当公有子网的NACL中没有拒绝规则时,一切正常。

但是当他们在NACL中拒绝了端口1024-65535时,实例失去了互联网访问,他们不想将这么多端口开放给外部世界。

他们只需要允许NACL中位于NAT网关所在位置的端口80和443。我们该如何实现这一点?是否有其他保护子网的替代方法?

profile picture
专家
已提问 5 个月前26 查看次数
1 回答
0

【以下的回答经过翻译处理】 所以问题是您的客户正在查看NACL(网络访问控制列表)并认为它们是传统的防火墙规则,但它们实际上不是。NACL是一个无状态防火墙,这意味着您必须定义所有所需的端口,无论是入站还是出站。现在的问题是,大多数协议不会仅限于一个端口号。以Web流量为例,当您请求网页时,您的计算机会将请求发送到端口80或443的Web服务器。 Web服务器捕获请求,然后发送响应,告诉您的计算机它需要用于此通信会话的端口是什么。服务器之所以这样做,是因为多人无法在单个端口上进行通信,因此为了处理多个客户,它将已知流量移动到动态端口范围。

想象一下,就像你走进了一个DMV(或其他处理多个功能的政府建筑物),你看到的第一个人问你来干什么。在你回答后,他们会给你一张上面有号码的票。这张票告诉你要去哪个窗口完成你所要做的任务。端口80/443上的服务就是给你一张票的第一个人,而窗口则是用于完成会话的更高级别端口。

因此,使用无状态防火墙(如NACL)时,由于防火墙不跟踪会话,您必须打开动态端口范围,以允许正常通信。NACL在使用时不跟踪会话并要求打开如此多的端口,这是我们不建议将其用于细粒度访问控制的原因。NACL应该用于像允许访问内部生产网络的IP地址到AWS prod的广泛控制,但拒绝来自用户或Dev IP空间的任何访问等广泛控制。更不用说NACL仅在子网级别控制流量,因此同一子网内实例之间的流量将永远不会被NACL评估。

几乎在所有情况下,更好的控制选项是将安全组作为主要控制点,因为它是有状态的,并且在弹性网络接口上控制流量。安全组默认情况下是拒绝所有的,您必须定义服务用于启动会话的端口(在上面的示例中为80/443),以及该流量来自哪里(对于入站规则)或它要去哪里(对于出站规则)。由于是有状态的,安全组足够聪明,能够理解会话,所以现在当服务器响应客户端告诉他在更高的动态端口上进行通信时,安全组会动态打开该端口以在客户端和服务器之间进行通信。然后,它将继续跟踪会话,直到客户端或服务器关闭会话,此时安全组将不再允许该端口上的通信。

这只是IP会话和NACL与安全组的工作方式的简化,但希望它为您提供了足够的信息,可以传递给客户,并帮助他们设计一个更好的架构(限制NACL的使用)。如果需要额外的支持,请随时在chime上联系我。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则