什么情况下需要状态防火墙?

Eon*_*nil 3 firewall

我只知道有两种防火墙。无状态和有状态。很难确定我必须使用哪种防火墙。目前我必须在运行服务的同一台机器内运行防火墙,基本上我想要无状态,因为它的资源消耗较少。但是,如果它不足以保证安全,那就没有意义了。我将在几个 TCP/UDP 端口上运行 HTTP、SSH、NFS(仅通过 SSH)和一些定制的服务器。我应该使用状态防火墙吗?


(编辑)也许这个问题可以假设为“我应该使用有状态规则吗?”。

Max*_*nin 6

现在,这个问题有一个非常简单的答案:所有适当的防火墙现在都是有状态的。


小智 5

有状态规则极大地简化了防火墙策略的设计并提高了安全性。由于使用单个端口的 tcp 会话,因此 HTTP 和 SSH 可以使用。任何有状态的防火墙都可以处理这个问题,您需要做的就是编写一个规则以允许打开会话的原始数据包,以及另一个规则以允许与已知状态匹配的回复数据包。在 iptables 的情况下,后者看起来像

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

(假设防火墙在服务器上运行,因此链接 INPUT)。

更复杂的协议,例如 ftp,可能需要多个会话,防火墙中的状态引擎需要能够跟踪这些单独的会话以匹配数据包。通常状态防火墙支持大多数流行的协议,但它们不太可能支持自定义协议。自定义协议的问题不在于它们使用唯一的 tcp 或 udp 端口​​,而在于它们可能使用动态创建和拆除的多个连接。防火墙可以动态地打开和关闭 ftp 数据通道的“漏洞”,因为它可以跟踪和解释流经 fto 命令通道的命令。如果协议是专有的和唯一的,防火墙将无法解释它并使其工作,您必须编写无状态规则并尝试使它们尽可能严格。

但是,如果协议使用单个 tcp 连接,则有状态规则将正常工作。