Потоковый движок обработки событий безопасности для любого HTTP-сервера — и не только
Восемь поведенческих детекторов анализируют HTTP access-логи в реальном времени и направляют подтверждённых атакующих на любой вывод — Fail2Ban, кастомные скрипты или собственный exec+JSON-sink на любом языке.
Шесть серверов поддерживаются нативно — nginx работает без настройки. Каждый другой сервер включается одной строкой профиля. Работает за любым прокси или Cloudflare — всегда фиксирует реального атакующего, а не CDN или балансировщик.
nginx combined log format работает из коробки — профиль не нужен.
Стандартный CLF — изменения на сервере не нужны.
Стандартный access log (CLF) — настройка не требуется.
Apache CLF по умолчанию — изменения на сервере не нужны.
Требует xcaddy + плагин transform-encoder для CLF-вывода.
Требует option httplog в haproxy.cfg + rsyslog для записи в файл.
Каждый детектор добавляет очки к счёту IP. Score затухает линейно за время observation_window — никаких ложных банов от старого трафика.
Запросы к чувствительным путям: /.env, /.git/config, /.aws/credentials, /wp-config.php, /phpinfo.php, панели администратора, резервные архивы и ещё 30+. Активная разведка — срабатывает немедленно на первом запросе.
Более 100 запросов за 60 секунд с одного IP. Выявляет DDoS-зондирование, агрессивные сканеры уязвимостей, всплески перебора учётных данных и скраперы, пытающиеся держаться ниже статических ограничений.
Регистронезависимое сравнение подстрок с встроенными списками: сканеры (Nuclei, sqlmap...), граберы (Scrapy, HTTrack...) и клиенты автоматизации (python-requests, curl...). Легко расширяется через конфиг.
Более 60% ответов — 404 при минимум 10 запросах. Типичная сигнатура инструментов перебора путей (dirbuster, gobuster, ffuf). min_requests предотвращает ложные срабатывания.
Пять и более последовательно пронумерованных URL подряд — /page/1, /page/2, /article/100... Характерный признак автоматических скраперов, дампящих целые разделы сайта.
Загружает страницы, но запрашивает CSS, JS или изображения менее чем в 10% случаев — при минимум 3 просмотрах. Реальный браузер всегда загружает ресурсы; markup-only боты пропускают статику.
URL длиннее 2048 символов или содержащий известные ключевые слова обхода WAF: bypass, shell, cmd, eval, exec... Нацелен на переполнения буфера и инъекции кода.
Сравнивает User-Agent (и опционально Referer) с community-maintained списком ~685 известных плохих ботов: скраперы, SEO-краулеры, спам-боты, сканеры уязвимостей. Список обновляется ежедневно. Основан на nginx-ultimate-bad-bot-blocker — проекте Mitchell Krog и его команды.
Пакет делает всё сам: бинарник, systemd unit, Fail2Ban config и системный пользователь.
# Работает на Debian, Ubuntu, Fedora, RHEL, AlmaLinux, Rocky Linux, Arch Linux # Скрипт сам определяет дистрибутив и архитектуру (amd64 / arm64) curl -fsSL https://raw.githubusercontent.com/mr-addams/arxsentinel/main/scripts/get.sh | sudo bash
Скрипт скачивает нужный пакет с GitHub Releases, устанавливает через системный менеджер пакетов, проверяет наличие fail2ban, автоматически определяет путь к access.log и запускает сервис.
# Требуется Go 1.26+ git clone https://github.com/mr-addams/arxsentinel cd arxsentinel sudo ./scripts/install.sh sudo systemctl enable --now arxsentinel
# Docker — дистроблесс-образ (~12 МБ), uid 65532, amd64 + arm64 docker run -d \ -v /var/log/nginx/access.log:/var/log/nginx/access.log:ro \ -v /var/log/arxsentinel:/var/log/arxsentinel \ -p 127.0.0.1:9117:9117 \ ghcr.io/mr-addams/arxsentinel:latest
Метрики Prometheus доступны на :9117/metrics сразу после старта.
Docker Compose и Kubernetes (Helm DaemonSet) — подробные руководства:
README.docker.md ·
Kubernetes (Helm) README
/etc/arxsentinel/config.yaml и укажите путь к access.log. nginx работает без профиля. Для Apache, Traefik, Caddy, HAProxy или LiteSpeed укажите parser.profile с именем сервера. Конфиг перезагружается по SIGHUP — рестарт не нужен.
Добавление IP угроз в Cloudflare IP List и блокировка на краю сети — без iptables, без host firewall. Пакетные операции, асинхронный polling, автоматическое TTL-истечение и cross-instance dedup.
Запись заблокированных IP в простой blocklist-файл с автоматическим TTL-истечением и атомарной записью. arxsentinel только пишет файл; вы подключаете его в nginx как вам удобно. Опциональная reload-команда.
Управление firewall address-list RouterOS через REST API. TTL-основанный auto-unban, безопасное удаление только собственных записей arxsentinel, работает на CHR и ARM-роутерах.
Нет подходящего профиля? Опишите свой regex с именованными группами или переключитесь на JSON-парсинг — без перекомпиляции. Любой формат, который захватывает IP, timestamp, метод, путь, статус и байты, подключается к полному пайплайну обнаружения.
Слежение за несколькими файлами лога в одном процессе. Внутри каждого потока — независимые pipeline со своими детекторами, источниками и sink'ами. Совместное IP-состояние через tracker_group для коррелированного анализа нескольких логов.
Готовые профили для популярных серверов. Переопределяйте позиции полей, форматы дат и правила разделителей для каждого источника лога без изменения ядра.
Разворачивается рядом с любым контейнеризованным HTTP-сервером через общий том с логами — без изменений в контейнере приложения. Готовый docker-compose.yml и конфиг в deploy/examples/docker/. Метрики Prometheus доступны на :9117.
Один pod на узел читает host-логи через hostPath. Включён Helm-чарт со справкой по values и интеграцией Prometheus Operator. Поддерживается и sidecar-топология для managed-кластеров без доступа к host-логам.
Запустите `arxsentinel validate` чтобы проверить весь конфиг перед деплоем. Topology-aware валидатор моделирует реальный поток данных и ловит нарушенную проводку, используя статические plugin manifests — без live трафика.
Буферизация событий executor через in-memory, file-based (bbolt) или Redis queue — выбирайте per executor для bare-metal, single-host или multi-replica Kubernetes.
Маршрутизация событий угроз между независимыми pipelines по имени — один pipeline может детектировать, другой enforcing, полностью decoupled.
Googlebot, Bingbot, Яндекс, DuckDuckBot, GPTBot и ещё 6 семейств верифицируются через обратный + прямой DNS. Легитимные краулеры никогда не получают очков. Фейковые боты получают штраф. Доверенные краулеры можно матчить по User-Agent только (`ua_only`, без DNS) и дать per-bot detector exemptions (`exempt_detectors`) чтобы легитимная автоматизация никогда не была наказана.
Добавьте IP офиса, VPN-подсети (CIDR), сервисы мониторинга, SEO-инструменты по подстроке User-Agent или URL-пути. Изменения применяются по SIGHUP.
Все изменения конфигурации — белые списки, веса детекторов, пороги — применяются мгновенно по SIGHUP. Без перезапуска. IP-состояние и DNS-кэш сохраняются.
Детекторы всегда оценивают реального злоумышленника — никогда Cloudflare или балансировщик нагрузки. Поддерживает CF-Connecting-IP, цепочки X-Forwarded-For и CIDR доверенных прокси из коробки.
Читает из любого источника логов. Пишет угрозы в любой приёмник. Fail2Ban остаётся вариантом по умолчанию — теперь одним из многих.
type: file · path: /var/log/nginx/access.log
type: syslog · addr: udp://0.0.0.0:5514 · без общего тома
type: http · protocol: plain|cloudflare|firehose|pubsub|loki|otlp|azure|splunk|ndjson
Отправка угроз в Telegram, Slack и PagerDuty — со встроенной дедубликацией и rate-limiting, чтобы всплеск не затопил канал.
Записывание IP угроз прямо в наборы IP-правил AWS WAF. Интегрируется с существующими группами WAF — не требует Lambda или кастомной инфраструктуры.