v2.2.0 Source Available Go Linux

От одного VPS
до Kubernetes —
один бинарник, нулевые накладные расходы

Потоковый движок обработки событий безопасности для любого HTTP-сервера — и не только

Восемь поведенческих детекторов анализируют HTTP access-логи в реальном времени и направляют подтверждённых атакующих на любой вывод — Fail2Ban, кастомные скрипты или собственный exec+JSON-sink на любом языке.

↓ Установить GitHub
nginx / Apache / Traefik / Caddy / HAProxy / LiteSpeed access.log
Profile (формат лога · маппинг полей · тип сервера)
TailReader × N потоков (inotify · поддержка logrotate)
Parser (ngx_http_realip · CF-Connecting-IP · XFF цепочка)
Whitelist (IP · CIDR · UA · верификация DNS)
Tracker (состояние IP · ring buffer · счётчики rate)
Scorer (8 детекторов · линейный decay)
threats.log
Fail2Ban → бан через iptables
8
Поведенческих детекторов
3
Топологии · bare-metal · Docker · K8s
11
Семейств ботов
Плагины · любой язык · exec+JSON
2
Архитектуры (amd64 · arm64)
~16 МБ
Один бинарь · arm64 готов

Любой сервер. Любой прокси. Реальный IP.

Шесть серверов поддерживаются нативно — nginx работает без настройки. Каждый другой сервер включается одной строкой профиля. Работает за любым прокси или Cloudflare — всегда фиксирует реального атакующего, а не CDN или балансировщик.

6
Профилей серверов
1
Строка конфига
0
Regex писать
Без настройки
nginx
default parser

nginx combined log format работает из коробки — профиль не нужен.

Одна строка
Apache
profile: "apache"

Стандартный CLF — изменения на сервере не нужны.

Одна строка
Traefik
profile: "traefik"

Стандартный access log (CLF) — настройка не требуется.

Одна строка
LiteSpeed / OpenLiteSpeed
profile: "litespeed"

Apache CLF по умолчанию — изменения на сервере не нужны.

Плагин
Caddy
profile: "caddy"

Требует xcaddy + плагин transform-encoder для CLF-вывода.

rsyslog
HAProxy
profile: "haproxy-http"

Требует option httplog в haproxy.cfg + rsyslog для записи в файл.

За прокси? Реальный IP всегда доходит до детектора.
Cloudflare
Traefik · Caddy · HAProxy · nginx
ваш сервер
ArxSentinel
XFF chain unwrapped CF-Connecting-IP ngx_http_realip trusted proxy CIDR реальный атакующий · всегда

8 детекторов — один score

Каждый детектор добавляет очки к счёту IP. Score затухает линейно за время observation_window — никаких ложных банов от старого трафика.

Probe

Запросы к чувствительным путям: /.env, /.git/config, /.aws/credentials, /wp-config.php, /phpinfo.php, панели администратора, резервные архивы и ещё 30+. Активная разведка — срабатывает немедленно на первом запросе.

+25 за запрос

Rate anomaly

Более 100 запросов за 60 секунд с одного IP. Выявляет DDoS-зондирование, агрессивные сканеры уязвимостей, всплески перебора учётных данных и скраперы, пытающиеся держаться ниже статических ограничений.

+25

Suspicious User-Agent

Регистронезависимое сравнение подстрок с встроенными списками: сканеры (Nuclei, sqlmap...), граберы (Scrapy, HTTrack...) и клиенты автоматизации (python-requests, curl...). Легко расширяется через конфиг.

+15 до +40

Bruteforce

Более 60% ответов — 404 при минимум 10 запросах. Типичная сигнатура инструментов перебора путей (dirbuster, gobuster, ffuf). min_requests предотвращает ложные срабатывания.

+30

Sequential crawler

Пять и более последовательно пронумерованных URL подряд — /page/1, /page/2, /article/100... Характерный признак автоматических скраперов, дампящих целые разделы сайта.

+20

No-asset bot

Загружает страницы, но запрашивает CSS, JS или изображения менее чем в 10% случаев — при минимум 3 просмотрах. Реальный браузер всегда загружает ресурсы; markup-only боты пропускают статику.

+20

URL overflow / WAF bypass

URL длиннее 2048 символов или содержащий известные ключевые слова обхода WAF: bypass, shell, cmd, eval, exec... Нацелен на переполнения буфера и инъекции кода.

+30

Bad Bot Blocklist

Сравнивает User-Agent (и опционально Referer) с community-maintained списком ~685 известных плохих ботов: скраперы, SEO-краулеры, спам-боты, сканеры уязвимостей. Список обновляется ежедневно. Основан на nginx-ultimate-bad-bot-blocker — проекте Mitchell Krog и его команды.

+60

~16 МБ. Работает везде.

~16 МБ
Размер бинаря · arm64
~25 МБ
RAM · конфиг для Pi 3B
>20k
Записей лога/сек · Pi 3B
0
Зависимостей рантайма
Угрозы уровня Enterprise.
Даже на железе Raspberry Pi.
Чистый Go-бинарь — без JVM, без Python, без утечек памяти. Запускается нативно на Raspberry Pi 3B (ARM Cortex-A53): ~25 МБ RAM, 22k+ записей лога в секунду — в 20 раз быстрее любой реальной нагрузки на Pi.

Без чёрных ящиков. Детерминированная оценка — каждый бан обоснован и виден в структурированных JSON-логах.
YAML конфиг перезагрузка по SIGHUP JSON логи Prometheus метрики нативный arm64 Raspberry Pi 3B systemd unit

Установка за 3 шага

Пакет делает всё сам: бинарник, 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 — рестарт не нужен.

Блокировка на нужном уровне

Cloudflare WAF

Добавление IP угроз в Cloudflare IP List и блокировка на краю сети — без iptables, без host firewall. Пакетные операции, асинхронный polling, автоматическое TTL-истечение и cross-instance dedup.

nginx

Запись заблокированных IP в простой blocklist-файл с автоматическим TTL-истечением и атомарной записью. arxsentinel только пишет файл; вы подключаете его в nginx как вам удобно. Опциональная reload-команда.

MikroTik RouterOS v7

Управление firewall address-list RouterOS через REST API. TTL-основанный auto-unban, безопасное удаление только собственных записей arxsentinel, работает на CHR и ARM-роутерах.

Один процесс. Любая топология.

Произвольный формат логов

Нет подходящего профиля? Опишите свой regex с именованными группами или переключитесь на JSON-парсинг — без перекомпиляции. Любой формат, который захватывает IP, timestamp, метод, путь, статус и байты, подключается к полному пайплайну обнаружения.

Мультипоток и pipeline-маршрутизация

Слежение за несколькими файлами лога в одном процессе. Внутри каждого потока — независимые pipeline со своими детекторами, источниками и sink'ами. Совместное IP-состояние через tracker_group для коррелированного анализа нескольких логов.

Профили серверов

Готовые профили для популярных серверов. Переопределяйте позиции полей, форматы дат и правила разделителей для каждого источника лога без изменения ядра.

Docker Compose sidecar

Разворачивается рядом с любым контейнеризованным HTTP-сервером через общий том с логами — без изменений в контейнере приложения. Готовый docker-compose.yml и конфиг в deploy/examples/docker/. Метрики Prometheus доступны на :9117.

Kubernetes DaemonSet

Один pod на узел читает host-логи через hostPath. Включён Helm-чарт со справкой по values и интеграцией Prometheus Operator. Поддерживается и sidecar-топология для managed-кластеров без доступа к host-логам.

Offline config validation

Запустите `arxsentinel validate` чтобы проверить весь конфиг перед деплоем. Topology-aware валидатор моделирует реальный поток данных и ловит нарушенную проводку, используя статические plugin manifests — без live трафика.

Pluggable queue backends

Буферизация событий executor через in-memory, file-based (bbolt) или Redis queue — выбирайте per executor для bare-metal, single-host или multi-replica Kubernetes.

Named Channel Switch

Маршрутизация событий угроз между независимыми 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

Детекторы всегда оценивают реального злоумышленника — никогда Cloudflare или балансировщик нагрузки. Поддерживает CF-Connecting-IP, цепочки X-Forwarded-For и CIDR доверенных прокси из коробки.

Работает с вашим стеком

Читает из любого источника логов. Пишет угрозы в любой приёмник. Fail2Ban остаётся вариантом по умолчанию — теперь одним из многих.

Источники

nginx Apache Traefik Caddy HAProxy LiteSpeed любой лог-файл stdin pipe syslog-приёмник HTTP (push/pull)

Приёмники

Fail2Ban Cloudflare WAF MikroTik RouterOS nginx blocklist exec+JSON stdout JSON Grafana Loki (скоро) Splunk HEC (скоро) Datadog (скоро) Telegram (скоро)
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

Что появится в v2.x

NEXT

Alert sinks

Отправка угроз в Telegram, Slack и PagerDuty — со встроенной дедубликацией и rate-limiting, чтобы всплеск не затопил канал.

PLANNED

AWS WAF executor

Записывание IP угроз прямо в наборы IP-правил AWS WAF. Интегрируется с существующими группами WAF — не требует Lambda или кастомной инфраструктуры.