
ОС: Ubuntu Server 18.04
Fail2ban: v0.10.2
Я пытаюсь понять ошибку в моей установке Fail2ban (я думаю, что это моя собственная разработка). У меня есть задание cron, которое заполняет iptables предопределенным списком с помощью:
iptables -A INPUT -s <ip address> -j DROP
iptables -A INPUT -s <ip address> -j DROP
etc
etc
В начале этого скрипта выполняется следующее:
iptables -F INPUT
для очистки цепочки INPUT. Это задание cron присутствовало на сервере до того, как я установил Fail2ban для динамического бана плохих участников. Однако я заметил, что начал получать много уведомлений о том, что определенный IP-адрес был already banned
. Когда я остановил выполнение задания cron iptables, эта ошибка исчезла и работала без каких-либо проблем.
Мой вопрос: какой конфликт я создаю, запуская его, iptables -F INPUT
пока Fail2ban все еще работает? Разве эта команда не должна быть в порядке, поскольку запрещенные IP-адреса помещаются в соответствующую f2b-<jail>
цепочку, или я не понимаю? Если этот скрипт iptables должен быть запущен, должен ли я также что-то сделать с базой данных Fail2ban (очистить и т. д.)?
Спасибо.
решение1
fail2ban также должен разместить правила в цепочке INPUT для вызова цепочек, которые он определяет для каждой отдельной тюрьмы. Удаляя их, вы заставляете эти правила не применяться, и IP-адреса, которые должны быть забанены, все равно проходят, и fail2ban предупреждает вас об этом, говоря, что они уже забанены.
У вас не должно быть никаких причин очищать цепочку INPUT таким образом. Вместо этого ваше задание cron должно создать свою собственную определяемую пользователем цепочку и только добавить в цепочку INPUT правило для вызова этой определяемой пользователем цепочки. А еще лучше, вы должны использовать ipset, который имеет лучшую производительность и также может быть атомарно заменен, когда вы хотите его изменить. (И по этой же причине вы должны заставить fail2ban использовать ipsets.)