blacklistd_enable
,如下所示:[local]
(这是默认规则),并应用于本地计算机。当遇到 [remote]
节时,它后面的所有规则都被作为远程机器规则处理。*
),匹配此字段中的任何内容。第一个字段定义位置。在本地规则中,这些是网络端口。位置字段的语法如下:em0
。stream
,而 UDP 表示为 dgram
。上面的示例使用 TCP,因为 SSH 使用该协议。tcp
、udp
、tcp6
、udp6
或数字。通配符(如示例中所示)通常用于匹配所有协议,除非有理由通过某个协议来区分流量。blacklistd
的 pf 锚点下,如下所示:-
) 开头时,表示应使用前面附加了默认规则名称的锚点。上面使用连字符的修改示例如下所示:blacklistd-ssh
的锚点中。/
。这导致名称的其余部分被解释为应用于规则中指定的地址的掩码。例如,这条规则将阻止与 /24
相邻的每个地址。nfail
,设置将相关远程 IP 列入黑名单所需的登录失败次数。当在此位置使用通配符时,这意味着块将永远不会发生。在上面的示例规则中,定义了三个限制,这意味着在一个连接上三次尝试登录 SSH 后,IP 将被阻止。m
、小时 h
和天 d
。remote
规则,并由匹配的 remote
规则更改 name、nfail
和 disable 字段。=
) 告诉 blacklistd 使用匹配的本地规则中的值。这意味着将采用防火墙规则条目并添加前缀 /25
(的网络掩码255.255.255.128
)。当来自该地址范围的连接被列入阻止列表时,整个子网都会受到影响。此处也可以使用 PF 锚点名称,在这种情况下,黑名单会将此地址块的规则添加到该名称的锚点。指定通配符时使用默认表。nfail
列中可以为一个地址定义一个自定义的失败次数。这对特定规则的例外情况很有用,也许可以允许某人不那么严格地应用规则,或者在登录尝试中更宽松一点。当在这第六个字段中使用星号时,阻断功能将被禁用。dump
和 -b
。213.0.123.128/25
。列出的尝试次数多于允许的次数,因为 SSH 允许客户端在一个 TCP 连接上尝试多次登录。目前正在进行的连接不会被 blacklistd 阻止。最后的连接尝试被列在输出的 last access
列中。-r
到上一个命令中。blacklistd
中没有这样的功能。不过,可以用 pfctl
把地址从 PF 表中删除。对于每个被封锁的端口,在**/etc/pf.conf** 中定义的 blacklistd 锚内都有一个子锚。例如,如果有一个封锁端口 22 的子锚,它就被称为 blacklistd/22
。在这个子锚里面有一个表,包含了被封的地址。这个表的名字是 port,后面是端口号。在这个例子中,它被称为 port22
。有了这些信息,现在就可以用 pfctl(8) 来显示所有列出的地址,如下所示: