我想禁止一些 DNS 请求进入我的命名服务器。服务器通常监听 TCP 和 UDP 端口 53 并将请求记录到/var/log/named/query.log
文件中。因此,我在 的末尾添加了以下条目/etc/fail2ban/jail.local
:
[named-xyz]
enabled = true
port = domain
filter = xyz
logpath = /var/log/named/query.log
bantime = 1d
action = %(action_)s
但是,这只会禁止 TCP 端口(默认情况下)。要禁止 UDP 端口,我需要添加另一个条目:
[named-xyz-udp]
enabled = true
port = domain
protocol = udp
filter = xyz
logpath = /var/log/named/query.log
bantime = 1d
action = %(action_)s
拥有类似的条目可能看起来并不过分,但它有一个缺点,即记录重复的条目单个“错误”请求像这样的文件fail2ban.log
:
fail2ban.filter [11619]: INFO [named-xyz-udp] Found a.b.c.d
fail2ban.filter [11619]: INFO [named-xyz] Found a.b.c.d
我怎样才能同时禁止 UDP/53 和 TCP/53单一规则在jail.local
? 对我来说,Aprotocol = all
线不起作用。
失败2ban版本是v0.11.1
。
答案1
就我的情况来说, A
protocol = all
线不起作用。
这取决于你使用的封禁措施。你说的“不起作用”是什么意思?
对于操作(如iptables-allports
接受all
),这样设置可能就足够了,对于其他操作(接受多个协议,如nftables
),可以使用protocol = tcp,udp
(或他们需要的任何分隔符代替逗号)进行设置。
对于不接受多个协议的操作(如iptables-multiport
),需要指定 2 个操作,以下是适用于最新 fail2ban 版本的示例 -https://github.com/fail2ban/fail2ban/blob/10cd81552538fa950cefc32787b9f82b5ee1b998/config/jail.conf#L748-L749
对于不接受插值%(default/action_)s
或多个参数的旧版本[...][...]
,您需要设置如下内容:
action = %(action_)s[name=%(__name__)s-tcp, protocol="tcp"]
%(action_)s[name=%(__name__)s-udp, protocol="udp"]
(或者通过fail2ban 0.9.x甚至%(action_)s
用其替换整体定义来自默认部分):
action = %(banaction)s[name=%(__name__)s-tcp, actionname=%(__name__)s-tcp, protocol="tcp", port="%(port)s", chain="%(chain)s"]
%(banaction)s[name=%(__name__)s-udp, actionname=%(__name__)s-udp, protocol="udp", port="%(port)s", chain="%(chain)s"]