Схемы активных списков

В данном разделе представлен обзор структуры, принципов работы, процесса создания схемы активного списка в R-Vision SIEM. Управление активными списками осуществляется в разделе Активные списки.

О схемах активных списков

Схема активного списка — это структурированный объект данных в формате RObject (.ro), который задает конфигурацию и параметры для создания и управления активным списком. Схема определяет структуру данных, правила хранения и управления записями, а также ограничения по количеству и времени жизни записей.

Схема активного списка включает следующие компоненты: идентификатор списка, разметку данных, правила хранения и уникальные ключи для идентификации записей. Поле capacity задает максимальное количество записей, которое может быть сохранено в списке, а поле ttl (time-to-live) определяет срок хранения каждой записи в секундах. Структура данных описывается с помощью поля schema, которое задает типы данных, такие как строки, числа, логические значения и метки времени.

Каждая запись в активном списке идентифицируется по одному или нескольким ключам, указанным в поле key, что позволяет гарантировать уникальность записей. Поле content содержит фактические данные списка, которые соответствуют структуре, определенной в schema.

Работа с активным списком

Доступные операции над активным списком:

Создание схемы активного списка

Чтобы добавить схему активного списка:

  1. Перейдите в раздел Экспертиза. Система отобразит сведения об имеющихся элементах экспертизы, в том числе их текущий статус (включен/выключен).

  2. На панели инструментов нажмите на кнопку Создать и выберите из выпадающего списка опцию Схема активного списка. Система отобразит окно создания схемы активного списка.

    При создании элемента экспертизы поля его структуры заполняются значениями по умолчанию. Для быстрой настройки структуры в системе доступны предустановленные примеры. Чтобы заполнить поля элемента экспертизы с помощью примера, нажмите на кнопку Примеры и выберите требуемый пример из выпадающего списка.
  3. Заполните поля схемы активного списка, чтобы определить логику ее работы.

    Строки, начинающиеся с символа $ ($foo), интерпретируются в VRL-блоках элементов экспертизы как переменные окружения. Чтобы избежать этого, экранируйте такие строки символом $ ($$foo).
  4. Нажмите на кнопку Опубликовать версию, чтобы сохранить изменения и опубликовать созданную схему активного списка. Система отобразит уведомление об успешном создании схемы активного списка. Новая схема активного списка отобразится в таблице раздела Экспертиза.

    Чтобы схема активного списка стала доступна при создании активного списка, ее необходимо включить.

    Вы можете создать схему активного списка без ее публикации (в виде черновика) с помощью кнопки Сохранить черновик. Система отобразит уведомление об успешном создании черновика схемы. Черновик отобразится в таблице раздела Экспертиза.

Изменение схемы активного списка

Чтобы изменить схему активного списка:

  1. Перейдите в раздел Экспертиза. Система отобразит сведения об имеющихся элементах экспертизы, в том числе их текущий статус (включен/выключен).

  2. Нажмите на строку схемы активного списка в списке. Система отобразит в правой части экрана карточку этой схемы с подробной информацией о ней.

  3. Выберите опцию Изменить в выпадающем меню Действия (more vertical) в верхней части карточки схемы активного списка. Отобразится окно настроек схемы.

    Вы также можете открыть окно настроек с помощью кнопки в нижней части карточки:

    • Для опубликованной версии: нажмите на кнопку Просмотр в нижней части карточки. Система отобразит окно просмотра настроек элемента экспертизы. Нажмите на кнопку Изменить в правом нижнем углу окна.

    • Для черновика: нажмите на кнопку Изменить в нижней части карточки.

  4. Внесите требуемые изменения в конфигурацию схемы активного списка.

  5. Нажмите на кнопку Обновить версию. Новая версия схемы активного списка с измененной конфигурацией будет опубликована.

    При публикации новой версии элемента экспертизы требуется увеличить его текущую версию в поле version.

    Вы можете сохранить измененную конфигурацию схемы активного списка без публикации (в виде черновика) с помощью кнопки Сохранить черновик. Конфигурация будет сохранена для дальнейшего редактирования. В этом случае в верхней части карточки схемы будет отображаться предупреждение о наличии неопубликованных изменений.

Удаление схемы активного списка

Удаление доступно только для элементов экспертизы с типом создания Пользовательский.

Удаление недоступно для элементов экспертизы, используемых в других сущностях системы.

Чтобы удалить схему активного списка:

  1. Перейдите в раздел Экспертиза. Система отобразит сведения об имеющихся элементах экспертизы, в том числе их текущий статус (включен/выключен).

  2. Нажмите на строку схемы активного списка в списке. Система отобразит в правой части экрана карточку этой схемы с подробной информацией о ней.

  3. Выберите опцию Удалить в выпадающем меню Действия (more vertical) в верхней части карточки схемы активного списка. Отобразится окно подтверждения удаления схемы.

  4. Нажмите на кнопку Удалить. Система отобразит уведомление об удалении схемы активного списка, и схема будет удалена из списка элементов экспертизы.

Вы также можете удалить группу элементов экспертизы. Для этого:

  1. Перейдите в раздел Экспертиза. Система отобразит сведения об имеющихся элементах экспертизы, в том числе их текущий статус (включен/выключен).

  2. Установите флажки напротив тех элементов, которые вы хотите удалить, в левом столбце таблицы.

  3. Нажмите на кнопку trash на панели инструментов. Отобразится окно удаления.

  4. Нажмите на кнопку Удалить. Система отобразит уведомление об удалении выбранного элемента экспертизы, и элемент экспертизы будет удален из списка элементов экспертизы.

Структура схемы активного списка

Схема активного списка в системе R-Vision SIEM содержит набор обязательных и опциональных полей.

Поле Описание Тип данных Обязательное поле

id

Уникальный идентификатор схемы активного списка в системе.

строка

да

name

Название схемы списка. Допустимы строчные и прописные буквы латинского алфавита (a–z, A-Z), цифры (0–9), точки (.), подчеркивания (_) и дефис (-) без пробелов.

строка

да

version

Версия схемы активного списка, представленная в формате Semantic Versioning.

строка

да

description

Описание активного списка, где можно указать дополнительную информацию о его назначении и функциональности.

строка

нет

type

Тип списка. Всегда имеет значение active_list для элемента этого типа.

строка

нет

author

Имя и контактные данные автора схемы активного списка.

строка

нет

data_source

Список источников данных, с которыми совместима схема активного списка. Используется для классификации и быстрого поиска элементов экспертизы в системе.

массив строк

массив объектов

нет

tags

Список тегов, присвоенных схеме активного списка для классификации и быстрого поиска.

массив строк

нет

capacity

Максимальное количество записей в активном списке. По достижении лимита, записи удаляются и перезаписываются. Если значение установлено в "0", записи хранятся бессрочно и не перезаписываются.

целое число

да

ttl

Время жизни записи в активном списке в секундах. По истечении этого времени запись удаляется. Если значение установлено в "0", запись считается постоянной и хранится бессрочно.

целое число

да

schema

Объект, описывающий структуру данных активного списка, включая типы данных для ключей. Поддерживает типы: string, bool, float, integer, timestamp.

объект

да

key

Поле, которое определяет набор полей, которые используются в качестве уникальных идентификаторов в активном списке.

массив строк

да

content

Поле содержит массив с фактическими данными активного списка, которые организованы согласно структуре в schema.

массив строк

нет

Поле data_source, представленное массивом строк, имеет структуру:

data_source:
- <platform> # Платформа или информационная система
- <source> # Источник событий.
# События (EventId) или путь к журналу событий:
- <EventID_1>
- <EventID_2>

Поле data_source, представленное массивом объектов, имеет следующую структуру:

Поле Описание Тип данных Обязательное поле

platform

Платформа или информационная система.

строка

нет

source

Источник событий.

строка

нет

events

События (EventId) или путь к журналу событий.

массив строк

нет

Example 1. Пример схемы активного списка
# Уникальный идентификатор схемы активного списка, необходим для ее идентификации.
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-программе в любых полях в рамках элементов экспертизы системы. Доступны функции добавления, получения и удаления записи из активного списка.

Функция Описание Параметры и Результат

add_active_record(list, key, value)

Добавляет запись в активный список. Если запись с таким ключом уже существует, значение обновляется. В противном случае создается новая запись.

list: название активного списка, в который добавляется запись. key: уникальный ключ для записи. value: значение, ассоциированное с ключом.

get_active_record(list, key)

Извлекает значение из активного списка по указанному ключу. Возвращает значение, ассоциированное с ключом, или null, если запись отсутствует.

list: активный список, из которого нужно извлечь запись. key: уникальный ключ записи.

remove_active_record(list, key)

Удаляет запись из активного списка. Если запись с таким ключом отсутствует, ничего не происходит.

list: активный список, из которого необходимо удалить запись. key: уникальный ключ записи, которую необходимо удалить.

Example 2. Пример использования в поле 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).

Пример схемы активного списка

Example 3. Пример схемы активного списка "DDoSAttackIPs", схема RObject
# Уникальный идентификатор списка.
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-атаками.