Вопрос или проблема
У меня сервер с 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, вам необходимо убедиться, что вы правильно настроили действия и параметры для фильтрации.
- Проверьте ваш файл
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
-
Параметр
action
: Ваша первоначальная настройка для[apache-auth]
не содержала параметраaction
. Это могло стать причиной того, что Fail2Ban не добавлял соответствующие правила в iptables для блокировки. При добавленииaction = iptables-multiport[port="http,https"]
, Fail2Ban правильно обрабатывает порты и добавляет правила в iptables. -
Проверка журнала Fail2Ban: Если у вас возникли проблемы, вы всегда можете проверить файл журнала Fail2Ban для получения более подробной информации о том, какие действия выполняет система. Журнал находится по пути
/var/log/fail2ban.log
. -
Проверка игнорируемых IP: Убедитесь, что ваш IP-адрес не попадает в список игнорируемых IP, который указывается с помощью параметра
ignoreip
в секции[DEFAULT]
. Если вы тестируете локально, возможно, ваш IP-адрес исключен в этом списке. -
Перезапустите Fail2Ban: После внесения изменений в конфигурацию не забудьте перезапустить службу Fail2Ban для применения настроек:
sudo systemctl restart fail2ban
- Подтверждение: После внесения всех изменений, проверьте статус банов командой:
fail2ban-client status apache-auth
А также проверьте iptables, чтобы убедиться, что IP-адреса, которые должны быть заблокированы, действительно находятся в списке:
iptables -L -n
После выполнения указанных шагов, система должна корректно блокировать IP-адреса, используемые для несанкционированного доступа через Apache. Ваша проблема решена!