v2.2.0 Source Available Go Linux

Від одного VPS
до Kubernetes —
один бінарник, нульові накладні витрати

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

Вісім поведінкових детекторів аналізують HTTP access-логи в реальному часі та спрямовують підтверджених зловмисників на будь-який вивід — Fail2Ban, кастомні скрипти або власний exec+JSON-sink на будь-якій мові. Працює на одному VPS, у Docker Compose або як Kubernetes DaemonSet.

↓ Встановити 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 може детектувати, інший примусити, повністю 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 або кастомної інфраструктури.