Содержание
Правила агрегации
Вы можете использовать правила агрегации для объединения корреляционных событий в алертах. Рекомендуется использовать правила сегментации вместе с правилами агрегации для определения более точных правил создания инцидентов.
Стандартное поведение Open Single Management Platform заключается в объединении событий, имеющих один и тот же идентификатор правила, со следующими ограничениями:
- по времени (в течение 30 секунд);
- по количеству событий (100 событий);
- по количеству активов (100 активов);
- по количеству наблюдаемых объектов (200 наблюдаемых объектов);
- по общему объему событий, 4 МБ.
Вы можете использовать REST API для настройки правил агрегации.
Правила агрегации. Пример
В таблице ниже описано, как проводить тестирование на проникновение для проверки системы защиты с предопределенными IP и учетными записями пользователей.
Правило 1. Тестирование на проникновение для проверки системы защиты
Атрибут |
Value |
Описание. |
Приоритет. |
0 |
Наивысший приоритет. |
Триггер |
any(.Observables[]? | select(.Type == "ip") | .Value; . == "10.10.10.10" or . == "10.20.20.20") |
Правило срабатывает, если алерт включает наблюдаемый IP с любым из следующих значений:
|
Идентификатор правила агрегации |
"Pentest" |
Правило указывает идентификатор, с помощью которого события объединяются в алерт. |
Название алерта |
"[Pentest] " + ([.Rules[]?.Name] | join(",")) |
Правило добавляет тег "[Pentest]" и имя правила к названию алерта. Название правила берется из первого агрегированного алерта, последующие алерты не влияют на итоговое название алерта, даже если они были созданы по другому правилу. |
Интервал агрегации |
30 seconds |
|
Правило 2. Тестирование на проникновение для проверки системы защиты с помощью учетной записи пользователя
Атрибут |
Value |
Описание. |
Приоритет. |
1 |
|
Триггер |
any(.Observables[]? | select(.Type | ascii_downcase == "username") | .Value; . == "Pentester-1" or . == "Pentester-2") |
Правило срабатывает, если алерт включает наблюдаемое имя учетной записи пользователя с любым из следующих значений:
|
Идентификатор правила агрегации |
"Pentest" |
Правило указывает идентификатор, с помощью которого события объединяются в алерт. |
Название алерта |
"[Pentest] " + ([.Rules[]?.Name] | join(",")) |
Правило добавляет тег "[Pentest]" и имя правила к названию алерта. Название правила берется из первого агрегированного события, последующие агрегированные события не влияют на итоговое название алерта. |
Интервал агрегации |
30 seconds |
|
Правило 3. Правило агрегации
Атрибут |
Value |
Описание. |
Приоритет. |
2 |
|
Триггер |
.Rules | length > 0 |
Правило срабатывает, если список правил не пуст. |
Идентификатор правила агрегации |
([.Rules[].ID // empty] | sort | join(";")) |
Правило объединяет идентификаторы правил. |
Название алерта |
([.Rules[]?.Name // empty] | sort | join(",")) + " " + (.SourceCreatedAt) |
Правило объединяет названия правил и добавляет дату создания алерта. |
Интервал агрегации |
30 seconds |
|
Правила агрегации и сегментации. Пример
В таблица ниже описано, как объединить алерты, имеющие одинаковый идентификатор правила, в двух инцидентах на основе префикса имени пользователя.
Правило агрегации
Атрибут |
Value |
Описание. |
Триггер |
any(.Rules[]?; .ID == "123") |
Поиск алертов с идентификатором правила "123". |
Идентификатор правила агрегации |
if any(.OriginalEvents[]?.BaseEvents[]?.DestinationUserName // empty; startswith("adm_")) then "rule123_DestinationUserName_adm" else "rule123_DestinationUserName_not_adm" end |
Поиск имен пользователей с префиксом "adm_". |
Название алерта |
if any(.OriginalEvents[]?.BaseEvents[]?.DestinationUserName // empty; startswith("adm_")) then "Rule123 admin" else "Rule123 not admin" end |
Устанавливает название алерта в зависимости от префикса имени пользователя. |
Правило сегментации
Атрибут |
Value |
Триггер |
.AggregationID | startswith("rule123_DestinationUserName") |
Группы |
[.AggregationID] |
Название инцидента |
.Name |