Вышла вторая версия reaction — open source инструмента для защиты серверов от брутфорса и автоматических атак. Это прямая альтернатива fail2ban, которая потребляет в разы меньше ресурсов и значительно проще в настройке.

Чем reaction лучше fail2ban

Намного легче. fail2ban написан на Python и со временем разрастается до 300 МБ RAM и около часа процессорного времени в неделю даже на небольшом сервере. reaction написан на Rust и потребляет около 25 МБ и несколько минут CPU при той же нагрузке.

Конфигурация проще и прозрачнее. У fail2ban конфигурация разбросана по 160 файлам с нестандартным синтаксисом — разобраться непросто, а написать правило для нестандартного сервиса ещё сложнее. У reaction один файл в YAML, JSON или JSONnet, без скрытых настроек по умолчанию. Чтобы защитить новый сервис, достаточно добавить несколько строк.

Читает любой поток данных. fail2ban работает с файлами логов. reaction запускает произвольную команду и читает её вывод — journalctl, tail, docker logs, что угодно. Это даёт больше гибкости без дополнительных настроек.

Действия не ограничены блокировкой IP. В fail2ban основное действие — добавить IP в файрволл. reaction позволяет выполнить любую команду: отправить письмо, записать в базу данных, дёрнуть webhook. Можно задать несколько действий с разными таймерами — например, заблокировать сразу, а разблокировать через 24 часа.

Поддержка IPv6 из коробки. В fail2ban IPv6 появился позже и требует отдельной настройки. В reaction поддержка IPv4 и IPv6 встроена и работает единообразно.

Конфигурацию можно разбить на файлы. Удобно для серверов, где конфигурация генерируется автоматически через Ansible, Puppet или аналоги — каждый сервис описывается в своём файле.

Что нового в v2

Вторая версия — полная переработка на Rust. Производительность выросла: в стресс-тесте на 4 миллионах строк логов v2 справилась за 42 секунды против 2 минут у первой версии, пиковое потребление памяти снизилось втрое. Добавлены автодополнение для bash/zsh/fish, man-страницы, команда reaction test-config для проверки конфига до запуска. Готовые пакеты теперь доступны для x86-64 и arm64.

Разработка получила грант от европейского фонда NLnet. В планах — система плагинов, кластеризация (обмен банлистами между серверами) и независимый аудит безопасности.

Исходный код и документация: framagit.org/ppom/reaction.

← Ко всем новостям