我只是想知道这些防火墙行为的命名。我的基本理解是,有状态过滤允许入站流量返回出站响应而无需明确指定规则,而无状态则需要指定出站规则。
我不明白。为什么需要明确的规则称为无状态而另一个称为有状态?
我只是想知道这些防火墙行为的命名。我的基本理解是,有状态过滤允许入站流量返回出站响应而无需明确指定规则,而无状态则需要指定出站规则。
我不明白。为什么需要明确的规则称为无状态而另一个称为有状态?
你几乎是正确的。但是状态检查允许您对通过防火墙的数据流进行更多控制。
Cybrary 的一篇文章说:
无状态防火墙监视网络流量并根据源和目标地址或其他静态值限制或阻止数据包。他们不“了解”流量模式或数据流。无状态防火墙使用简单的规则集,这些规则集不考虑防火墙“假装”接收到数据包的可能性。
无状态防火墙过滤器,也称为访问控制列表 (ACL),不会有状态地检查流量。相反,它静态评估数据包内容并且不跟踪网络连接的状态。
状态防火墙可以观察端到端的流量。他们了解通信路径,并且可以实施各种 IP 安全 (IPsec) 功能,例如隧道和加密。用技术术语来说,这意味着状态防火墙可以判断 TCP 连接处于哪个阶段(打开、打开发送、同步、同步确认或建立)。它可以判断 MTU 是否已更改以及数据包是否已分段。等等。
他们之所以这样命名,是因为他们确实在做这个名字的意思。
Stateless:不记得任何状态,只根据规则列表过滤当前经过的数据包。
有状态:记住通过的数据流的状态(所有先前数据包中发生的情况)并基于与无状态情况相同的列表进行过滤,但也基于状态信息进行过滤。
存储在防火墙内存中的状态信息使您可以完全按照您之前的要求进行操作,甚至更多。
您可以添加一个规则,允许在内部传递新的传入 TCP 连接(标有 SYN 标志的 TCP 数据包)以及内部/外部所有已建立/相关的流量。
在 TCP 的情况下,客户端(SRC IP/SRC PORT)向服务器(DST IP/DST PORT)发送 SYN 数据包以打开 TCP 连接。防火墙有一个规则,这个数据包可以通过(只有新的 TCP 连接到那个服务器)。防火墙现在会记住打开连接的请求已发送到服务器(它会记住 src IP、src 端口、dst IP、dst 端口和连接状态 - 在本例中为 CONNECT),现在只需要来自服务器的 SYN/ACK 数据包边。此具体 TCP 连接的任何其他数据包都不能通过它(双向)。然后服务器发送 SYN/ACK,防火墙会记住 HALF-OPEN 状态并只期望来自客户端的 ACK 标记数据包。一旦客户端发送 ACK,连接状态变为 CONNECTED,现在只有带有 ACK(数据)FIN/ACK(关闭连接)标志的数据包才能通过。
对于 TCP,它有点难以解释和理解。ICMP 要容易得多。有两个基本的 ICMP 数据包 - ECHO 和 REPLY。
在有状态防火墙的情况下,您可以确保 REPLY 只有在先前发送 ECHO 的情况下才能通过防火墙。
在无状态的情况下,只能控制 ECHO 和 REPLY 是否可以通过,以便服务器可以随时发送 REPLY,即使它没有被要求。
无状态意味着仅基于单个数据包做出决定(丢弃,接受,...),而无需任何进一步的上下文。 有状态意味着根据先前的数据包维护一些上下文信息,并在决定如何处理数据包时将其包括在内。
这个上下文是关于先前建立的连接(即像 TCP 中的“真实”连接或像 UDP 中的类似连接的关联)。连接的存储状态包括源和目标 IP 和端口、上次活动的时间(用于超时状态)以及在 TCP 的情况下还包括当前序列号。当与当前状态匹配的新数据包到达时,它会更新。如果连接被显式关闭(TCP FIN 握手)或隐式关闭(空闲超时),它将被删除。
保持这种状态可以匹配属于已建立连接的数据包。这允许轻松地允许先前从受信任网络内部发起的流量匹配连接,但拒绝从不受信任的外部发起的任何连接。这使得防火墙配置更简单、更安全,但代价是内存使用量增加(对于状态)和性能降低(由于状态查找所需的时间)。
有状态防火墙 - 有状态防火墙知道通过它的连接。它在状态表(称为连接表)中添加和维护有关用户连接的信息。然后它使用这个连接表来实现用户连接的安全策略。状态防火墙的一个示例是 PIX、ASA、Checkpoint。
无状态防火墙——(数据包过滤)另一方面,无状态防火墙不查看连接状态,而只查看数据包本身。包过滤防火墙的一个例子是 Cisco IOS 路由器上的扩展访问控制列表。