fail2ban не может отправить заблокированные IP-адреса в Cloudflare

Я запускаю сайт WordPress на сервере CentOS 7. У меня установлен и работает fail2ban, и я убедился, что он добавляет IP-адреса в iptables. Я только что добавил Cloudflare на сайт, и теперь пытаюсь заставить fail2ban работать с Cloudflare v4 API. Я последовал этому руководству , чтобы получить файлы fail2ban и конфиги. Вроде все работает, но fail2ban не может отправить забаненный IP в Cloudflare. Но я могу запустить ту же команду curl сам, и Cloudflare заблокирует IP. Мой гугл-фу меня подводит, поскольку все, что я обнаружил, касается сбоев при снятии бана IP.

Вот что происходит:

Это команда, которую я выполняю. Если я запустил это из командной строки, IP-адрес отобразится на сайте Cloudflare как заблокированный.

curl -s -o /dev/null -X POST -H 'X-Auth-Email: me@email.com' -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: me@email.com' -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: me@email.com' -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, но я далек от этого предела.

0
задан 29 February 2020 в 04:11
1 ответ

Оказывается, SELinux блокировал fail2ban от использования curl. Я отследил это и исправил, добавив новый пакет политик, следуя этому руководству: Возня с политиками SELinux . Теперь fail2ban правильно обновляет Cloudflare.

Примечание для тех, кто найдет это в Google в будущем: мне пришлось назвать новую политику fail2ban-mod, чтобы она установилась. Назвать его fail2ban не получится, хотя некоторые интернет-руководства говорят, что это должно быть.

0
ответ дан 30 March 2020 в 01:32

Теги

Похожие вопросы