Я использую fail2ban 0.10.0, и с его помощью я могу запускать некоторые действия для блокировки попыток грубой силы из заданного единственного источника (с тегом HOST).
Но предположим, что кто-то контролирует весь блок / 24 и использует его для проведения брутфорс-атак на основе бота. Используя довольно разумную конфигурацию с findtime = 3600 и maxretry = 3 злоумышленник по-прежнему может делать около 4 попыток в минуту, не повторяя свой исходный адрес (и не запуская действие fail2ban), а затем начать заново, поскольку время поиска истекло.
Мой вопрос: во время фильтрации есть ли способ заставить fail2ban узнать о данном IP-блоке (например, / 24) и сделать время поиска и максретри действителен для любого адреса внутри этого диапазона, чтобы вызвать действие?
Например:
INFO [postfix-sasl] Found 1.1.1.1
INFO [postfix-sasl] Found 1.1.1.2
INFO [postfix-sasl] Found 1.1.1.3
NOTICE [postfix-sasl] Ban 1.1.1.0/24
Спасибо за помощь!
Это порт 25 (SMTP) или порт 587 (отправка)? У меня было сканирование порта 25, но я не заметил каких-либо значительных сканирований на порту 587. Отключение AUTH на порту 25 и требование STARTTLS перед AUTH может уменьшить атаки.
У меня есть постоянное сканирование моего IMAP-сервера. Я использую tcpwrappers с фильтром GeoIP, чтобы ограничить страны, из которых пользователи могут подключаться. Это также можно применить к порту 587, но я пока не видел необходимости.
Я не знаю ни одного доступного модуля для fail2ban, должно быть относительно легко изменить адрес с помощью python ipaddress
модуль. В ip_network
метод может сделать преобразование за вас. Для Python2 доступен бэкпорт от Python3. Вероятное место, где это можно применить, будет в коде, который сообщает найденные адреса.