我想禁止一些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
我怎么能用jail.local
中的一条规则同时禁止UDP/53和TCP/53呢?在我的情况下,protocol = all
行不起作用。
fail2ban版本是v0.11.1
。
发布于 2021-08-02 15:28:36
在我的情况下,
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"]
https://askubuntu.com/questions/1354213
复制相似问题