最近在 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。