У меня есть сервер с Debian 9. Я установил fail2ban и настроил его. Он работает с sshd (запрещает IP при неудачных попытках входа в систему), но я не могу заставить его работать с apache-auth (IP запрещен, но iptables не блокирует его).
jail.local выглядит так:
[DEFAULT]
bantime = 720h
findtime = 60m
banaction = iptables
mta = sendmail
destemail = my-email@example.com
action = %(action_mw)s
maxretry = 2
[sshd]
enabled = true
[apache-auth]
enabled = true
Когда я запускаю compand:
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, я думал, что это решит мою проблему.
Я нашел решение!
[apache-auth]
enabled = true
action = iptables-multiport[port="http,https"]
port = http,https
«действие» отсутствовало. fail2ban отправлял диапазон портов, а iptables ожидал один порт ... после добавления такого "действия" все работает отлично.
Так что можно сказать, что проблема решена.
@Jonas Eberle - ваш конфиг есть во всех уроках, к сожалению, тоже не работал :(
Моя часть 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
есть дополнительная информация?