Я использую fail2ban 0.9.3 в Ubuntu 16.04. Мой jail.local
выглядит так:
[DEFAULT]
banaction = ufw
[apache-post]
enabled = true
filter = apache-post
port = http,https
logpath = /var/log/apache2/other_vhosts_access.log
maxretry = 20
bantime = 3600
Я запускаю fail2ban 0.9.3 на ubuntu 16.04.
У меня есть обычай ufw
действие определяется следующим образом:
[Definition]
actionstart =
actionstop =
actioncheck =
actionban = ufw insert 1 deny from <ip>
actionunban = ufw delete deny from <ip>
(Он отличается от того, который поставляется с fail2ban, поскольку просто блокирует IP на всех портах).
Действие работает - если я сделаю fail2ban-client set apache-post banip 10.0.0.1
а затем проверьте ufw status
, IP забанен:
To Action From
-- ------ ----
Anywhere DENY 10.0.0.1
Но когда сервер перезапускается и работает, возникает проблема. fail2ban правильно отслеживает журналы и инициирует бан, но IP-адреса не забанены в ufw. Вот образец журнала:
2018-10-09 14:00:57,679 fail2ban.actions [31576]: NOTICE [apache-post] Ban 10.0.5.2
2018-10-09 14:01:02,897 fail2ban.actions [31576]: NOTICE [apache-post] 10.0.5.2 already banned
2018-10-09 14:01:07,903 fail2ban.actions [31576]: NOTICE [apache-post] 10.0.5.2 already banned
2018-10-09 14:01:12,908 fail2ban.actions [31576]: NOTICE [apache-post] 10.0.5.2 already banned
2018-10-09 14:01:17,914 fail2ban.actions [31576]: NOTICE [apache-post] 10.0.5.2 already banned
Если я проверю ufw status
то IP не был забанен - очевидно, что действие на самом деле не было выполнено, но fail2ban считает, что это так.
Если я перезапущу сервер fail2ban на этом этапе, он проверит последние журналы и успешно запретить IP - т.е. когда он выполняет действия при перезапуске, ufw
действие выполнено правильно. Аналогично, если я вручную запустил banip
команда, то IP правильно забанен. Но запреты на мониторинг логов не работают.
Я не понимаю, почему он работает вручную, но не в обычном режиме. Как мне отладить это?
UFW работает:
> sudo ufw status
Status: active
И проверка статуса тюрьмы показывает, что она активна и думает, что заблокировала IP-адреса:
Status for the jail: apache-post
|- Filter
| |- Currently failed: 0
| |- Total failed: 643
| `- File list: /var/log/apache2/other_vhosts_access.log
`- Actions
|- Currently banned: 9
|- Total banned: 11
`- Banned IP list: 10.0.5.2 (and more)
Вы подтвердили, что ufw действительно работает? Например. на моих установках Ubuntu, для этого требуется установка 'enabled = YES' в /etc/ufw/ufw.conf
чтобы ufw запускался при загрузке. В Ubuntu 16.04 он по умолчанию отключен.
Я так понимаю, вы говорите, что заменили значение по умолчанию /etc/fail2ban/action.d/ufw.conf
? Зачем? Ваш рецепт работает с оригинальной версией?
Что значит fail2ban status <JAIL>
покажись?