Схемы активных списков
В данном разделе представлен обзор структуры, принципов работы, процесса создания схемы активного списка в R-Vision SIEM. Управление активными списками осуществляется в разделе Активные списки.
О схемах активных списков
Схема активного списка — это структурированный объект данных в формате RObject (.ro), который задает конфигурацию и параметры для создания и управления активным списком. Схема определяет структуру данных, правила хранения и управления записями, а также ограничения по количеству и времени жизни записей.
Схема активного списка включает следующие компоненты: идентификатор списка, разметку данных, правила хранения и уникальные ключи для идентификации записей. Поле capacity
задает максимальное количество записей, которое может быть сохранено в списке, а поле ttl
(time-to-live) определяет срок хранения каждой записи в секундах. Структура данных описывается с помощью поля schema
, которое задает типы данных, такие как строки, числа, логические значения и метки времени.
Каждая запись в активном списке идентифицируется по одному или нескольким ключам, указанным в поле key
, что позволяет гарантировать уникальность записей. Поле content
содержит фактические данные списка, которые соответствуют структуре, определенной в schema
.
Работа с активным списком
Доступные операции над активным списком:
Создание схемы активного списка
Чтобы добавить схему активного списка:
-
Перейдите в раздел Экспертиза. Система отобразит сведения об имеющихся элементах экспертизы, в том числе их текущий статус (включен/выключен).
-
На панели инструментов нажмите на кнопку Создать и выберите из выпадающего списка опцию Схема активного списка. Система отобразит окно создания схемы активного списка.
При создании элемента экспертизы поля его структуры заполняются значениями по умолчанию. Для быстрой настройки структуры в системе доступны предустановленные примеры. Чтобы заполнить поля элемента экспертизы с помощью примера, нажмите на кнопку Примеры и выберите требуемый пример из выпадающего списка. -
Заполните поля схемы активного списка, чтобы определить логику ее работы.
Строки, начинающиеся с символа $
($foo
), интерпретируются в VRL-блоках элементов экспертизы как переменные окружения. Чтобы избежать этого, экранируйте такие строки символом$
($$foo
). -
Нажмите на кнопку Опубликовать версию, чтобы сохранить изменения и опубликовать созданную схему активного списка. Система отобразит уведомление об успешном создании схемы активного списка. Новая схема активного списка отобразится в таблице раздела Экспертиза.
Чтобы схема активного списка стала доступна при создании активного списка, ее необходимо включить. Вы можете создать схему активного списка без ее публикации (в виде черновика) с помощью кнопки Сохранить черновик. Система отобразит уведомление об успешном создании черновика схемы. Черновик отобразится в таблице раздела Экспертиза.
Изменение схемы активного списка
Чтобы изменить схему активного списка:
-
Перейдите в раздел Экспертиза. Система отобразит сведения об имеющихся элементах экспертизы, в том числе их текущий статус (включен/выключен).
-
Нажмите на строку схемы активного списка в списке. Система отобразит в правой части экрана карточку этой схемы с подробной информацией о ней.
-
Выберите опцию Изменить в выпадающем меню Действия () в верхней части карточки схемы активного списка. Отобразится окно настроек схемы.
Вы также можете открыть окно настроек с помощью кнопки в нижней части карточки:
-
Для опубликованной версии: нажмите на кнопку Просмотр в нижней части карточки. Система отобразит окно просмотра настроек элемента экспертизы. Нажмите на кнопку Изменить в правом нижнем углу окна.
-
Для черновика: нажмите на кнопку Изменить в нижней части карточки.
-
-
Внесите требуемые изменения в конфигурацию схемы активного списка.
-
Нажмите на кнопку Обновить версию. Новая версия схемы активного списка с измененной конфигурацией будет опубликована.
При публикации новой версии элемента экспертизы требуется увеличить его текущую версию в поле version
.Вы можете сохранить измененную конфигурацию схемы активного списка без публикации (в виде черновика) с помощью кнопки Сохранить черновик. Конфигурация будет сохранена для дальнейшего редактирования. В этом случае в верхней части карточки схемы будет отображаться предупреждение о наличии неопубликованных изменений.
Удаление схемы активного списка
Удаление доступно только для элементов экспертизы с типом создания Пользовательский. |
Удаление недоступно для элементов экспертизы, используемых в других сущностях системы.
Чтобы удалить схему активного списка:
-
Перейдите в раздел Экспертиза. Система отобразит сведения об имеющихся элементах экспертизы, в том числе их текущий статус (включен/выключен).
-
Нажмите на строку схемы активного списка в списке. Система отобразит в правой части экрана карточку этой схемы с подробной информацией о ней.
-
Выберите опцию Удалить в выпадающем меню Действия () в верхней части карточки схемы активного списка. Отобразится окно подтверждения удаления схемы.
-
Нажмите на кнопку Удалить. Система отобразит уведомление об удалении схемы активного списка, и схема будет удалена из списка элементов экспертизы.
Вы также можете удалить группу элементов экспертизы. Для этого:
|
Структура схемы активного списка
Схема активного списка в системе R-Vision SIEM содержит набор обязательных и опциональных полей.
Поле | Описание | Тип данных | Обязательное поле |
---|---|---|---|
|
Уникальный идентификатор схемы активного списка в системе. |
строка |
да |
|
Название схемы списка. Допустимы строчные и прописные буквы латинского алфавита (a–z, A-Z), цифры (0–9), точки (.), подчеркивания (_) и дефис (-) без пробелов. |
строка |
да |
|
Версия схемы активного списка, представленная в формате Semantic Versioning. |
строка |
да |
|
Описание активного списка, где можно указать дополнительную информацию о его назначении и функциональности. |
строка |
нет |
|
Тип списка. Всегда имеет значение |
строка |
нет |
|
Имя и контактные данные автора схемы активного списка. |
строка |
нет |
|
Список источников данных, с которыми совместима схема активного списка. Используется для классификации и быстрого поиска элементов экспертизы в системе. |
массив строк массив объектов |
нет |
|
Список тегов, присвоенных схеме активного списка для классификации и быстрого поиска. |
массив строк |
нет |
|
Максимальное количество записей в активном списке. По достижении лимита, записи удаляются и перезаписываются. Если значение установлено в "0", записи хранятся бессрочно и не перезаписываются. |
целое число |
да |
|
Время жизни записи в активном списке в секундах. По истечении этого времени запись удаляется. Если значение установлено в "0", запись считается постоянной и хранится бессрочно. |
целое число |
да |
|
Объект, описывающий структуру данных активного списка, включая типы данных для ключей. Поддерживает типы: |
объект |
да |
|
Поле, которое определяет набор полей, которые используются в качестве уникальных идентификаторов в активном списке. |
массив строк |
да |
|
Поле содержит массив с фактическими данными активного списка, которые организованы согласно структуре в |
массив строк |
нет |
Поле data_source
, представленное массивом строк, имеет структуру:
data_source:
- <platform> # Платформа или информационная система
- <source> # Источник событий.
# События (EventId) или путь к журналу событий:
- <EventID_1>
- <EventID_2>
Поле data_source
, представленное массивом объектов, имеет следующую структуру:
Поле | Описание | Тип данных | Обязательное поле |
---|---|---|---|
|
Платформа или информационная система. |
строка |
нет |
|
Источник событий. |
строка |
нет |
|
События (EventId) или путь к журналу событий. |
массив строк |
нет |
# Уникальный идентификатор схемы активного списка, необходим для ее идентификации. id: unique_identifier/active_list_name # Название схемы активного списка. name: ActiveListName # Версия схемы активного списка. version: 1.0.0 # Описание схемы активного списка, его назначение и функциональность. description: Описание схемы активного списка # Тип элемента экспертизы. Всегда должно быть 'active_list' для элементов такого типа. type: active_list # Информация об авторе схемы активного списка. author: Имя Автора <email@example.com> # Список совместимых с правилом источников данных. data_source: - platform: Windows - source: Sysmon - events: - EventID_3 - EventID_22 # Теги для улучшения поиска схемы в системе. tags: - tag1 - tag2 # Максимальное количество значений в схеме списка. При переполнении удаляется самое старое значение. capacity: 10000 # Ключевые поля схемы активного списка должны быть уникальными. key: - field1 - field2 # Схема элементов в активном списке. Поддерживает типы: 'string', 'bool', 'float', 'integer', 'timestamp'. schema: field1: string field2: bool field3: float field4: integer field5: timestamp # Время жизни значения внутри активного списка, в секундах. По истечении этого времени значение будет автоматически удалено из списка. ttl: 0 # Пример содержимого, соответствующего схеме. content: - field1: "value1" - field2: true - field3: 1.23 - field4: 123 - field5: "2023-01-01T12:00:00Z"
Функции управления активными списками
Для работы с записями активного списка в поле, которое поддерживает VRL, применяются функции управления активными списками. Используя эти функции, можно обращаться к активным спискам в VRL-программе в любых полях в рамках элементов экспертизы системы. Доступны функции добавления, получения и удаления записи из активного списка.
Функция | Описание | Параметры и Результат |
---|---|---|
|
Добавляет запись в активный список. Если запись с таким ключом уже существует, значение обновляется. В противном случае создается новая запись. |
|
|
Извлекает значение из активного списка по указанному ключу. Возвращает значение, ассоциированное с ключом, или |
|
|
Удаляет запись из активного списка. Если запись с таким ключом отсутствует, ничего не происходит. |
|
on_correlation
правила корреляции:on_correlation: !vrl | if .threat_level == "High" { add_active_record("suspicious_ips", .source_ip, true) } if .event_type == "authentication_failure" { let failure_count = get_active_record("auth_failure_counts", .user_id) || 0 add_active_record("auth_failure_counts", .user_id, failure_count + 1) } if .event_type == "authentication_success" { remove_active_record("auth_failure_counts", .user_id) }
В этом примере:
-
IP-адреса с высоким уровнем угрозы добавляются в активный список подозрительных IP-адресов.
-
Считается количество неудачных попыток аутентификации для пользователей и обновляется соответствующая запись в активном списке.
-
При успешной аутентификации запись пользователя удаляется из списка неудачных попыток аутентификации, что может свидетельствовать об окончании атаки или восстановлении доступа пользователя.
Составление схемы активного списка
Управление схемами активных списков в системе осуществляется в разделе Экспертиза.
Чтобы составить схему активного списка, необходимо заполнить ее обязательные поля.
Поля метаданных
Заполните поля метаданных схемы активного списка:
-
id
: задайте уникальный идентификатор схемы активного списка. -
name
: задайте название схемы активного списка. Допустимы строчные и прописные буквы латинского алфавита (a–z, A-Z), цифры (0–9), точки (.), подчеркивания (_) и дефис (-) без пробелов. -
version
: укажите версию схемы активного списка в формате Semantic Versioning. -
type
: укажитеactive_list
в поле, чтобы определить тип элемента экспертизы. -
author
(опциональное): укажите имя и контактные данные автора. -
description
(опциональное): предоставьте краткое описание назначения и функциональности схемы активного списка. -
data_source
(опциональное): укажите список совместимых со схемой источников данных для классификации и фильтрации. -
tags
(опциональное): добавьте теги для классификации и поиска списка в системе.
Пример структуры метаданных:
id: "example_whitelist_id" name: "White list" version: "1.0.0" author: "Jane Doe <jane.doe@example.com>" description: "This static active list contains admin IPs." data_source: - platform: Windows - source: Sysmon tags: - ddos - threat intelligence - blacklist
Поле capacity
Поле capacity
(обязательное) определяет максимальное количество записей, которое может содержать активный список. Это ограничение позволяет контролировать объем хранимых данных и поддерживать производительность системы на оптимальном уровне. По достижении лимита, записи удаляются из списка и перезаписываются. Если значение capacity
установлено в "0", записи хранятся бессрочно и не перезаписываются.
Пример задания максимального количества записей:
capacity: 10000
В данном случае, активный список будет ограничен 10000 записями. При достижении этого предела, новые записи будут замещать старые.
Значение по умолчанию для capacity не установлено, однако, рекомендуется устанавливать это значение с учетом требований к производительности и объему хранимых данных.
|
Поле ttl
Поле ttl
(time-to-live) (обязательное) в контексте схемы активного списка определяет максимальное время жизни каждой записи в активном списке, выраженное в секундах. После истечения указанного времени запись автоматически удаляется из списка. Если значение установлено в "0", запись считается постоянной и хранится бессрочно.
Пример:
ttl: 86400 # Записи в активном списке будут храниться в течение 24 часов
Установка оптимального значения ttl зависит от специфики данных и задач, которые должен выполнять активный список. Для списков с динамически изменяющейся информацией рекомендуется устанавливать ttl с учетом ожидаемого времени актуальности данных.
|
Поле schema
Поле schema
(обязательное) определяет структуру данных активного списка. Это описание включает типы данных для каждого из ключей, которые используются для хранения информации в активном списке. Структура schema
позволяет определить формат и тип данных каждого элемента списка, обеспечивая тем самым обработку и интерпретацию сохраненной информации.
Схема элементов в активном списке поддерживает типы: string
, bool
, float
, integer
, timestamp
.
Структура schema
и поддерживаемые типы данных:
-
field1
: строка (string) -
field2
: логический тип (bool) -
field3
: число с плавающей точкой (float) -
field4
: целое число (integer) -
field5
: метка времени (timestamp)
Пример использования в активном списке:
schema: ip: string # IP-адрес, представленный в виде строки. active: bool # Признак активности IP-адреса: true или false. score: float # Оценка репутации IP-адреса, выраженная числом с плавающей точкой. attempts: integer # Количество попыток подключения с данного IP-адреса. last_seen: timestamp # Метка времени последнего обнаружения активности с данного IP-адреса. first_detected: timestamp # Метка времени первого обнаружения активности.
Поле keys
Поле keys
(обязательное) определяет набор полей, которые используются в качестве уникальных идентификаторов для каждой записи в активном списке. Эти ключи позволяют идентифицировать записи в списке, обеспечивая возможность поиска, обновления или удаления данных. Уникальность ключа гарантирует, что каждая запись в активном списке будет отличаться от других, предотвращая дублирование информации.
Пример:
key: - ip
В данном примере поле ip
используется в качестве уникального ключа для записей в активном списке. Это означает, что для каждого уникального IP-адреса в списке может быть только одна запись. При попытке добавить новую запись с уже существующим в списке IP-адресом, старая запись будет обновлена или заменена, в зависимости от реализации механизма управления активным списком.
Выбор ключей для активного списка должен основываться на требованиях к уникальности и возможностях идентификации записей. Важно убедиться, что выбранные поля могут обеспечить уникальность записей в контексте предметной области активного списка. |
Поле content
Поле content
содержит фактические данные активного списка, представляя собой массив записей, соответствующих определенной схеме данных schema
. Эта схема определяет структуру и типы данных для каждого элемента в записях, гарантируя таким образом их корректную обработку и хранение.
Пример схемы schema
, по которой формируется content
:
schema: id: integer ip: string last_detected: timestamp attack_type: string
Согласно схеме, поле content
может содержать следующие данные:
content: - id: 1 ip: "192.168.0.1" last_detected: "2023-09-01T12:00:00Z" attack_type: "DDoS" - id: 2 ip: "192.168.0.2" last_detected: "2023-09-02T13:00:00Z" attack_type: "Phishing"
Каждая запись в content
соответствует структуре и типу данных, определенных в schema
. В данном примере каждая запись содержит уникальный идентификатор (id
), IP-адрес (ip
), дату последнего обнаружения (last_detected
) и тип атаки (attack_type
).
Пример схемы активного списка
# Уникальный идентификатор списка. id: threat_intel/ddos_attack_ips # Название активного списка, которое обозначает его цель или функцию. name: DDoSAttackIPs # Версия активного списка, представленная в формате SemVer (Semantic Versioning). version: 1.0.0 # Описание активного списка, где можно указать дополнительную информацию о его назначении и функциональности. description: Список IP-адресов, обнаруженных как участники в DDoS-атаках, для мониторинга и предотвращения потенциальных угроз. # Тип элемента экспертизы. type: active_list # Имя и контактные данные автора активного списка. author: John Doe <johndoe@example.com> # Список совместимых с правилом источников данных. data_source: - platform: Windows - source: Sysmon - events: - EventID_3 - EventID_22 # Теги, связанные с активным списком. tags: - ddos - threat intelligence - blacklist # Максимальное количество записей в активном списке. Опционально, по умолчанию 100000. capacity: 10000 # Время жизни записи активного списка в секундах. Опционально, если не указан, то хранится бессрочно. ttl: 0 # Схема описывает поля активного списка. schema: ip: string # IP-адрес. last_detected: timestamp # Метка времени последнего обнаружения. attack_type: string # Тип атаки. reputation_score: integer # Оценка репутации IP-адреса. attack_volume: string # Объем атаки. involved_attacks: integer # Количество атак. notes: string # Примечания. # Перечень полей, которые являются ключом key: - ip # Содержимое активного списка content: - ip: "192.0.2.1" last_detected: "2023-01-01T12:00:00Z" attack_type: "SYN Flood" reputation_score: 10 attack_volume: "1.5 Gbps" involved_attacks: 5 notes: "Repeated attacks on multiple targets" - ip: "192.0.2.2" last_detected: "2023-01-02T15:30:00Z" attack_type: "UDP Flood" reputation_score: 20 attack_volume: "500 Mbps" involved_attacks: 2 notes: "High packet rate observed" - ip: "192.0.2.3" last_detected: "2023-01-03T18:45:00Z" attack_type: "Amplification" reputation_score: 15 attack_volume: "2 Gbps" involved_attacks: 3 notes: "DNS amplification attack" - ip: "192.0.2.4" last_detected: "2023-01-04T20:00:00Z" attack_type: "HTTP Flood" reputation_score: 5 attack_volume: "750 Mbps" involved_attacks: 4 notes: "Targeted at web services"
Интерпретация
Схема активного списка "DDoSAttackIPs" служит для учета IP-адресов, обнаруженных как участники в DDoS-атаках.
Метаданные:
-
id
:threat_intel/ddos_attack_ips
— уникальный идентификатор схемы активного списка. -
name
:DDoSAttackIPs
— название схемы активного списка. -
version
:1.0.0
— версия схемы, использующаяся для управления изменениями. -
description
: Схема описывает структуру данных для мониторинга и предотвращения потенциальных угроз от IP-адресов, участвующих в DDoS-атаках. -
type
:active_list
— тип элемента экспертизы, указывающий на его предназначение для хранения и обработки информации о потенциальных угрозах. -
author
:John Doe <johndoe@rvision.ru>
— информация об авторе схемы, включая контактные данные. -
tags
: массив тегов (ddos
,threat intelligence
,blacklist
), классифицирующих схему и упрощающих ее поиск и использование в различных контекстах.
Параметры схемы:
-
capacity
:10000
— максимальное количество записей, которое может содержать активный список, созданный на основе данной схемы. -
ttl
:0
— время жизни каждой записи в секундах; значение0
означает, что записи хранятся бессрочно. -
key
: массив, указывающий на поля, которые являются ключами для уникальной идентификации записей в списке; в данном случае это полеip
.
Схема данных:
Описывает поля активного списка, включая типы данных и их назначение:
-
ip
: строка, содержащая IP-адрес. -
last_detected
: дата, когда IP-адрес был последний раз обнаружен как участник DDoS-атаки. -
attack_type
: строка, описывающая тип DDoS-атаки. -
reputation_score
: целое число, оценка репутации IP-адреса. -
attack_volume
: строка, описывающая объем атаки. -
involved_attacks
: целое число, количество атак, в которых участвовал данный IP. -
notes
: строка, содержащая примечания или дополнительную информацию об IP-адресе.
Содержимое активного списка:
Примеры записей, которые могут быть добавлены в активный список на основе данной схемы, включают информацию о дате обнаружения, типе атаки, репутационной оценке IP-адреса, объеме атаки, количестве участвованных атак и заметках о конкретных атаках.
Схема активного списка "DDoSAttackIPs" используется в активных списках для динамического обновления и хранения информации об IP-адресах, связанных с DDoS-атаками.