Правила фильтрации — это критерии, которые 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
может иметь любое значение.
%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
:
Укажите значение 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>»).
Задаются следующие значения условий фильтрации:
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> |