fail2ban 操作 ipset 重试或超时

fail2ban 操作 ipset 重试或超时

最近在 Ubuntu 20.04 盒子中fail2ban我收到以下错误:

2023-07-13 06:57:05,129 fail2ban.actions        [3063]: NOTICE  [nginx-http-auth] Ban 2600:1005:b02d:3b6a:c1e:4a7e:6a9f:ccc4
2023-07-13 06:57:05,151 fail2ban.utils          [3063]: ERROR   7f106882c6c0 -- exec: ipset create f2b-nginx-http-auth-v6 hash:ip timeout 600 family inet6
ip6tables -w -I ban -m set --match-set f2b-nginx-http-auth-v6 src -j REJECT --reject-with icmp6-port-unreachable
2023-07-13 06:57:05,152 fail2ban.utils          [3063]: ERROR   7f106882c6c0 -- timed out after 0 seconds.
2023-07-13 06:57:05,353 fail2ban.utils          [3063]: ERROR   ipset create f2b-nginx-http-auth-v6 hash:ip timeout 600 family inet6
ip6tables -w -I ban -m set --match-set f2b-nginx-http-auth-v6 src -j REJECT --reject-with icmp6-port-unreachable -- failed with [Errno 3] No such process
2023-07-13 06:57:05,353 fail2ban.utils          [3063]: ERROR   7f106882c6c0 -- killed with SIGTERM (return code: -15)
2023-07-13 06:57:05,354 fail2ban.actions        [3063]: ERROR   Failed to execute ban jail 'nginx-http-auth' action 'iptables-ipset-proto6-allports' info 'ActionInfo({'ip': '2600:1005:b02d:3b6a:c1e:4a7e:6a9f:ccc4', 'family': 'inet6', 'fid': <function Actions.ActionInfo.<lambda> at 0x7f1068839750>, 'raw-ticket': <function Actions.ActionInfo.<lambda> at 0x7f1068839e10>})': Error starting action Jail('nginx-http-auth')/iptables-ipset-proto6-allports: 'Script error'

行动开始于/etc/fail2ban/action.d/iptables-ipset-proto6-allports.local

actionstart = ipset create <ipmset> hash:ip timeout <default-timeout> <familyopt>
              <iptables> -I <chain> -m set --match-set <ipmset> src -j <blocktype>

我对这个问题的理解是fail2ban无法执行ipset/ ip6tables(死锁?)

有没有办法放松fail2ban设置,以便它重试多次或在退出之前允许更长的超时。

答案1

fail2ban在您共享的错误日志中,执行 ipset create 和ip6tables命令似乎遇到了问题。

要解决此问题,您可以尝试调整fail2ban 设置以允许更长的重试和超时时间。这是一个可能的解决方案:

打开fail2ban配置文件进行编辑。

在 Ubuntu 20.04 中,该文件通常位于/etc/fail2ban/fail2ban.conf.

查找与 nginx-http-auth 监狱相关的 actionban 行。它可能看起来像这样:

actionban = ipset create <ipmset> hash:ip timeout <default-timeout> <familyopt>
iptables -I <chain> -m set --match-set <ipmset> src -j <blocktype>

修改操作禁止行以包含更长的超时或重试间隔。

您可以添加--retry <num>指定重试次数的选项以及--timeout <secs>设置更长超时的选项。

例如:

actionban = ipset create <ipmset> hash:ip --timeout 1200 <familyopt>
iptables -I <chain> -m set --match-set <ipmset> src -j <blocktype> --retry 3

在上面的示例中,超时设置为 1200 秒(20 分钟),重试次数设置为 3。

保存对配置文件的更改并重新启动fail2ban服务以使修改生效。您可以使用以下命令:

sudo service fail2ban restart

通过调整fail2ban配置中的超时和重试值,您可以给它更多的时间来执行所需的命令,并允许在出现死锁情况时进行额外的重试。这可能会解决您面临的问题。

fail2ban请记住在进行更改后监视日志,以确保问题得到解决并按fail2ban预期运行。

答案2

timed out after 0 seconds.

有一个问题#2790对于 ipset actions,这是由于名称与timeout操作参数混淆而引起的。 Ubuntu 20.04 似乎有过时的fail2ban 版本。尝试更新action.d 配置从 0.11 开始分支或更好的升级fail2banhttps://github.com/fail2ban/fail2ban/releases(有一个基于 Debian 的软件包应该适用于您的 Ubuntu,至少是 0.11.2 版本)。另请注意fail2ban :: wiki :: 如何手动安装或升级fail2ban

相关内容