Я использую 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, установите apache-post banip 10.0.0.1
, а затем проверьте статус ufw
, 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
, то 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
?