我不确定这是否是该问题的正确子 StackExchange,因此如果需要,请随时将我引导到其他地方。
我正在尝试使用两台 EC2 服务器:一台是“工作站”,另一台是“节点”(类似 Chef)。工作站的安全组最初只有一条传入规则,允许从我的本地计算机 IP 地址访问端口 22。
我希望节点服务器既可以从工作站服务器访问,也可以从我的本地计算机访问。因此,我没有创建新的安全组,而是向工作站上使用的安全组添加了一条规则,并以自己的安全组 ID 作为源。简而言之,我想要的是一个允许从我的本地计算机 IP 地址访问端口 22 的安全组或者任何也应用了安全组的机器。这是我对默认安全组工作原理的理解(允许所有流量,来源是自引用安全组 ID)。
在我看来,这也与我发现的一致这里在文档中:
如果某个特定端口有多条规则,我们将应用最宽松的规则。例如,如果您有一条规则允许从 IP 地址 203.0.113.1 访问 TCP 端口 22 (SSH),另一条规则允许所有人访问 TCP 端口 22,则每个人都可以访问 TCP 端口 22。
我的情况显然有点不同,因为我有一条规则允许从特定 IP 地址对端口 22 进行特定访问,还有一条规则允许从安全组而不是“所有人”对端口 22 进行特定访问,但安全组源是否也被认为比特定 IP 地址更宽松,因此允许我上面描述的情况?
不幸的是,这样设置安全组后,我只能从本地计算机通过 SSH 进入节点。当我尝试从 EC2 上的工作站(共享同一安全组)通过 SSH 进入时,它会超时。
关于我可能做错什么/遗漏了什么,您有什么想法吗?
答案1
我刚刚向工作站上使用的安全组添加了一条规则,以其自己的安全组 ID 作为源。
这与您需要做的正好相反。
您需要向节点的安全组添加规则,指定工作站的安全组作为源...而不是(向工作站的安全组添加规则)。安全组中的自引用入站规则意味着该组成员的计算机可以访问同一组其他成员上的该端口。
我不确定为什么文档会以如此复杂的方式陈述如此明显的原则……这似乎只会使问题更加混乱。当任何流量与安全组中的任何规则匹配时,该流量将被允许。规则特异性的概念在这里似乎是一种干扰。
答案2
事实上您所做的是:您允许从您的 IP 和同一组中的任何其他实例访问工作站(如果现在没有任何实例,则无关紧要,如果您将来将实例添加到该组 - 它也也可以访问 ssh。
您需要做的:配置节点所属的 SG。添加包含您的 IP 的规则,以及包含工作站组的规则作为源。最后一个规则将被读作“允许工作站组中的所有实例访问端口 22”。
“宽容规则”注意事项:我不知道您是否熟悉 CIDR 和子网,但这是您需要了解的详细主题。让我们看两个案例。案例 1,两条规则:
allow from 192.168.0.0/24
allow from 192.168.1.0/24
这里不适用“最宽容规则”,因为范围不重叠:它们实际上意味着
allow from 192.168.0.0 to 192.168.0.255
allow from 192.168.1.0 to 192.168.1.255
案例2
allow from 192.168.0.0/22 (note '2' at the end)
allow from 192.168.1.0/24
这里将应用该规则,因为范围是:
allow from 192.168.0.0 to 192.168.3.255
allow from 192.168.1.0 to 192.168.1.255
因此,第二个范围位于第一个范围之内,就像一个小盒子位于一个大盒子之内。这里的“最宽容”是指第一行将起作用,范围更广。
请随意检查计算了解详情。