Создание правил автонаполнения списков

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

Аналогично классическим правилам, на вкладке "Автонаполнение списков" доступна сортировка, преднастроенные фильтры, действия редактирования, клонирования, остановки и запуска.

image
Рисунок 1.

Для добавления правила автонаполнения списков воспользуйтесь кнопкой "Добавить". В открывшемся редакторе введите необходимые критерии запроса и сохраните.

Пример правила на добавление пользователя, у которого установлен dbeaver.

image
Рисунок 2.

Структура правила:

  • name - название правила;

  • index - индекс, в котором правило ищет сработки;

  • author - автор правила;

  • bool - запрос на языке Query DSL (будет считаться, что произошла сработка, если было найдено событие, удовлетворяющее данному запросу);

  • description - описание правила;

  • local - флаг локального создания правила;

  • hidden - флаг включения/выключения правила;

  • timeframe - период запуска правила;

  • timestamp - время добавления правила;

  • rule_type - тип правила (addition - добавление, deletion - удаление);

  • rule_list - список, в который правило добавляет запись;

  • list_value - ключ в сработке, значение которого добавляется в список.

Их можно использовать для выноса конкретных объектов из правил. Синтаксис для использования списков в классических правилах остался без изменений.

Пример использования в правиле (синтаксис с 'in' и квадратными скобками важен):

name: Пустое тестовое правило со списком test
index: alertix-winlogbeat-*
author: o.akishev
category: общая категория
bool:
  must:
    - 'agent.hostname in [admin_hosts]'
description: пустой лист
local: true
hidden: true
filter_by_timeframe: true
timeframe: 1
timestamp: '2021-03-31T12:47:49.068Z'
condition:
  type: list
additional_fields: []
falsepositives: []
references: []
usecases: []
stage_of_attack: []
severity: 1
reliability: 1
priority: 1

Если список с именем admin_hosts есть в Opensearch, он подставится в виде части запроса с should из трех секций: terms, wildcard, regexp. Для этого правила получится:

{
  "query": {
    "constant_score":  {
      "filter": {
        "bool": {
          "must": [
            {
              "range": {"@timestamp": {"gte": 1617280932471, "lt": 1617280992717, "format": "epoch_millis"}}
            },
            {
              "bool":
              {
                "must": [{
                  "bool": {
                    "should": [
                      {"terms": {"agent.hostname": ["SS"]}},
                      {"wildcard": {"agent.hostname": "MN*"}},
                      {"regexp": {"agent.hostname": "MN.*"}}
                    ]
                  }
                }]
              }
            }
          ]
        }
      }
    }
  },
  "size": 10000
}