Это анонс новой версии 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]: Лучше, быстрее, надежнее" или пользуется этой "инкрементальной" версией — эти ветки пока к сожалению еще не слились (постараюсь закончить в ближайшее время).
Так же планируется автоматическая настраиваемая блокировка под-сетей (т.к. особенно актуально для 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
Автор: sebres