数据包过滤 ( ) 防火墙中的“调制状态”和“保持状态”有什么区别pf
?
我使用的是 MacOS X Catalina 10.15.5。我不知道如何检查pf
这台机器上安装的版本:\
答案1
包过滤器起源来自 OpenBSD:
PF 的最初版本是由 Daniel Hartmeier 编写的。它出现在 2001 年 12 月 1 日发布的 OpenBSD 3.0 中。
一种新的数据包过滤器 PF,具有 NAT 功能,具有大部分与 ipf 兼容的语法。
这提交关于modulate state
早于本版本 (2001-08-25)。任何使用 PF 的 MacOS 版本(自 OS X 10.6 起)2008年)已modulate state
可用。
关于modulate state
vs keep state
,这一切都在OpenBSD 的 PF 常见问题解答。
状态
[...]
keep state
- 适用于 TCP、UDP 和 ICMP。此选项是所有过滤规则的默认选项。modulate state
- 仅适用于传输控制协议。 PF将产生强初始序列号(ISN) 匹配此规则的数据包。
该
modulate state
选项的工作方式就像keep state
,只是它仅适用于 TCP 数据包。在调制状态下,传出连接的初始序列号 (ISN) 是随机的。这对于 保护由某些在选择 ISN 方面表现不佳的操作系统发起的连接。为了允许更简单的规则集,可以在指定除 TCP 之外的协议的规则中使用调制状态选项。在这些情况下,它被视为保持状态。
modulate state
执行默认操作keep state
也是如此此外更改一些 TCP 数据包以提高安全性。
例子:
pass out on egress proto { tcp, udp, icmp } from any to any modulate state
它将“调制” TCP,并为其他人保留状态。
如果您想了解有关 TCP 内部结构和 TCP ISN 的更多信息,请参阅有关它的 RFC,例如:
-
序列号:32位
该段中第一个数据八位位组的序列号(SYN 存在时除外)。如果存在 SYN,则序列号是初始序列号 (ISN),第一个数据八位字节是 ISN+1。
-
不幸的是,[RFC0793]中描述的ISN生成器使得偏离路径的攻击者能够轻松预测TCP将用于新连接的ISN,从而允许针对TCP连接的各种攻击[CPNI-TCP]。