Правила фильтрации
11 апреля 2024
ID 171652
Правила фильтрации — это критерии, которые Feed Utility использует для фильтрации исходных файлов потока данных об угрозах.
Правила фильтрации для каждого потока данных об угрозах задаются в элементе Filters
. Каждое правило фильтрации задается в элементе Field
: имя поля указывается в атрибуте name
, а критерии фильтрации указываются в атрибуте value
. С полем может быть связано только одно правило фильтрации; для одного поля невозможно задать два параметра Field
.
Потоки данных об угрозах типа «электронная почта» дополнительно фильтруются по теме письма и по отправителю. См. раздел «Правила фильтрации потоков данных об угрозах типа „электронная почта“» ниже.
Ниже приведен пример правил фильтрации для потока данных об угрозах. Эти правила определяют, что выходной поток данных об угрозах должен включать только записи со значением поля popularity
, равным 4
или 5
, и значением поля mask
, содержащим .ru
или .com
.
<Feed> ... <Filters> <Field name="popularity" value="4;5"/> <Field name="mask" value=".ru;.com"/> </Filters> ... <Feed> |
Feed Utility игнорирует символы пробела и табуляции в начале и в конце значения атрибута value
.
В выходной файл включаются только те записи, которые соответствуют всем указанным критериям. Если для поля указан критерий фильтрации и при этом поле отсутствует в записи, Feed Utility не включает такую запись в выходной файл.
Определение критериев фильтрации для числовых значений
Числовые значения могут быть только целыми. Десятичные дроби не поддерживаются.
Критерии фильтрации для числовых полей можно задать следующими способами:
value="*"
Поле может иметь любое значение.
Например,
<Field name="type" value="*"/>
означает, что полеtype
может иметь любое значение.value="%value%"
Точное числовое значение. Поле должно быть строго равно
%value%
.Например,
<Field name="popularity" value="1"/>
означает, что полеpopularity
должно быть равно1
.value="%value1%;%value2%"
Одно из нескольких числовых значений. Поле может иметь одно из указанных числовых значений (
%value1%
или%value2%
).При указании дополнительных значений в качестве разделителя используется точка с запятой (
«;»
).Например,
<Field name="popularity" value="1;3"/>
означает, что полеpopularity
должно иметь значение1
или3
, но не2
.value="[%value1%;%value2%]"
Диапазон числовых значений.
Поле может иметь одно из значений в указанном диапазоне от
%value1%
до%value2%
.Например,
<Field name="popularity" value="[1;3]"/>
означает, что полеpopularity
должно иметь значение от1
до3
, в том числе2
.value="[%value1%;*]"
илиvalue="[*;%value1%]"
Открытый диапазон числовых значений. То же, что и диапазон, но звездочка (
*
) обозначает бесконечность.Например,
<Field name="popularity" value="[2;*]"/>
означает, что значение поляpopularity
должно быть больше или равно2
.
Определение критериев фильтрации для строк
Критерии фильтрации для строк можно задать следующими способами:
value="*"
Поле может иметь любое значение.
Например,
<Field name="mask" value="*"/>
означает, что полеmask
может иметь любое значение.- value="
%string%
"Поле должно содержать указанную строку.
Например,
<Field name="geo" value="ru"/>
означает, что значение поляgeo
должно содержать"ru"
. value="%string1%;%string2%"
Содержит одну или несколько указанных строк.
Например,
<Field name="geo" value="ru;us"/>
означает, что значение поляgeo
должно содержать"ru"
или"us"
либо одновременно"ru"
и"us"
.
Определение критериев фильтрации для дат
Значения дат в потоках данных об угрозах форматируются по шаблону "DD.MM.YYYY"
(например, "26.04.2014"
), по шаблону "YYYY-MM-DD"
(например, "2014-04-26"
), либо по шаблону "MM/DD/YYYY"
(например, "04/26/2014"
).
Критерии фильтрации для дат можно задать следующими способами:
value="*"
Поле может иметь любое значение.
Например,
<Field name="last_seen" value="*"/>
означает, что полеlast_seen
может иметь любое значение.value="%date%"
Поле должно содержать указанную дату.
Например,
<Field name="first_seen" value="14.10.2015"/>
означает, что полеfirst_seen
должно иметь значение «14 октября 2015 г.».value="[%date1%;%date2%]"
Поле должно содержать дату в указанном диапазоне.
Например,
<Field name="first_seen" value="[01.02.2013;01.02.2015]"/>
означает, что значение поляfirst_seen
должно попадать в диапазон от 1 февраля 2013 г. до 1 февраля 2015 г.value="[%date1%;*]"
илиvalue="[*;%date1%]"
Открытый диапазон дат. То же, что и диапазон дат, то есть
value="[%date1%;%date2%]"
. Однако звездочка (*
) означает бесконечность.Например,
<Field name="first_seen" value="[*;10.12.2015]"/>
означает, что дата в полеfirst_seen
должна быть раньше или равна 10 декабря 2015 г.
Исключение записей с пропущенными полями
В исходных файлах потоков данных об угрозах некоторые записи могут иметь дополнительные поля или не иметь некоторых полей. В случае записей с дополнительными полями Feed Utility включает только те поля, которые указаны в элементе RequiredFields
правил потока данных об угрозах для указанного потока данных об угрозах. В случае записей, в которых отсутствуют некоторые поля, Feed Utility включает такие записи в вывод, если они содержат хотя бы одно из полей, указанных в элементе RequiredFields
. Если некоторые поля, указанные в элементе RequiredFields
, отсутствуют в записи исходного потока данных об угрозах, запись в обработанном потоке данных об угрозах также не будет их содержать.
Если требуется исключить из вывода записи с недостающими полями, необходимо создать правила фильтрации для всех обязательных полей.
В следующем примере Feed Utility будет включать записи, в которых есть поле popularity
, поле mask
либо поля popularity
и mask
одновременно.
<RequiredFields>popularity;mask</RequiredFields> |
Если требуется, чтобы Feed Utility включала в вывод только те записи, у которых есть как поле popularity
, так и поле mask
, необходимо создать правило фильтрации для обоих полей. Можно указать критерии для значений полей или использовать звездочку (*)
, означающую любое значение.
В следующем примере в итоговый поток данных об угрозах включаются только записи, содержащие оба поля (mask
и popularity
).
<Filters> <Field name="popularity" value="*"/> <Field name="mask" value="*"/> </Filters> <RequiredFields>popularity;mask</RequiredFields> |
Таким же образом можно указать точные критерии. В следующем примере Feed Utility должна включать только записи, в которых в поле popularity
указано значение 5
, а в поле mask
указано любое значение.
<Filters> <Field name="popularity" value="5"/> <Field name="mask" value="*"/> </Filters> <RequiredFields>popularity;mask</RequiredFields> |
Правила фильтрации потоков данных об угрозах типа «электронная почта»
В конфигурационном файле kl_feed_util укажите одно или несколько правил фильтрации в элементе MailboxConnection/Filters
. Этот элемент не является обязательным.
Если добавлено хотя бы одно правило фильтрации, укажите следующие атрибуты в элементе MailboxConnection/Filters/Filter
:
- field
Укажите значение
subject
(тема сообщения электронной почты) и/или значениеfrom
(отправитель сообщения электронной почты).Почтовый сервер может хранить поле
From
в двух вариантах: sender@mail.ru или sender<sender@mail.ru>. Если в элементе Filter атрибутcondition
имеет значениеmatch
, значение сравнивается со значениемsender@mail.ru
(если в полеFrom
содержится «sender@mail.ru»), либо значение сравнивается со значением в скобках (если в полеFrom
содержится «sender<sender@mail.ru>»). - condition
Задаются следующие значения условий фильтрации:
contains
(значение из сообщения электронной почты должно содержать значение из этого поля).not_contains
(значение из сообщения электронной почты не должно содержать значения из этого поля).Фильтр
not_contains
имеет приоритет над фильтромcontains
.Значения сравниваются без учета регистра.
match
(значение из сообщения электронной почты должно совпадать со значением в этом поле).not_match
(значение из сообщения электронной почты не должно совпадать со значением в этом поле).
Ниже приведен пример правил фильтрации для потока данных об угроза типа «электронная почта»:
<Filters> <Filter field="from" condition="not_match">techsupport@ya.ru</Filter> <Filter field="subject" condition="contains">Best IoCs ever</Filter> </Filters> |