我已经建立了一个亚马逊虚拟私有云(VPC)。在VPC中,我有两个网络,我在其中创建实例。出于安全考虑,除了计算机防火墙之外,我还想在这些网络上添加一些网络访问控制列表( networks )。以Amazon为例,我有一个公共网络(暴露于internet接入) 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
关于网络10.0.2.0/24和10.0.3.0/24:
Inbound
10.0.1.0/24 port 3306 (MySql)
Outbound
ALL ALL
对于公共网络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
问题是,当我将这些规则付诸实施时,所有的流量都会冻结,而应用程序也无法使用。发生什么事了呢?我做错了什么吗?
发布于 2012-05-15 09:57:48
更新
您的规则目前缺少一个与常见问题解答( FAQ VPC中的安全组和VPC中的网络ACL之间有什么区别? )相关的额外且可能相关的片段。
VPC中的安全组指定允许或来自Amazon实例的通信量。网络ACL在子网级别运行,并评估进入和退出子网的流量。网络ACL可用于设置“允许”和“拒绝”规则。网络ACL不过滤同一子网中实例之间的通信量。此外,网络ACL执行无状态筛选,而安全组执行有状态筛选。重点雷
这将在有状态过滤和无状态过滤有什么区别?中得到进一步解决。
状态筛选跟踪请求的来源,可以自动允许将对请求的答复返回到原始计算机。..。 另一方面,无状态筛选()只检查源或目标IP地址和目标端口,而忽略流量是新请求还是对请求的答复。在上面的示例中,需要在过滤设备上实现两条规则:一条规则允许流量在tcp端口80上进入web服务器,另一条规则允许来自的出站流量(tcp端口范围从49,152到65,535)。重点雷
现在,您已经允许所有出站通信量,因此这不适用于该示例,但同样的问题也适用于此,例如,对于来自EC2实例的HTTP请求,您需要有一个相应的入站规则,请参阅网络ACL中的短命港节,以获得更多有关这方面的详细信息:
发起请求的客户端选择临时端口范围。范围因客户端的操作系统而异。..。 如果VPC中的一个实例是发起请求的客户机,则您的网络ACL必须有一个入站规则来启用特定于实例类型(Amazon、Windows 2008等)的临时端口的通信。 实际上,为了覆盖不同类型的客户端,它们可能会在VPC中启动面向公共实例的通信,您需要打开临时端口1024-65535。..。
解决方案
因此,方案2的建议规则中的附录A:推荐的网络ACL规则部分建议为您的场景提供以下入站规则(依赖于OS的示例):
Inbound:
0.0.0.0/0 port 49152-65535 (TCP)
要测试此问题是否实际适用,只需包含整个临时端口范围:
Inbound:
0.0.0.0/0 port 1024-65535 (TCP)
初步答复(过时)
在这里,对于公共网络10.0.0.0/24,我有一个公开的负载均衡器,它将传输重定向到专用网络10.0.1.0/24,其中一个应用程序通过http进行响应。
您的设置表明您打算像往常一样终止负载均衡器上的SSL;考虑到您增加的安全性要求,您可能实际上也已经为后端HTTPS通信设置了弹性负载平衡 (请参阅建筑概述) --您似乎没有一个允许入站HTTPS通信量为10.0.1.0/24的ACL规则,因此这将是一个缺失的规则:
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
发布于 2016-05-02 16:37:57
如果您想要打开临时端口,除了10,000以下关于tomcat、其他servlet等异常的端口,只需为每个异常范围创建特定的规则即可。规则是从最低编号第一到最高数字最后计算的,最高有效规则编号为32766。
https://stackoverflow.com/questions/10596456
复制相似问题