我最近偶然发现了 EC2 实例的防火墙问题。TCP 端口通过 EC2 安全组向所有人开放,但仍然使用 iptables 进行实例端过滤。我认为安全组只是 IPTables 的一个花哨 API。事实证明,据我所知,它们完全是独占运行的。有什么理由同时使用两者吗?一个防火墙就足够了,而增加另一层复杂性似乎是一个迟早会发生的麻烦。
同时,我正在考虑打开安全组中的所有端口,然后通过 iptables 进行所有过滤,或者相反,禁用 iptables 并使用安全组过滤。
有人能告诉我我的逻辑是否有缺陷吗?我是否遗漏了某些关键的东西?
答案1
安全组不会给您的服务器增加任何负载 - 它们在外部进行处理,并独立于您的服务器阻止往返于您服务器的流量。这提供了极佳的第一道防线,其弹性远高于驻留在您服务器上的防线。
但是,安全组不是状态敏感的,例如,您无法让它们自动响应攻击。IPTables 非常适合更动态的规则 - 要么适应某些场景,要么提供更细粒度的条件控制。
理想情况下,您应该使用两者来相互补充 - 使用安全组阻止所有可能的端口,并使用 IPTables 来监管剩余端口并防止攻击。
答案2
可以将安全组想象成正常网络场景中的硬件防火墙。我猜除非您有特殊情况,否则您实际上不必同时使用两者,例如:您有一个名为 webservers 的安全组,用于控制对 Web 服务器的访问。您想阻止 IP 访问端口 80一这些服务器,但不是全部。因此,您需要做的是进入该服务器上的 iptables 并执行阻止,而不是在安全组中执行阻止,这将应用于该安全组中的所有服务器...
答案3
它们的设置都相当容易,并且同时设置它们可以防止其中一个被攻击或出现缺陷。