#4187·fail2ban

[BR]: Cloudflare 操作: actionunban 在监禁名称中包含空格时无法提取规则 ID

作者: whanklee创建于 2026年5月31日更新于 2026年6月26日
标签bug

环境:

  • Fail2Ban 版本:1.0.2
  • 操作系统,包括版本名称/版本:Ubuntu 24.04.4 LTS(代号:noble)
  • 通过操作系统/发行版机制安装了 Fail2Ban
  • 您未对代码库应用任何其他外部补丁
  • 对配置进行了一些自定义(请在下面提供详细信息)

问题:

actionunban 命令在 action.d/Cloudflare.conf 中在 Cloudflare API 中查找 IP 地址时,如果 Cloudflare 网络防火墙的 name 参数包含空格(例如,name="My Jail Name"),则会默默地失败。 这发生是因为查找查询 URL 包含 &notes=Fail2Ban%%20<name> 。如果 <name> 包含空格,则在 curl URL 中会产生未编码的空格(或无效的 API 查询参数),导致 Cloudflare API 返回意外的响应(或为空的结果),这使得 ID 提取失败。 此外,脚本包含一个隐藏的错误抑制:if [ -z "$id" ]; then echo "<name>: id for <ip> cannot be found"; exit 0; fi; 由于它退出了 exit 0,Fail2Ban 假定操作已成功完成,记录了一个错误的 NOTICE ... Unban <ip>,而 IP 地址则在 Cloudflare 的防火墙上永久受阻。

可重现步骤

  1. 配置一个使用 Cloudflare 操作的监护,其中包含空格的名称,例如:
[wordpress-login]
enabled  = true
filter   = wordpress-login
logpath  = /var/log/apache2/*access*.log
findtime = 1h
bantime  = 24h
maxretry = 5
action   = Cloudflare[name="<F-USER> wp-login"]

[wordpress-xmlrpc]
enabled  = true
filter   = wordpress-xmlrpc
logpath  = /var/log/apache2/*access*.log
findtime = 1h
bantime  = 48h
maxretry = 5
action   = Cloudflare[name="<F-USER>: xmlrpc"]
  1. 禁用测试 IP。 (由于 actionban 不过滤…

内容来源: fail2ban/fail2ban