Схемы активных списков
В данном разделе представлен обзор структуры, принципов работы, процесса создания схемы активного списка в системе. Управление активными списками осуществляется в разделе Активные списки.
О схемах активных списков
Схема активного списка — это структурированный объект данных в формате RObject (.ro), который задает конфигурацию и параметры для создания и управления активным списком. Схема определяет структуру данных, правила хранения и управления записями, а также ограничения по количеству и времени жизни записей.
Схема активного списка включает следующие компоненты: идентификатор списка, разметку данных, правила хранения и уникальные ключи для идентификации записей. Поле capacity задает максимальное количество записей, которое может быть сохранено в списке, а поле ttl (time-to-live) определяет срок хранения каждой записи в секундах. Структура данных описывается с помощью поля schema, которое задает типы данных, такие как строки, числа, логические значения и метки времени.
Каждая запись в активном списке идентифицируется по одному или нескольким ключам, указанным в поле key, что позволяет гарантировать уникальность записей. Поле content содержит фактические данные списка, которые соответствуют структуре, определенной в schema.
Работа с активным списком
Доступные операции над активным списком:
Создание схемы активного списка
Чтобы добавить схему активного списка:
-
Перейдите в раздел Экспертиза. Система отобразит сведения об имеющихся элементах экспертизы.
-
На панели инструментов нажмите на кнопку Создать и выберите из выпадающего списка опцию Схема активного списка. Система отобразит окно создания схемы активного списка.
При создании элемента экспертизы поля его структуры заполняются значениями по умолчанию. Для быстрой настройки структуры в системе доступны предустановленные примеры. Чтобы заполнить поля элемента экспертизы с помощью примера, нажмите на кнопку Примеры и выберите требуемый пример из выпадающего списка. -
Заполните поля схемы активного списка, чтобы определить логику ее работы.
-
Нажмите на кнопку Опубликовать версию. Система создаст схему активного списка и отобразит соответствующее уведомление. Новая схема появится в таблице раздела Экспертиза.
Чтобы схема активного списка стала доступна при создании активного списка, ее необходимо включить. Вы можете создать черновик схемы активного списка без публикации с помощью кнопки Сохранить черновик. Система создаст черновик схемы и отобразит соответствующее уведомление. Новый черновик появится в таблице раздела Экспертиза.
Изменение схемы активного списка
Способ изменения идентичен для всех элементов экспертизы и приведен в разделе Работа с элементами экспертизы.
Удаление схемы активного списка
Способ удаления идентичен для всех элементов экспертизы и приведен в разделе Работа с элементами экспертизы.
Структура схемы активного списка
Схема активного списка в системе содержит набор обязательных и опциональных полей.
| Поле | Описание | Тип данных | Обязательное поле |
|---|---|---|---|
|
Уникальный идентификатор схемы активного списка в системе. |
строка |
да |
|
Название схемы списка. Допустимы строчные и прописные буквы латинского алфавита, цифры, подчеркивания и дефис. Пробелы не допускаются. |
строка |
да |
|
Версия схемы активного списка, представленная в формате Semantic Versioning. |
строка |
да |
|
Описание активного списка, где можно указать дополнительную информацию о его назначении и функциональности. |
строка |
нет |
|
Тип списка. Всегда имеет значение |
строка |
нет |
|
Имя и контактные данные автора схемы активного списка. |
строка |
нет |
|
Список источников данных, с которыми совместима схема активного списка. Используется для классификации и быстрого поиска элементов экспертизы в системе. |
массив строк массив объектов |
нет |
|
Список тегов, присвоенных схеме активного списка для классификации и быстрого поиска. |
массив строк |
нет |
|
Максимальное количество записей в активном списке. По достижении лимита, записи удаляются и перезаписываются. Если значение установлено в "0", записи хранятся бессрочно и не перезаписываются. |
целое число |
да |
|
Время жизни записи в активном списке в секундах. По истечении этого времени запись удаляется. Если значение установлено в "0", запись считается постоянной и хранится бессрочно. |
целое число |
да |
|
Объект, описывающий структуру данных активного списка, включая типы данных для ключей. Поддерживает типы: |
объект |
да |
|
Поле, которое определяет набор полей, которые используются в качестве уникальных идентификаторов в активном списке. |
массив строк |
да |
|
Поле содержит массив с фактическими данными активного списка, которые организованы согласно структуре в |
массив строк |
нет |
|
Строки могут записываться в разных стилях YAML. Для каждого стиля действуют свои правила экранирования:
|
Поле data_source, представленное массивом строк, имеет структуру:
data_source:
- <platform>
- <source>
- <eventid_1>
- <eventid_2>
Здесь:
-
<platform>— платформа или информационная система. -
<source>— источник событий. -
<eventid_N>— идентификаторы событий (EventID) или пути к журналу событий.
Поле 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', `vrl_string`, 'bool', 'float', 'integer', 'timestamp'.
schema:
field1: string
field2: vrl_string
field3: bool
field4: float
field5: integer
field6: timestamp
# Время жизни значения внутри активного списка, в секундах. По истечении этого времени значение будет автоматически удалено из списка.
ttl: 0
# Пример содержимого, соответствующего схеме.
content:
- field1: "value1"
- field2: true
- field3: 1.23
- field4: 123
- field5: "2023-01-01T12:00:00Z"
Функции управления активными списками
При обращении к активному списку в VRL-песочнице будет возвращено значение null.
|
Для работы с записями активного списка в полях элементов экспертизы, которые поддерживают VRL, применяются специальные функции. Доступны функции добавления, получения и удаления записи из активного списка.
| Функция | Описание | Параметры |
|---|---|---|
|
Проверяет, есть ли запись с указанным ключом в активном списке. |
|
|
Добавляет запись в активный список. Если запись с таким ключом уже существует, значение обновляется. В противном случае создается новая запись. |
|
|
Извлекает значение из активного списка по указанному ключу. Возвращает значение, ассоциированное с ключом, или |
|
|
Удаляет запись из активного списка. Если запись с таким ключом отсутствует, ничего не происходит. |
|
on_correlation правила корреляции:on_correlation: !vrl |
if .threat_level == "High" {
add_active_record!("suspicious_ips", { "ip": .source_ip, "is_suspicious": true })
}
if .event_type == "authentication_failure" {
failure_count = get_active_record!("auth_failure_counts", { "user_id": .user_id }).failure_count || 0
add_active_record!("auth_failure_counts", { "user_id": .user_id, {"failure_count": failure_count + 1 })
}
if .event_type == "authentication_success" {
remove_active_record!("auth_failure_counts", { "user_id": .user_id })
}
В этом примере:
-
IP-адреса с высоким уровнем угрозы добавляются в активный список подозрительных IP-адресов.
-
Считается количество неудачных попыток аутентификации для пользователей и обновляется соответствующая запись в активном списке.
-
При успешной аутентификации запись пользователя удаляется из списка неудачных попыток аутентификации, что может свидетельствовать об окончании атаки или восстановлении доступа пользователя.
Составление схемы активного списка
Управление схемами активных списков в системе осуществляется в разделе Экспертиза.
Чтобы составить схему активного списка, необходимо заполнить ее обязательные поля.
Поля метаданных
Заполните поля метаданных схемы активного списка:
-
id: задайте уникальный идентификатор схемы активного списка. -
name: задайте название схемы активного списка. Допустимы строчные и прописные буквы латинского алфавита, цифры, точки, подчеркивания и дефис. Пробелы не допускаются. -
version: укажите версию схемы активного списка в формате Semantic Versioning. -
type: укажитеactive_listв поле, чтобы определить тип элемента экспертизы. -
author(опциональное): укажите имя и контактные данные автора. -
description(опциональное): предоставьте краткое описание назначения и функциональности схемы активного списка. -
data_source(опциональное): укажите список совместимых со схемой источников данных для классификации и фильтрации. -
tags(опциональное): добавьте теги для классификации и поиска списка в системе.
Пример структуры метаданных:
id: "example_whitelist_id"
name: "White list"
version: "1.0.0"
author: "Ivan Ivanov <ivanov@example.ru>"
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 записями. При достижении этого предела, новые записи будут замещать старые.
| Максимальное допустимое количество записей в активном списке составляет 2 147 483 646 записей. |
Значение по умолчанию для capacity не установлено, однако, рекомендуется устанавливать это значение с учетом требований к производительности и объему хранимых данных.
|
Поле ttl
Поле ttl (time-to-live) (обязательное) в контексте схемы активного списка определяет максимальное время жизни каждой записи в активном списке, выраженное в секундах. После истечения указанного времени запись автоматически удаляется из списка. Если значение установлено в "0", запись считается постоянной и хранится бессрочно.
Пример:
ttl: 86400 # Записи в активном списке будут храниться в течение 24 часов.
| Максимальное допустимое время жизни записей в активном списке составляет 157 680 000 секунд (5 лет). |
Установка оптимального значения ttl зависит от специфики данных и задач, которые должен выполнять активный список. Для списков с динамически изменяющейся информацией рекомендуется устанавливать ttl с учетом ожидаемого времени актуальности данных.
|
Поле schema
Поле schema (обязательное) определяет структуру данных активного списка. Это описание включает типы данных для каждого из полей активного списка, которые используются для хранения информации. Структура schema позволяет определить формат и тип данных каждого элемента списка, обеспечивая тем самым обработку и интерпретацию сохраненной информации.
Поля в активном списке поддерживают следующие типы данных:
-
string— текстовая строка. -
vrl_string— строка VRL-программы. -
bool— логическое значение. -
float— число с плавающей точкой. -
integer— целое число. -
timestamp— метка времени.
Структура поля schema:
schema:
<field_1_name>: <field_1_data_type>
<field_2_name>: <field_2_data_type>
<field_3_name>: <field_3_data_type>
Здесь:
-
<field_N_name>— название поля в активном списке; -
<field_N_data_type>— тип данных поля в активном списке.
schemaschema:
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: Ivan Ivanov <ivanov@example.ru>
# Список совместимых с правилом источников данных.
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-адрес.
lastDetected: timestamp # Метка времени последнего обнаружения.
attackType: string # Тип атаки.
reputationScore: integer # Оценка репутации IP-адреса.
attackVolume: string # Объем атаки.
involvedAttacks: integer # Количество атак.
notes: string # Примечания.
# Перечень полей, которые являются ключом.
key:
- ip
# Содержимое активного списка.
content:
- ip: "192.0.2.1"
lastDetected: "2023-01-01T12:00:00Z"
attackType: "SYN Flood"
reputationScore: 10
attackVolume: "1.5 Gbps"
involvedAttacks: 5
notes: "Repeated attacks on multiple targets"
- ip: "192.0.2.2"
lastDetected: "2023-01-02T15:30:00Z"
attackType: "UDP Flood"
reputationScore: 20
attackVolume: "500 Mbps"
involvedAttacks: 2
notes: "High packet rate observed"
- ip: "192.0.2.3"
lastDetected: "2023-01-03T18:45:00Z"
attackType: "Amplification"
reputationScore: 15
attackVolume: "2 Gbps"
involvedAttacks: 3
notes: "DNS amplification attack"
- ip: "192.0.2.4"
lastDetected: "2023-01-04T20:00:00Z"
attackType: "HTTP Flood"
reputationScore: 5
attackVolume: "750 Mbps"
involvedAttacks: 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:Ivan Ivanov <ivanov@example.ru>— информация об авторе схемы, включая контактные данные. -
tags: массив тегов (ddos,threat intelligence,blacklist), классифицирующих схему и упрощающих ее поиск и использование в различных контекстах.
Параметры схемы:
-
capacity:10000— максимальное количество записей, которое может содержать активный список, созданный на основе данной схемы. -
ttl:0— время жизни каждой записи в секундах; значение0означает, что записи хранятся бессрочно. -
key: массив, указывающий на поля, которые являются ключами для уникальной идентификации записей в списке; в данном случае это полеip.
Схема данных:
Описывает поля активного списка, включая типы данных и их назначение:
-
ip: строка, содержащая IP-адрес. -
lastDetected: дата, когда IP-адрес был последний раз обнаружен как участник DDoS-атаки. -
attackType: строка, описывающая тип DDoS-атаки. -
reputationScore: целое число, оценка репутации IP-адреса. -
attackVolume: строка, описывающая объем атаки. -
involvedAttacks: целое число, количество атак, в которых участвовал данный IP. -
notes: строка, содержащая примечания или дополнительную информацию об IP-адресе.
Имена полей могут включать буквы латинского алфавита и цифры (a—z, А—Z, 0—9).
Содержимое активного списка:
Примеры записей, которые могут быть добавлены в активный список на основе данной схемы, включают информацию о дате обнаружения, типе атаки, репутационной оценке IP-адреса, объеме атаки, количестве атак, в которых участвовал адрес, и заметках о конкретных атаках.
Схема активного списка "DDoSAttackIPs" используется в активных списках для динамического обновления и хранения информации об IP-адресах, связанных с DDoS-атаками.
Была ли полезна эта страница?