pf:“調製狀態”和“保持狀態”之間的區別
pf
包過濾( )防火牆中的“調製狀態”和“保持狀態”有什麼區別?我正在使用 MacOS X Catalina 10.15.5。我不知道如何檢查
pf
這台機器上安裝了什麼版本:\
包過濾器源自OpenBSD:
PF 的初始版本由 Daniel Hartmeier 編寫。它出現在 2001 年 12 月 1 日發布的 OpenBSD 3.0 中。
一種新的數據包過濾器 PF,具有 NAT 功能,語法大多與 ipf 兼容。
關於此版本的送出
modulate state
(2001-08-25)。任何使用 PF 的 MacOS 版本(自2008 年的 OS X 10.6 以來)都modulate state
可用。關於
modulate state
vskeep state
,這一切都在OpenBSD 的 PF FAQ中進行了解釋。狀態
$$ … $$
keep state
- 適用於 TCP、UDP 和 ICMP。此選項是所有過濾規則的預設選項。modulate state
- 僅適用於TCP。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。
不幸的是,ISN 生成器在
$$ RFC0793 $$使得路徑外攻擊者可以輕鬆預測 TCP 將用於新連接的 ISN,從而允許對 TCP 連接進行各種攻擊$$ CPNI-TCP $$.