在freebsd pf上阻塞未build立连接的数据包

对于freebsd pf防火墙; 我希望它阻止未build立连接的数据包。 例如,攻击者不应该发送重置数据包为一个未知的尚未build立的连接。

在Linux中很容易做到

-d targethost -m state --state NEW -j ACCEPT -m state --state RELATED,ESTABLISHED -j ACCEPT 

这将允许新的州build立,并阻止除了已build立状态的数据包(ESTABLISHED)以外的任何其他事物

我认为freebsd pf也应该像这样工作。 pf有这样的吗? 你认为下面的规则集应该允许重置数据包为一个未build立的连接?

 # pfctl -sr -vvv @0 pass in log (all) quick from <administrators:4> to any flags S/SA synproxy state [ Evaluations: 423 Packets: 0 Bytes: 0 States: 4 ] [ Inserted: uid 0 pid 25567 State Creations: 4 ] @1 block drop log (all) quick inet6 all [ Evaluations: 419 Packets: 0 Bytes: 0 States: 0 ] [ Inserted: uid 0 pid 25567 State Creations: 0 ] @2 block drop log (all) quick from <blacklist:0> to any [ Evaluations: 419 Packets: 0 Bytes: 0 States: 0 ] [ Inserted: uid 0 pid 25567 State Creations: 0 ] @3 pass log (all) quick all flags S/SA keep state [ Evaluations: 419 Packets: 103 Bytes: 10941 States: 15 ] [ Inserted: uid 0 pid 25567 State Creations: 19 ] 

tcpdump -i pflog0没有任何东西(传递或阻止)接受redirect防火墙后面的主机的数据包。

从OpenBSD pf文档 :

所有通过规则在数据包匹配规则时自动创build一个状态条目。 这可以通过使用no state选项明确禁用。

所以你已经是有状态的了

而且为了澄清一下,FreeBSD偶尔会在OpenBSD上使用pf over,所以他们的文档适用于核心function。