dra*_*uca 9 networking acl traffic amazon-web-services amazon-vpc
我已经建立了亚马逊虚拟私有云(VPC).在VPC内部我有2个网络,我在其中创建实例.出于安全原因,我想在这些网络上放置一些网络访问控制列表(网络ACL),除了机器防火墙.在亚马逊示例之后,我有一个公共网络(暴露于互联网访问)10.0.0.0/24和3个私人网络10.0.1.0/24,10.0.2.0/24,10.0.3.0/24.它们之间的流量被路由.
所以对于网络10.0.1.0/24作为ACL,我把它:
Inbound:
10.0.0.0/24 port 80 (HTTP)
10.0.0.0/24 port 22 (SSH)
10.0.2.0/24 port 3306 (MySql)
10.0.3.0/24 port 3306 (MySql)
Outbound
ALL ALL
Run Code Online (Sandbox Code Playgroud)
对于网络10.0.2.0/24和10.0.3.0/24:
Inbound
10.0.1.0/24 port 3306 (MySql)
Outbound
ALL ALL
Run Code Online (Sandbox Code Playgroud)
对于此处的公共网络10.0.0.0/24,我有一个公开的负载均衡器,它将流量重定向到专用网络10.0.1.0/24,其中应用程序通过HTTP进行响应:
Inbound
0.0.0.0/0 port 80 (HTTP)
0.0.0.0/0 port 443 (HTTPS)
0.0.0.0/0 port 22 (SSH)
Outbound
ALL ALL
Run Code Online (Sandbox Code Playgroud)
问题是,当我将这些规则付诸行动时,所有流量都会冻结并且应用程序无法使用.发生了什么?难道我做错了什么?
Ste*_*pel 19
您的规则目前缺少与FAQ相关的额外且可能相关的片段.VPC中的安全组与VPC中的网络ACL之间有何区别?:
VPC中的安全组指定允许或来自Amazon EC2实例的流量.网络ACL在子网级别运行,并评估进出子网的流量.网络ACL可用于设置允许和拒绝规则.网络ACL不会过滤同一子网中的实例之间的流量.此外,网络ACL执行无状态过滤,而安全组执行有状态过滤.[强调我的]
这是进一步解决的是什么状态和无状态过滤的区别?:
状态过滤跟踪请求的来源,并且可以 自动允许将对请求的回复返回到原始计算机.[...]
另一方面,无状态过滤仅检查源或目标IP地址和目标端口,忽略流量是新请求还是对请求的回复.在上面的示例中,需要在过滤设备上实现两个规则:一个规则允许流量入站到tcp端口80上的Web服务器,另一个规则允许来自Web服务器的出站流量 (tcp端口范围49,152到65,535) .[强调我的]
现在,您已经允许所有出站流量,因此这不适用于示例,但同样的问题也适用于其他方式,因此例如对于源自EC2实例的HTTP请求,您需要具有相应的入站规则所概述,见短周期端口内网的ACL以获取更多的详细信息:
发起请求的客户端选择临时端口范围.范围取决于客户端的操作系统.[...]
如果您的VPC中的实例是发起请求的客户端,则您的网络ACL必须具有入站规则,以启用发往特定于实例类型(Amazon Linux,Windows Server 2008等)的临时端口的流量.
实际上,要覆盖可能为您的VPC中的面向公众的实例启动流量的不同类型的客户端,您需要打开临时端口1024-65535.[...]
因此,部分方案2的推荐规则中附录A:推荐网络ACL规则建议您在以下情形下入站规则(取决于操作系统为例):
Inbound:
0.0.0.0/0 port 49152-65535 (TCP)
Run Code Online (Sandbox Code Playgroud)
要测试此问题是否确实适用,您可以简单地包括整个短暂端口范围:
Inbound:
0.0.0.0/0 port 1024-65535 (TCP)
Run Code Online (Sandbox Code Playgroud)
对于这里的公共网络10.0.0.0/24,我有一个暴露的负载均衡器,它将流量重定向到专用网络10.0.1.0/24,其中一个应用程序通过http响应
您的设置建议您像往常一样在负载均衡器上终止SSL; 鉴于您提高了安全性要求,您实际上也可以为后端HTTPS通信设置Elastic Load Balancing(请参阅体系结构概述) - 您似乎没有ACL规则可以容纳到10.0.1.0/24的入站HTTPS流量,所以那将是一个失踪的案件:
Inbound:
10.0.0.0/24 port 80 (HTTP)
10.0.0.0/24 port 443 (HTTPS) // <= missing in your example currently!
10.0.0.0/24 port 22 (SSH)
10.0.2.0/24 port 3306 (MySql)
10.0.3.0/24 port 3306 (MySql)
Outbound
ALL ALL
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9004 次 |
| 最近记录: |