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