使用 PF 阻止与特定 IP 的传出连接

Jos*_*eph 6 networking firewall pf packet

每当任何 TCP 请求发送到特定 IP 地址时,有人能给我一个关于如何设置基本拒绝规则的提示吗?我正在使用PF 数据包过滤器。有什么帮助吗?

pet*_*ete 8

在您的/etc/pf.conf配置中,最基本的形式如下所示:

block from any to 192.0.2.2

# which is equivalent to:
block drop from any to 192.0.2.2
Run Code Online (Sandbox Code Playgroud)

默认情况下,此block操作将在来自源 IP 的所有接口上双向静默drop分组。因为客户端不知道它被阻止了,所以它会超时并可能再试一次,然后再试一次......any

block return是一种“友好邻居”方式,通过以特定于协议的方式响应TCP RST(重置)ICMP UNREACHABLE数据包,让客户端知道地址无法访问。客户可以使用此信息放弃,或以理智的方式重试。

block return from any to 192.0.2.2
Run Code Online (Sandbox Code Playgroud)


block可以使用该set block-policy选项更改默认行为。


一个更复杂的例子 - 但当你的规则集开始增长时更容易管理和阅读:

mybadhosts = "{ 192.0.2.2, 203.0.113.0/24 }"
ext_if = "em0"

block return on $ext_if from any to $mybadhosts                 # example #1
block return on em0 from any to { 192.0.2.2, 203.0.113.0/24 }   # ^expanded form

block drop out on egress from any to $mybadhosts                # example #2
Run Code Online (Sandbox Code Playgroud)

示例 #1展示了变量、列表{}、网络掩码的简单使用/24,并指定了一个接口em0。(注意变量的定义没有 $ 符号,并且在运行时扩展规则时会删除引号

示例 #2outegress接口组上丢弃出站数据包(请参阅ifconfig(8)


也可以看看: