Pull to refresh

Fail2ban 0.10: Новые возможности. Тест открыт

Reading time3 min
Views20K

Это анонс новой версии fail2ban (пока тестовая альфа-ветка), в которой помимо многих других улучшений и вкусностей, хоть и с опозданием, все же появилась давно запланированная поддержка IPv6.
Время, будь оно не ладно — летит с бешеной скоростью.


Коротко перечень нового, уже вошедшего (и с большой вероятностью вольющегося в скором времени) в fail2ban версии 0.10:


  • конечно же поддержка IPv6 (пока только для iptables, iptables-ipset, firewallcmd, pf)
  • новый синтаксис для псевдо-условных разделов в файлах конфигурации, используется для условного замещения и интерполяции параметров для различных хост-типов, пример [Init?family=inet6] (в настоящее время пока используется только для поддержки IPv6)
  • существенное увеличение производительности fail2ban по сравнению с версией 0.9.x
  • предотвращение регрессии производительности с ростом числа IP адресов (failure и ban)
  • предотвращение ситуации out of memory, при большом количестве failure от многих IPs (maxEntries), а также оптимизация использования памяти в менеджере FailManager
  • (str2seconds) удобная настройки времени в конфигурации, т.е. возможно использование 1h вместо 3600 или 1d вместо 86400, и т.д.
  • (seekToTime) — быстрый старт, предотвращает долгое чтение больших файлов в первый раз после запуска службы
  • умное кэширование всего и вся (dnsToIp, ipToName, пре-интерполяции параметров вызова action и т.д.)
  • [cкоро] слияние с моей incremental версией (ветка ban-time-incr)
  • [cкоро] настраиваемый изменяемый бан-фактор (новая версия ban-time-incr), например гео-зависимость IP-адреса, ниже пример конфигурации, где IP-адрес в десять раз раньше будет считается "плохим", если страна не Россия)
    geo.country = RU:1 default:10
  • [cкоро] автоматическая настраиваемая блокировка под-сетей
  • [cкоро] полностью переписанный client-server (возможность исполнения в режиме foreground, покрытие тестами, новая команда «restart» в дополнение к «reload», изменяемый уровень детализации до heavydebug при старте и другие улучшения)

Существенный рост производительности в fail2ban версии 0.10 можно грубо оценить в следующих цифрах:


Оценка / Версия 0.9.4 0.10
Среднее время реакции (Задержка нахождения failure) 200 мс 15 мс
Среднее время до блокировки (Задержка блокировки) 150 мс 10 мс
Максимальное время реакции (Задержка нахождения failure) 500 мс 30 мс
Максимальное время до блокировки (Задержка блокировки) 1000 мс 20 мс
Средняя скорость блокировки 6 IP/сек 170 IP/сек
Рост задержки блокировки (Регрессия) 100 мс/1000 IPs 5 мс/1000 IPs

На оценку довольно сильно влияет множество параметров, таких как активность (паразитного) логгирования, качество (и количество) регулярных выражений (фильтр fail2ban), скорость вызова и тип banaction, lookups-параметры типа usedns и т.д. и т.п. Однако при прочих равных, в близком к идеалу случае, получаются примерно такие цифры.


Для тех кто-читал мою статью "Fail2ban [incremental]: Лучше, быстрее, надежнее" или пользуется этой "инкрементальной" версией — все новое 0.10 слил в этой ветке — https://github.com/sebres/fail2ban/tree/0.10-full. Буду поддерживать здесь пока не зарелизим (см. PR gh-1460)


Так же планируется автоматическая настраиваемая блокировка под-сетей (т.к. особенно актуально для IPv6-адресов). Просто класть в бан по отдельности 216 (или 65.536) IPv6-адресов при наличии у злоумышленника под-сети X::/112 как-то не комильфо (умолчим уже про под-сети высшего порядка).
Надеюсь до релиза 0.10 этот функционал все-таки допилится.


Я повторюсь, 0.10 — это пока тестовая ветка. Все кто хочет принять участие в тестировании или доработать например поддержку других action — добро пожаловать.


Скачать:
https://github.com/fail2ban/fail2ban/archive/0.10.zip


Гит:
git clone -b 0.10 https://github.com/fail2ban/fail2ban.git

Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+25
Comments22

Articles