condition:
type: chain
chain:
'0':
index: alertix-*
name: Имя первого звена
priority: 1
reliability: 1
severity: 1
ttl: 200
query:
bool:
must: []
to_params:
$param1: field.name
'1':
index: alertix-*
name: Имя второго звена
priority: 3
reliability: 2
severity: 2
query:
bool:
must: []Синтаксис правил типа Chain
Значение поля condition данного типа правил:
chain содержит до 5 секций описания условий поиска звена цепи заданного уровня. Каждая секция – JSON-объект, ключ секции – уровень звена цепи. Уровни нумеруются с 0 до 4. Создавать цепи более 5 звеньев не рекомендуется.
Параметр threshold определяет минимальное количество звеньев в обнаруженной цепи для записи в индекс. Значение по умолчанию: 2. Может быть от 1 до 5, но не больше количества звеньев в правиле.
Каждое звено цепочки поддерживает следующие типы:
bucket;count;no_events.
Тип no_events по сути является типом count с критерием lt и значением 1. Тип no_events не может быть первым звеном в цепи.
Параметры каждого типа звена указываются в словаре link_condition.
Для типа count поддерживаются параметры:
criteria- критерий сравнения (gt, lt, range);value- значение, с которым будем сравнивать (для критерияrangeбудет диапазон в виде массива из двух элементов, например [3, 9]);
Для типа bucket поддерживаются параметры:
criteria- критерий сравнения (gt, lt, range)value- значение, с которым будем сравнивать (для критерияrangeбудет диапазон в виде массива из двух элементов, например [3, 9])bucket- название агрегации, по которой происходит сравнениеaggs- непосредственно агрегации, передаваемые в запросorder_mode- параметр, отвечающий за то, по какому событию в агрегации (первому/последнему) формироватьtimestamp, для начала отсчета временной границы следующего звена (актуально только, когда звено типаbucketидет первым).
Для передачи параметров в следующее звено необходимо указать название агрегации из которого будет браться значение.
Для каждого звена задаются следующие параметры:
name– описательный параметр, используется для облегчения понимания звеньев цепи;severity,reliabilityиpriority– параметры важности, достоверности и приоритета; назначение и возможные значения описаны в разделе Общие сведения о правилах;ttl– параметр, определяющий время ожидания появления следующего звена в цепи; если за отведенное время следующее звено не будет обнаружено, цепь будет закрыта; время задается в секундах; по умолчаниюttl= 200 секунд;query– произвольный поисковый запрос без агрегаций на языке Query DSL, может содержать вложенные условия поиска, отбора и фильтрации аналогично правилу типа List (см. раздел Синтаксис правил типа List);to_params– JSON-объект, задающий словарь "имя параметра": "значение"; описывает набор параметров, которые следует использовать для присоединения следующего звена цепи; параметры используются для формирования запроса; имена параметров могут быть произвольными, но обязательно начинаться с символов $ или @; в первом случае значение параметра используется, как "переменная" в теле запроса следующего уровня и может быть произвольного типа в том числе массивом; во втором случае строковое представление полученного значения используется как замена подстроки "@param_name" в строковом представлении запроса следующего уровня; "значение" – это имя поля события-источника, значение которого должно быть присвоено параметру.
| Параметры вычисления уровня риска, указанные в описании самого правила, в данном случае не используются. Уровень риска всегда будет вычисляться по параметрам последнего звена, на котором закрылась цепь. |
Пример заполнения поля chain c первым звеном типа bucket (длина цепи два звена):
condition:
type: chain
chain:
'0':
name: Подсчет неудачных попыток аутентификации по пользователям и хостам
index: alertix-winlogbeat-*
type: bucket
ttl: 60
query:
bool:
must:
- term:
alertix.event.code: 4625
priority: 1
severity: 1
reliability: 1
to_params:
$param1: user
link_condition:
aggs:
hostname:
aggs:
user:
terms:
size: 10000
field: user.name
terms:
size: 10000
field: host.name
value: 2
bucket: user
criteria: gt
order_mode: asc
'1':
index: alertix-winlogbeat-*
name: Успешный логин пользователя после нескольких неуспешных
priority: 3
reliability: 2
severity: 2
query:
bool:
must:
- term:
alertix.event.code: 4624
- term:
user.name: $param1Пример заполнения поля chain со вторым звеном типа no_events:
condition:
type: chain
chain:
'0':
index: alertix-winlogbeat-*
name: Запуск Whoami
priority: 1
reliability: 1
severity: 1
ttl: 60
query:
bool:
must:
- term:
winlog.event_id: '1'
- term:
winlog.event_data.NewProcessBareName: whoami.exe
to_params:
$param1: agent.name
'1':
index: alertix-winlogbeat-*
name: Запуск notepad++.exe 0 раз
priority: 3
reliability: 2
severity: 2
type: no_events
query:
bool:
must:
- term:
process.name: notepad++.exe
- term:
agent.name: $param1Пример заполнения поля chain со вторым звеном типа bucket:
condition:
type: chain
chain:
'0':
index: alertix-winlogbeat-*
name: Запуск Whoami
priority: 1
reliability: 1
severity: 1
ttl: 60
query:
bool:
must:
- term:
winlog.event_id: '1'
- term:
winlog.event_data.NewProcessBareName: whoami.exe
to_params:
$param1: agent.name
'1':
index: alertix-winlogbeat-*
name: Запуск notepad++.exe 2+ раз
priority: 3
reliability: 2
severity: 2
type: bucket
link_condition:
aggs:
task:
terms:
size: 10000
field: winlog.task
value: 2
bucket: task
criteria: gt
query:
bool:
must:
- term:
process.name: notepad++.exe
- term:
agent.name: $param1Была ли эта страница полезной?
Спасибо за отзыв!
Спасибо, мы учтём это для улучшения документации.