pf:“调制状态”和“保持状态”之间的区别

pf:“调制状态”和“保持状态”之间的区别

数据包过滤 ( ) 防火墙中的“调制状态”和“保持状态”有什么区别pf

我使用的是 MacOS X Catalina 10.15.5。我不知道如何检查pf这台机器上安装的版本:\

答案1

包过滤器起源来自 OpenBSD:

PF 的最初版本是由 Daniel Hartmeier 编写的。它出现在 2001 年 12 月 1 日发布的 OpenBSD 3.0 中。

OpenBSD 3.0

一种新的数据包过滤器 PF,具有 NAT 功能,具有大部分与 ipf 兼容的语法。

提交关于modulate state早于本版本 (2001-08-25)。任何使用 PF 的 MacOS 版本(自 OS X 10.6 起)2008年)已modulate state可用。


关于modulate statevs 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]

相关内容