Управление правилами
Для проведения сигнатурного анализа сетевого трафика в eSensor используются решающие правила (далее – правила), написанные на специальном языке.
Группы правил
Группа правил – это хранящийся на СУС набор решающих правил и связанного с ними файла классификации classification.config. Группа является единицей централизованного обновления и доставки правил на сенсоры. Каждая группа использует не более одного источника правил.
Для группы правил задаются уникальное имя, описание, тип источника и параметры, соответствующие выбранному типу. Поддерживаются следующие типы источников:
-
FTP или SMB – удаленный файловый ресурс; для подключения задаются адрес ресурса и параметры аутентификации;
-
Git – удаленный репозиторий; задаются адрес репозитория, ветка, параметры аутентификации и стратегия разрешения конфликтов;
-
AM TIP – портал получения правил AM TIP; для аутентификации используется токен, заданный в общих настройках СУС;
-
ET Open – открытый набор правил Emerging Threats для поддерживаемой версии Suricata;
-
другая группа правил – выбранная группа на СУС используется в качестве родительского источника;
-
источник не выбран – наполнение группы выполняется вручную: загрузкой архива либо созданием и редактированием правил в группе.
Описание возможностей по управлению группами правил приведено в разделе «Группы правил» этой документации.
Формат загрузки правил
eSensor поддерживает решающие правила синтаксиса Suricata 8.0.3. При загрузке из внешнего источника или архива правила должны находиться в файлах с расширением .rules, каждое правило размещается в отдельной строке.
Пример содержимого файла с двумя правилами:
alert udp any any -> any any (msg:"test udp rule"; sid:1;)
alert tcp any any -> any any (msg:"test tcp rule"; sid:2;)
Для ручной загрузки допускаются архивы форматов .zip, .tar.gz и .tgz. Архив может содержать один или несколько файлов .rules и, при необходимости, файл пользовательской классификации.
Файл пользовательской классификации должен иметь строгое имя classification.config. При загрузке из архива он помещается в архив вместе с файлами правил; при загрузке из удаленного источника – в ту же директорию или репозиторий, что и файлы .rules.
Каждая строка с описанием класса в classification.config должна соответствовать синтаксису Suricata:
Config classification: <краткое_имя>,<полное_наименование>,
<приоритет>
Пример содержимого classification.config:
config classification: not-suspicious,Not Suspicious Traffic,3
config classification: unknown,Unknown Traffic,3
config classification: bad-unknown,Potentially Bad Traffic,2
Допустимые значения приоритета и соответствующие уровни опасности (1 – критический, 2 – высокий, 3 – средний, 4 – низкий).
При загрузке СУС проверяет синтаксис правил, наличие конфликтов, имя и содержимое classification.config. Файл классификации считается корректным, если он соответствует синтаксису Suricata, содержит не менее одного класса, а краткие имена классов уникальны.
Если проверка загруженного classification.config не пройдена, обновление завершается с ошибкой, а ранее активный файл продолжает использоваться.
Ограничение срабатываний оповещений, формируемых правилами Suricata
Вкладка «Ограничение срабатываний» предназначена для управления количеством оповещений, формируемых правилами сигнатурного анализа.
Настройка ограничения срабатываний позволяет:
-
полностью подавить оповещения определённого правила;
-
подавить оповещения для выбранного узла или сети;
-
ограничить частоту формирования оповещений;
-
задать количество срабатываний, после которого формируется оповещение.
Ограничения применяются только к формированию оповещений. Остальные действия правила, например установка flowbit или flowint, продолжают выполняться.
Внимание! При использовании Suricata в режиме IPS действия правил
dropиrejectприменяются к каждому соответствующему пакету независимо от настроенного ограничения частоты оповещений.
Добавление ограничения срабатываний
Настройка ограничения осуществляется через веб-интерфейс eSensor:
-
перейти на страницу «Администрирование» → «Сенсоры»;
-
выбрать сенсор, для которого требуется настроить ограничение;
-
открыть подменю «Сигнатурный анализ»;
-
перейти на вкладку «Ограничение срабатываний»;
-
ввести одну или несколько директив ограничения. Каждую директиву следует указывать с новой строки;
-
нажать «Сохранить».
Некорректно заданная директива может привести к ошибке применения настроек сигнатурного анализа.
Подавление оповещений с помощью suppress
Директива suppress полностью отключает формирование оповещений для выбранного правила либо подавляет их только для определённых узлов и сетей.
Чтобы подавить все оповещения определённого правила, используется директива:
suppress gen_id <gid>, sig_id <sid>
Чтобы подавить оповещения только для определённого узла или сети, используется расширенная директива:
suppress gen_id <gid>, sig_id <sid>, track <by_src|by_dst|by_either>, ip <ip|subnet|addressvar>
Параметры для настройки ограничений срабатывания представлены в таблице 6.
Таблица 6 – Параметры настройки ограничений срабатывания
| Параметр | Описание |
|---|---|
| <gid> | Идентификатор генератора событий. Для правил Suricata обычно используется значение 1. |
| <sid> | Идентификатор сигнатуры, указанный в параметре sid правила. |
| By_src | Ограничение применяется, если заданному адресу соответствует IP-адрес отправителя. |
| By_dst | Ограничение применяется, если заданному адресу соответствует IP-адрес получателя. |
| By_either | Ограничение применяется, если заданному адресу соответствует IP-адрес отправителя или получателя. |
| <ip> | IP-адрес отдельного узла. |
| <subnet> | Адрес подсети в формате CIDR. |
| <addressvar> | Переменная, содержащая адреса, например $HOME_NET. |
Например, следующая директива подавляет оповещения сигнатуры 2002087, если IP-адрес отправителя – 209.132.180.67:
suppress gen_id 1, sig_id 2002087, track by_src, ip 209.132.180.67
В параметре ip можно указать список подсетей:
suppress gen_id 1, sig_id 2003614, track by_src, ip [192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]
Вместо конкретных адресов можно использовать переменную группы узлов:
suppress gen_id 1, sig_id 2003614, track by_src, ip $HOME_NET
Чтобы учитывать адреса как отправителя, так и получателя, используйте режим by_either:
suppress gen_id 1, sig_id 2003614, track by_either, ip 217.110.97.128/25
В последнем примере оповещение сигнатуры 2003614 подавляется, если IP-адрес отправителя или получателя входит в подсеть 217.110.97.128/25.
Ограничение частоты оповещений с помощью threshold
Директива threshold позволяет задать условия и частоту формирования оповещений определённого правила.
Если в самом правиле уже задан параметр threshold или detection_filter, настройка, указанная на вкладке «Ограничение срабатываний», заменяет соответствующую настройку этого правила. Это позволяет адаптировать частоту оповещений к условиям эксплуатации конкретного сенсора без редактирования правила.
Синтаксис директивы:
threshold gen_id <gid>, sig_id <sid>, type <threshold|limit|both>, track <tracker>, count <N>, seconds <T>
Параметры для настройки ограничений частоты оповещений представлены в таблице 7.
Таблица 7 – Параметры настройки ограничений частоты оповещений
| Параметр | Описание |
|---|---|
| <gid> | Идентификатор генератора событий. |
| <sid> | Идентификатор сигнатуры. |
| <tracker> | Способ группировки и подсчёта срабатываний. |
| <N> | Количество срабатываний или оповещений. |
| <T> | Продолжительность контролируемого интервала в секундах. |
Параметр track может принимать значения, представленные в таблице 8.
Таблица 8 – Значения параметра track
| Параметр | Описание |
|---|---|
| by_src | Срабатывания подсчитываются отдельно для каждого IP-адреса отправителя. |
| by_dst | Срабатывания подсчитываются отдельно для каждого IP-адреса получателя. |
| by_rule | Срабатывания подсчитываются для правила в целом. |
| by_both | Срабатывания подсчитываются отдельно для каждой пары адресов отправителя и получателя. |
| by_flow | Срабатывания подсчитываются отдельно для каждого сетевого потока. |
Параметр type определяет порядок формирования оповещений и может принимать значения, представленные в таблице 9.
Таблица 9 – Значения параметра type
| Параметр | Описание |
|---|---|
| Оповещение формируется при достижении заданного количества срабатываний. После этого счётчик начинает новый цикл. | |
| limit | За заданный интервал формируется не более указанного количества оповещений. |
| both | Оповещение формируется после достижения заданного количества срабатываний, но не более одного раза за контролируемый интервал. |
Директивы suppress можно применять к правилам, в которых уже используются threshold или detection_filter. В этом случае suppress подавляет оповещения для заданных адресов, а для остальных адресов продолжает действовать настроенное ограничение частоты.