fail2ban 无法将禁止的 IP 发送到 Cloudflare

fail2ban 无法将禁止的 IP 发送到 Cloudflare

我在 CentOS 7 服务器上运行 WordPress 网站。我已安装并运行 fail2ban,并已验证它正在将 IP 添加到 iptables。我刚刚将 Cloudflare 添加到网站,现在我正尝试让 fail2ban 与 Cloudflare v4 API 配合使用。我遵循了此指导启动 fail2ban jails 和配置。一切似乎都正常,但 fail2ban 无法将被禁止的 IP 发送给 Cloudflare。但是,我可以自己运行相同的 curl 命令,Cloudflare 会禁止该 IP。我的 Google-fu 让我失望了,因为我发现的所有内容都是无法取消禁止 IP 的。

事情是这样的:

这是我正在运行的命令。如果我从命令行运行此命令,则该 IP 将在 Cloudflare 网站中显示为被禁止。

curl -s -o /dev/null -X POST -H 'X-Auth-Email: [email protected]' -H 'X-Auth-Key: xxxx' \
        -H 'Content-Type: application/json' -d '{ "mode": "block", "configuration": { "target": "ip", "value": "1.2.3.4" } }' \
        https://api.cloudflare.com/client/v4/user/firewall/access_rules/rules

当 fail2ban 尝试相同的命令时,结果如下(已打开调试日志):

2020-02-29 01:42:01,129 fail2ban.actions        [25495]: NOTICE  [wordpress-hard] Ban 1.2.3.4
2020-02-29 01:42:01,129 fail2ban.action         [25495]: DEBUG   curl -s -o /dev/null -X POST -H 'X-Auth-Email: [email protected]' -H 'X-Auth-Key: XXXX' \
-H 'Content-Type: application/json' -d '{ "mode": "block", "configuration": { "target": "ip", "value": "1.2.3.4" } }' \
https://api.cloudflare.com/client/v4/user/firewall/access_rules/rules
2020-02-29 01:42:01,153 fail2ban.utils          [25495]: ERROR   7f35e1c815b0 -- exec: curl -s -o /dev/null -X POST -H 'X-Auth-Email: [email protected]' -H 'X-Auth-Key: XXXX' \
-H 'Content-Type: application/json' -d '{ "mode": "block", "configuration": { "target": "ip", "value": "1.2.3.4" } }' \
https://api.cloudflare.com/client/v4/user/firewall/access_rules/rules
2020-02-29 01:42:01,153 fail2ban.utils          [25495]: ERROR   7f35e1c815b0 -- returned 7
2020-02-29 01:42:01,153 fail2ban.actions        [25495]: ERROR   Failed to execute ban jail 'wordpress-hard' action 'cloudflare' info 'ActionInfo({'ip': '1.2.3.4', 'fid': <function <lambda> at 0x7f35e23f9a28>, 'family': 'inet4', 'raw-ticket': <function <lambda> at 0x7f35e23f9ed8>})': Error banning 1.2.3.4
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/fail2ban/server/actions.py", line 458, in __checkBan
    action.ban(aInfo)
  File "/usr/lib/python2.7/site-packages/fail2ban/server/action.py", line 540, in ban
    raise RuntimeError("Error banning %(ip)s" % aInfo)
RuntimeError: Error banning 1.2.3.4

我遗漏了什么?我发现有一页讨论了“7f35e1c815b0 -- 返回 7”错误作为 Cloudflare 速率限制的一部分,但我还远远没有达到该限制。

答案1

事实证明,SELinux 阻止了 fail2ban 使用 curl。我找到了它,并按照本指南通过添加新的策略包来修复它:摆弄 SELinux 政策。现在fail2ban正在正确更新Cloudflare。

以后在 Google 上找到此内容的人请注意:我必须将新策略命名为 fail2ban-mod 才能安装。将其命名为 fail2ban 不起作用,尽管一些互联网指南说可以。

相关内容