如何编写PF防火墙规则来过滤同一主机上进程之间的通信?
通过阅读这些man
页面,我了解到数据包必须物理地遍历给定的接口才能使规则生效 - 并且从本地接口发送到另一个本地接口的数据包将由主机的 TCP/IP 堆栈处理,而不会受到过滤。
但是我如何编写 PF 防火墙规则来过滤从本地接口到另一个本地接口的所有流量,例如:
DROP <local-src-ip>:<local-src-port> -> <local-target-ip>:<local-target-port>
答案1
如何编写 PF 防火墙规则 [...]
您是在询问方法论还是给您提供此类规则的示例?不管怎样,我想说你自己完成这项任务应该不难:
user
由于 Pf 具有( 和)等过滤标准的概念,因此group
您应该能够执行所需的策略。
man pf.conf
:“……
user
用户— 此规则仅适用于指定用户拥有的套接字数据包。对于从防火墙发起的传出连接,这是打开连接的用户。对于到防火墙本身的传入连接,这是侦听目标端口的用户。
……”
首先记录环回接口上的所有流量 - 因为环回将用于此类通信。有些教程理所当然set skip on lo0
地规定了这一点,但显然你需要相反的规则,把这个扔掉。您也可以使用(self)
关键字 - 将规则集限制为属于主机的地址,但这可能不是严格需要的。
请记住,Pf 在其各个 ports-n-版本之间可能存在显着差异。例如,MacOS 附带的功能已经过时,并且某些功能将无法正常工作,与手册页所述相反。