Правила агрегации
Вы можете использовать правила агрегации для объединения корреляционных событий в алертах. Рекомендуется использовать правила сегментации вместе с правилами агрегации для определения более точных правил создания инцидентов.
Стандартное поведение 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 |