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

我只知道有两种防火墙。 无国籍和有状态的。 很难确定我必须使用什么样的防火墙。 目前我必须在相同的机器运行服务中运行防火墙,基本上我想要无国籍,因为它的资源消耗较less。 但是,如果安全性不够,则没有意义。 我将在多个TCP / UDP端口上运行HTTP,SSH,NFS(仅通过SSH)以及一些定制的服务器。 我应该使用状态防火墙吗?


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

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

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

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT 

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

更复杂的协议(例如ftp)可能需要多个会话,并且防火墙中的状态引擎需要能够跟踪这些单独的会话以匹配数据包。 通常有状态的防火墙支持大多数stream行的协议,但它们不太可能支持自定义协议。 自定义协议的问题不在于它们使用唯一的tcp或udp端口,而是它们可能使用多个dynamic创build和拆除的连接。 防火墙可以dynamic地打开和closuresftp数据通道的“孔”,因为它可以跟踪和解释stream经fto命令通道的命令。 如果协议是专有的和唯一的,那么防火墙就不能解释它,为了使它工作,你必须编写无状态的规则,并尽量使它们与协议一样严格。

但是,如果协议使用单个TCP连接,那么有状态规则将工作得很好。

现在唯一一次可能需要无状态防火墙的是更好的速度性能。