Debian с iptables и fail2ban не блокирует IP

Вопрос или проблема

У меня сервер с Debian 9. Я установил fail2ban и настроил его. Он работает с sshd (блокирует IP при неудачных попытках входа), но я не могу заставить его работать с apache-auth (IP заблокирован, но iptables не блокирует его).

Файл jail.local выглядит так:

[DEFAULT]
bantime  = 720h
findtime  = 60m
banaction = iptables
mta = sendmail
destemail = [email protected]
action = %(action_mw)s
maxretry = 2

[sshd]
enabled = true

[apache-auth]
enabled = true

Когда я выполняю команду:

fail2ban-client status sshd

она показывает заблокированный IP. Когда я выполняю команду:

iptables -L -n

Она показывает IP из предыдущей команды. Значит, это работает правильно.

Когда я запускаю:

fail2ban-client status apache-auth

Она показывает заблокированный IP (меня).

iptables -L -n

Не показывает никаких IP из предыдущего списка. Возможно, важно, что iptables показывает:

Chain f2b-apache-auth (0 references)

И я все еще могу подключиться к серверу через WWW. То же самое произошло у меня с nginx, поэтому я переключился на apache, думал, это решит мою проблему.

Моя часть jail.conf для apache выглядит немного иначе

[apache]
enabled  = true
port     = http,https
filter   = apache-auth
logpath  = /var/log/apache*/*error.log
maxretry = 6

Вы можете найти загруженную конфигурацию с помощью

fail2ban-client -d

Вы сказали, что тестируете локально. Убедитесь, что ваш IP не находится в маске сети, указанной в ignoreip.

Поскольку действие, вероятно, срабатывает в вашем случае, посмотрите на запись actionban и посмотрите, действительно ли оно добавляет нужное правило iptables.

Возможно, var/log/fail2ban.log содержит больше информации?

Я нашел решение!

[apache-auth]
enabled = true
action   = iptables-multiport[port="http,https"]
port     = http,https

В разделе ‘action’ отсутствовало. fail2ban отправлял диапазон портов, а iptables ожидал один порт… после добавления такого “действия” все работает отлично.

Так что можно сказать, что это решено.

@Jonas Eberle – ваша конфигурация есть во всех учебниках, к сожалению, тоже не работала 🙁

Ответ или решение

Для решения проблемы блокировки IP-адресов с помощью Fail2Ban в конфигурации с Apache на Debian 9, вам необходимо убедиться, что вы правильно настроили действия и параметры для фильтрации.

  1. Проверьте ваш файл jail.local: Убедитесь, что у вас правильно указаны настройки для apache-auth. В частности, важным моментом является наличие правильного действия для блокировки IP-адресов.
[DEFAULT]
bantime  = 720h
findtime  = 60m
banaction = iptables-multiport
mta = sendmail
destemail = your_email@example.com
action = %(action_mw)s
maxretry = 2

[sshd]
enabled = true

[apache-auth]
enabled = true
action = iptables-multiport[port="http,https"]
port = http,https
logpath = /var/log/apache*/*error.log
maxretry = 6
  1. Параметр action: Ваша первоначальная настройка для [apache-auth] не содержала параметра action. Это могло стать причиной того, что Fail2Ban не добавлял соответствующие правила в iptables для блокировки. При добавлении action = iptables-multiport[port="http,https"], Fail2Ban правильно обрабатывает порты и добавляет правила в iptables.

  2. Проверка журнала Fail2Ban: Если у вас возникли проблемы, вы всегда можете проверить файл журнала Fail2Ban для получения более подробной информации о том, какие действия выполняет система. Журнал находится по пути /var/log/fail2ban.log.

  3. Проверка игнорируемых IP: Убедитесь, что ваш IP-адрес не попадает в список игнорируемых IP, который указывается с помощью параметра ignoreip в секции [DEFAULT]. Если вы тестируете локально, возможно, ваш IP-адрес исключен в этом списке.

  4. Перезапустите Fail2Ban: После внесения изменений в конфигурацию не забудьте перезапустить службу Fail2Ban для применения настроек:

sudo systemctl restart fail2ban
  1. Подтверждение: После внесения всех изменений, проверьте статус банов командой:
fail2ban-client status apache-auth

А также проверьте iptables, чтобы убедиться, что IP-адреса, которые должны быть заблокированы, действительно находятся в списке:

iptables -L -n

После выполнения указанных шагов, система должна корректно блокировать IP-адреса, используемые для несанкционированного доступа через Apache. Ваша проблема решена!

Оцените материал
Добавить комментарий

Капча загружается...