InfraGuard

Наборы правил обнаружения

Каталог только для чтения, который приводит каждое правило обнаружения, наблюдаемое InfraGuard, к 44 наборам правил в 11 категориях, показывая счётчики срабатываний в реальном времени и, по клику, недавние события, совпавшие с каждым набором.

Обзор — что делает экран

Наборы правил обнаружения (/security/rulesets) — это эталонная библиотека, которая приводит каждое правило обнаружения, наблюдаемое и оцениваемое InfraGuard, к 44 наборам правил в 11 категориях. Экран решает три задачи в одном месте:

  1. Обзор — раскладывает карточки наборов правил внутри разделов по категориям и показывает для выбранного временного окна (1h/6h/24h) фактическое количество событий и отметку времени последнего появления для каждого набора.
  2. Пояснение — описывает каждый набор правил в три шага (что обнаруживает · почему срабатывает · худший случай).
  3. Воспроизведение — клик по карточке открывает модальное окно с недавними событиями, фактически совпавшими с этим набором правил, в таблице, специфичной для движка.

Ключ архитектуры — разделение структуры классификации и пояснительного текста. Структура (категории, ключи наборов правил, правила совпадения по движкам) находится в независимом от локали статическом SOT App\Support\SecurityRulebook (безопасно для кеша), а пояснительный текст (название, значение, признаки, риск) — в resources/lang/{ko,en}/secrules.php. Фронтенд объединяет их по key+category при отрисовке.

Этот экран строго доступен только для чтения. Он не включает, не отключает, не редактирует и не удаляет наборы правил. Это справочный каталог, отвечающий на вопрос «что сейчас наблюдается в этой организации и что это значит?». Место, где действительно изменяются константы обнаружения (пороги/окна), — Правила и пороги (Администрирование ▸ Правила).

44 набора правил подключены к реальной телеметрии

Наборы правил — не абстрактные правила: каждый связан с реальной таблицей сбора через правило совпадения (match). Все источники находятся на соединении legacy_glory (устаревшая БД, которую наполняет парк коллекторов).

Движок Правило совпадения Таблица-источник Наборы правил
Suricata IDS sig: совпадение по подстроке в нижнем регистре с массивом фрагментов сигнатур suricata_alert_ct 33
Web (nginx) classifyWeb: приоритетная, непересекающаяся классификация запросов is_suspicious по url/ua/status nginx_meta_ct 8
Kitsune ML source=kitsune: аномальные IP по автокодировщику kitsune_detail_log 1
Эвристика (srct) source=srct: эвристические прогоны по сканированию/интенсивности srct_process_log 1
Отпечаток JA3 source=ja3: разнообразие JA3 (ротация) по IP-источнику suricata_tls_ct 1

Когда использовать

Компоновка

Верхние KPI

KPI Подпись Значение
total Наборы правил Всего наборов правил в каталоге (всегда 44)
active Наблюдаемые наборы правил Наборы правил, у которых в окне сработало хотя бы одно событие (firing)
events События в окне Сумма счётчиков событий по всем наборам правил
cats Категории Количество категорий (11)

Внутренне также вычисляются суммы по движкам (итоги событий kitsune и suricata), чтобы цифры оставались согласованными со ступенью «наборы правил» воронки защиты в разделе «Безопасность».

Элементы управления

Разделы категорий и карточки наборов правил

11 категорий образуют разделы в порядке отображения, а внутри каждого раздела наборы правил размещаются в сетке карточек minmax(600). На каждой карточке — название набора правил, значок MDI, значок серьёзности (crit/warn/info), количество событий в окне, отметка времени последнего появления и [Open]. При отсутствии событий отображается «тихо / в окне ничего не наблюдалось».

# Ключ категории Подпись Движок Наборы правил
1 tcp_stream Целостность TCP-потока Suricata 10
2 packet_decode Декодирование пакетов Suricata 4
3 protocol_anomaly Аномалия протокола Suricata 5
4 http_anomaly Соответствие HTTP Suricata 5
5 tls_anomaly Аномалия TLS Suricata 5
6 dns_anomaly Аномалия DNS Suricata 1
7 mail_anomaly Аномалия почты (SMTP) Suricata 3
8 web_attack Шаблоны веб-атак nginx 8
9 ml_anomaly ML-обнаружение аномалий Kitsune 1
10 heuristic_scan Эвристическое сканирование srct 1
11 tls_fingerprint Отпечаток JA3 JA3 1

Как пользоваться

1) Выберите окно → прочитайте общую картину

Сначала выберите интересующее окно (1h/6h/24h). По значению active (наблюдаемые наборы правил) и счётчику событий на каждой карточке видно, что срабатывает сейчас. Учтите, что значок серьёзности отражает подразумеваемую серьёзность: большинство событий движка Suricata имеют sev3 (информационные), но их смысл различается (шум / сканирование / эксплуатация). Значок набора правил отражает именно этот оттенок подразумеваемого, а не исходный sev.

2) Кликните по карточке → модальное окно недавних событий

Клик по карточке вызывает /security/rulesets/events?key=<rulesetKey>&range=<window> и открывает модальное окно, содержащее:

Столбцы таблицы событий, специфичной для движка:

Движок Столбцы
Suricata время · src · dst · порт · proto · сигнатура · sev
nginx время · src · хост · метод · URL (rawurldecode, 180 символов) · статус
Kitsune время · IP · оценка аномальности · сессии · заблокирован
srct время · просканировано · заблокировано · примечание
JA3 время · IP · разнообразие JA3 · TLS-соединения · разнообразие SNI

3) Приоритет классификации веб-атак (непересекающийся)

8 веб-наборов правил (nginx) взаимно не пересекаются. Один запрос is_suspicious=1 просматривается в порядке определения в каталоге и относится ровно к одному первому совпавшему набору правил; если не совпал ни один, он попадает в общий перехватчик (web_suspicious_other). Поэтому один и тот же запрос никогда не учитывается дважды в двух веб-наборах правил.

Приоритет Ключ набора правил Признак совпадения (url/ua) Серьёзность
1 web_secret_scan .env .git wp-config id_rsa .aws credentials backup.sql .bak warn
2 web_path_traversal ../ ..%2f %2e%2e etc/passwd boot.ini proc/self crit
3 web_sqli union select information_schema sleep( or 1=1 %27or crit
4 web_xss <script onerror= javascript: document.cookie warn
5 web_rce_probe /bin/sh exec( system( jndi: ${ phpunit crit
6 web_admin_brute wp-login xmlrpc.php phpmyadmin /admin/login warn
7 web_bad_bot UA: sqlmap nikto masscan nuclei python-requests curl/ warn
8 web_suspicious_other (перехватчик — подозрительные запросы, не совпавшие ни с одним из перечисленных выше) info

Из соображений производительности веб-классификация агрегирует по выборке из 6,000 самых свежих строк (предел репозитория — 8,000). Во время интенсивных сканирований события за пределами выборки могут не отражаться — читайте цифры как распределение/тенденцию, а не как абсолютные счётчики.

4) Что подразумевает совпадение по подстроке в Suricata

Наборы правил Suricata срабатывают по совпадению подстроки в нижнем регистре со строкой сигнатуры. Например, stream_invalid_ts суммирует каждое событие, в сигнатуре которого есть invalid timestamp. Один набор правил может объединять несколько фактических сигнатур (они видны как чипы «совпавшие сигнатуры» в модальном окне), а ключевые слова sig разных наборов правил спроектированы так, чтобы не пересекаться.

5) Измеренный пример (для справки)

Иллюстративный снимок за 24h: срабатывают 37 из 44 наборов правил, stream_invalid_ts 10,243, web_secret_scan 3,304 (в основном 404 из семейства .env), srct_heuristic 126,252, ja3_rotation 300 (разнообразие 307/307). Значения зависят от организации и момента времени.

Источники данных

Все источники — это соединение legacy_glory (только чтение), доступное исключительно через config('database.connections.legacy_glory') — без жёстко зашитых учётных данных.

Семейство наборов правил Таблица Методы репозитория (выдержка)
Suricata (33) suricata_alert_ct signatureHistogram() · recentAlertsBySignatures() · distinctIpsBySignatures()
Web (8) nginx_meta_ct (is_suspicious=1) suspiciousRows($since, 6000)
Kitsune ML (1) kitsune_detail_log kitsuneCount() · kitsuneRecentInWindow()
Эвристика (1) srct_process_log srctBlockedSum() · srctRunsInWindow()
JA3 (1) suricata_tls_ct topJa3Ips($since, N, excludePrefixes)

Производительность и кеширование

Доступ

Соглашение об уровнях: demo=1 · staff=5 · admin=10. Некоторые области дополнительно защищены middleware infr.level:N. Полную схему градаций см. в разделе Уровни RBAC.

Устранение неполадок и FAQ

Все карточки показывают «тихо»

Либо в выбранном окне (по умолчанию 24h) нет совпавших событий, либо соединение legacy_glory недоступно. Служба аккуратно поглощает ошибки источника и показывает пустые счётчики (0) — карточки не исчезают. Расширьте окно или проверьте соединение.

Счётчики веб-наборов правил расходятся с [Угрозами] / [Обнаружениями]

Веб-классификация — это агрегат распределения по выборке из 6,000 самых свежих строк (а не абсолютный счётчик). Она к тому же непересекающаяся, поэтому запрос относится ровно к одному набору правил. Авторитетный источник событий определяется собственным запросом каждого экрана.

Конкретная сигнатура не попадает ни в один набор правил

Сопоставление в Suricata выполняется по подстроке ключевого слова. Новые или пользовательские сигнатуры, не охваченные каталогом, не суммируются в счётчик ни одного набора правил. Чтобы классифицировать и пояснить их, добавьте ключевое слово сигнатуры в массив sig в SecurityRulebook — это изменение кода, а не настройка времени выполнения.

Нарушителей JA3 ноль, хотя TLS-трафика много

Набор правил JA3 засчитывает как нарушителей только IP-источники с ja3_variety >= 2 (ротация отпечатка). Без ротации источник считается нормальным и не учитывается. IP собственной сети также исключаются.

У IP в модальном окне событий отображается значок internal

Это зарегистрированный IP внутренней сети, определённый через SecurityScope::internalMatchers(). Он не даёт принять за атакующих наши собственные серверы, которые направленность Suricata может пометить как «источник», и скрывает кнопку репутации. Определение внутренней сети задаётся в параметре internal_networks в разделе Операционная политика.

См. также

탐지 룰셋 카탈로그
탐지 룰셋 카탈로그