Функциональность системы обнаружения и предотвращения вторжений (СОВ) в ARMA Стена реализуется посредством ПО с открытым исходным кодом «Suricata» и использованием метода захвата пакетов «Netmap» для повышения производительности и минимизации загрузки ЦП.
Система обнаружения и предотвращения вторжений в ARMA Стена позволяет решать следующие задачи:
обнаружение и предотвращение использования эксплойтов и уязвимостей сетевых приложений;
обнаружение и предотвращение эксплуатации уязвимостей в поддерживаемых протоколах;
обнаружение и предотвращение сетевого сканирования;
обнаружение и фильтрация трафика от скомпрометированных хостов;
обнаружение и фильтрация трафика от хостов, заражённых троянским ПО и сетевыми червями;
Для корректной работы системы IDS/IPS необходимо выполнить следующие минимальные настройки Suricata:
Указать интерфейс, на котором будет включен захват пакетов с помощью NETMAP:
set suricata netmap interface <iname>
где <iname> - имя интерфейса система ARMA Стена, на котором будет включен захват пакетов с помощью NETMAP.
Определить режим захвата трафика:
для определенного интерфейса системы ARMA Стена:
set suricata netmap interface <iname> copy-mode <ips | tap>
для всех интерфейсов системы ARMA Стена по умолчанию (в случае, если для конкретного интерфейса явно не указан режим захвата трафика, будет использоваться режим, установленный по умолчанию для всех интерфейсов):
set suricata netmap parameters copy-mode <ips | tap>
где <ips | tap> - режим захвата трафика. Возможно указать следующие значения:
ips - режим сетевой безопасности, обеспечивающий активный мониторинг и предотвращение подозрительной активности путём модификации, блокировки или отбрасывания трафика в реальном времени на основе правил безопасности;
tap (ids) - режим пассивного мониторинга сетевого трафика, направленный на обнаружение подозрительной активности и генерацию оповещений при совпадении с заданными правилами безопасности, без вмешательства в проходящий трафик.
Примечание
Необходимо явно установить режим захвата трафика для всех интерфейсов по умолчанию либо указать данный параметр для конкретного интерфейса, на котором будет активирована Suricata. В случае, если ни один из указанных параметров не будет задан, интерфейс, задействованный для работы с NetMap, потеряет возможность выполнять стандартные сетевые операции, включая передачу данных или управление системой через SSH, при условии, что данный интерфейс используется для этих задач. Это обусловлен тем, что технология NetMap осуществляет блокировку сетевого интерфейса для всех других операций, включая сетевые подключения.
Указать файл с правила, которые будут использоваться в Suricata:
set suricata rule-files file-name /var/lib/suricata/rules/*.rules
Система Suricata загрузит и будет использовать все правила, которые найдёт в файлах с расширением «rules», расположенных в каталоге «/var/lib/suricata/rules/». Данный каталог используется системой по умолчанию.
После выполнения минимальных настроек Suricata для запуска СОВ, необходимо ввести следующую команду в режиме конфигурации:
set suricata enable yes
Зафиксировать изменения с помощью ввода команд «commit» и «save».
Пример запуска СОВ на интерфейсе eth0 в режиме IPS:
set suricata netmap interface eth0
set suricata netmap parameters copy-mode ips
set suricata rule-files file-name suricata.rules # Suricata будет использовать
все правила в файле «suricata.rules»,
расположенный в каталоге по умолчнаию
«/var/lib/suricata/rules/»
set suricata enable yes
commit
save
Для просмотра статуса СОВ необходимо ввести следующую команду в эксплуатационном режиме под УЗ «admin»:
admin@ngfwos:~$ sudo systemctl status suricata
#Пример выводимой информации:
● suricata.service - Suricata Service
Loaded: loaded (/lib/systemd/system/suricata.service; disabled; preset: enabled)
Active: active (running) since Mon 2025-03-03 10:05:45 UTC; 21h ago
Main PID: 2596 (Suricata-Main)
Tasks: 12 (limit: 4668)
Memory: 1.5G
CPU: 13min 54.448s
CGroup: /system.slice/suricata.service
└─2596 /bin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid --netmap
Mar 03 15:24:51 ngfwos idps-rule[2596]: [Alert] [1:19559:16] INDICATOR-SCAN SSH brute force login attempt [Classification: Misc activ>
Mar 04 07:14:04 ngfwos idps-rule[2596]: [Alert] [1:3701703:0] ARMA SSH INIT SESSION Key exchange [Classification: (null)] [Priority: >
Mar 04 07:14:16 ngfwos idps-rule[2596]: [Alert] [1:3701704:0] ARMA End of SSH session flag FIN [Classification: (null)] [Priority: 3]>
Mar 04 07:14:17 ngfwos idps-rule[2596]: [Alert] [1:19559:16] INDICATOR-SCAN SSH brute force login attempt [Classification: Misc activ>
Mar 04 07:14:22 ngfwos idps-rule[2596]: [Alert] [1:19559:16] INDICATOR-SCAN SSH brute force login attempt [Classification: Misc activ>
Mar 04 07:14:22 ngfwos idps-rule[2596]: [Alert] [1:19559:16] INDICATOR-SCAN SSH brute force login attempt [Classification: Misc activ>
Mar 04 07:14:23 ngfwos idps-rule[2596]: [Alert] [1:19559:16] INDICATOR-SCAN SSH brute force login attempt [Classification: Misc activ>
Mar 04 07:14:23 ngfwos idps-rule[2596]: [Alert] [1:33654:6] SERVER-OTHER OpenSSH maxstartup threshold potential connection exhaustion>
Mar 04 07:14:23 ngfwos idps-rule[2596]: [Alert] [1:19559:16] INDICATOR-SCAN SSH brute force login attempt [Classification: Misc activ>
lines 1-20/20 (END)
Для выхода из режима просмотра необходимо нажать комбинацию клавиш «Ctrl+C».
Для корректной перезагрузки СОВ необходимо ввести следующую последовательность команд:
set suricata enable no
commit
set suricata enable yes
commit
save
Система Suricata имеет две директории конфигурации: активная и рабочая.
Рабочая директория - содержит рабочую конфигурацию Suricata, которая в данный момент редактируется. Здесь отображаются все правила, созданные пользователем в интерфейсе командной строки (CLI). К этим правилам возможно применять команды редактирования: добавлять правила, изменять действия правил, активировать и деактивировать правила, удалять правила или файлы с правилами. Изменения, внесённые в рабочую конфигурацию, не вступают в силу до тех пор, пока они не будут зафиксированы командой «suricata commit-rules». В этот момент рабочая конфигурация становится активной конфигурацией.
Активная директория - содержит активную конфигурацию Suricata, которая в данный момент загружена и используется. Команда «suricata save-rules» сохраняет активную конфигурацию в файл для последующего использования.
Для просмотра всех правил прописанных в рабочей или активной директории Suricata необходимо ввести команду:
admin@ngfwos:~$ suricata show-rules directory <active | working>
SIDS
/var/lib/suricata/rules/suricata.rules
1337
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"HTTP GET Request
Containing Rule in URI"; flow:established,to_server; http.method;
content:"GET"; http.uri; content:"rule"; fast_pattern; classtype:bad-unknown; rev:1;)
IDS
admin@ngfwos:~$
где <active | working> - выбор директории расположения правил. Возможно указать следующие значения:
active - все правила в активной директории Suricata;
working - все правила в рабочей директории Suricata.
Для просмотра списка всех файлов с правилами Suricata, расположенных в каталоге по умолчанию (default-rule-path), необходимо ввести в эксплуатационном режиме следующую команду:
Для создания правила Suricata с помощью командной строки необходимо выполнить следующие действия:
Ввести в режиме эксплуатации команду «suricata add-rules file-path», указав необходимые параметры для создаваемого правила. Например:
admin@ngfwos:~$ suricata add-rules file-path /var/lib/suricata/rules/test.rules sid 1337
text 'alert http $HOME_NET any -> $EXTERNAL_NET any
(msg:"HTTP GET Request Containing Rule in URI"; flow:established,to_server;
http.method; content:"GET"; http.uri; content:"rule"; fast_pattern;
classtype:bad-unknown; rev:1;)'
Success: Rules added. #Уведомление об успешном добавлении правила.
admin@ngfwos:~$
Примечание
Допускается не указывать sid, система автоматически присвоит следующий доступный идентификатор.
В случае возникновения необходимости в отмене введённого правила, применяется следующая команда:
admin@ngfwos:~$ suricata reset-changes
Данная команда удаляет все правила, которые были добавлены в систему командой «suricata add-rules», но не были зафиксированы командой «suricata commit-rules».
Зафиксировать изменения с помощью ввода команд:
admin@ngfwos:~$ suricata commit-rules
Success: Rules successfully committed in active database.
admin@ngfwos:~$ suricata save-rules
Success: All rules saved successfully in /var/lib/suricata/rules/test.rules.
admin@ngfwos:~$
Если в каталоге «/var/lib/suricata/rules» отсутствует файл с именем «test.rules», то такой файл будет создан, и в него будет добавлено создаваемое правило.
Добавить новый файл правил в активный список файлов с правилами, используемых Suricata для анализа сетевого трафика, введя следующую команду в конфигурационном режиме:
set suricata rule-files file-name /var/lib/suricata/rules/test.rules
Примечание
По умолчанию система Suricata использует файл правил с именем «suricata.rules». Если создать новое правило в этом файле, то нет необходимости добавлять его в активный список файлов, поскольку он уже присутствует в системе по умолчанию.
Для применения нового правила Suricata необходимо ввести команду:
Данная команда посылает сигнал SIGUSR2 в Suricata. В системе Suricata сигнал SIGUSR2 используется для перезагрузки правил без необходимости полного перезапуска приложения. При получении этого сигнала Suricata перечитывает файл правил и применяет их, не прерывая работу. Таким образом, правила безопасности обновляются без нарушения текущего мониторинга сетевой активности.
Примечание
При выполнении команды «suricata apply-rules» существует вероятность неполного применения правил системы Suricata к процессу активной фильтрации сетевого трафика в момент перезапуска правил.
После создания правила включается регистрация событий, связанных с этим правилом. Эти события возможно просмотреть в глобальном журнале.
Создание правила IDS/IPS для фильтрации L7 по протоколу
ARMA Стена позволяет выполнять фильтрацию трафика по протоколу с помощью правил IDS/IPS, в состав которых могут входить фильтры по содержимому «content», регулярные выражения «pcre» и значения «app-layer-protocol».
Для фильтрации трафика возможно использование правил IDS/IPS с регулярными выражениями «pcre» в следующем формате:
«pcre:"/[regex]/opts";»
где:
«[regex]» – шаблон;
«opts» – модификатор.
Поддерживается добавление нескольких регулярных выражений в одно правило.
В качестве примера приведено правило, предназначенное для обнаружения возможного использования скриптов Powershell с расширением «ps1» по протоколу SMB:
alert smb any any -> $HOME_NET 445 (msg:"ET POLICY Possible Powershell .ps1 Script Use Over SMB"; flow:established,to_server; pcre:"/SMB/"; depth:8; pcre:"/.ps1/"; nocase; distance:0; classtype:bad-unknown; rev:2; metadata:created_at 2019_04_16, updated_at 2019_04_16;)
где «pcre:"/SMB/"» и «pcre:"/.ps1/"» – регулярные выражения.
Примечание
Применение правила IDS/IPS, содержащего сложное регулярное выражение «pcre», может негативно влиять на производительность системы.
В случае необходимости изменения действия сохраненных правил, добавленных через интерфейс командной строки (CLI), например, ранее созданного правила 1337, необходимо выполнить следующую команду:
admin@ngfwos:~$ suricata change-rules-action sid 1337 new-action drop
Success: Rules changed.
# Зафиксировать изменения.
admin@ngfwos:~$ suricata commit-rules
Success: Rules successfully committed in active database.
admin@ngfwos:~$ suricata save-rules
Success: All rules saved successfully in /var/lib/suricata/rules/test.rules.
admin@ngfwos:~$
В данном случае действие правила было изменено с «alert» на «drop».
Примечание
В случае необходимости изменения действия правил в файлах, добавленных не через интерфейс командной строки (CLI), необходимо добавить эти правила в рабочую директорию системы Suricata с помощью следующей команды:
<каталог> - каталог для поиска правил Suricata, например - «/var/lib/suricata/rules/Video/»;
recursive <no | yes> - параметр, определяющий, будет ли выполняться поиск во вложенных папках. Если установить значение «no», поиск во вложенных папках производиться не будет.
Данная команда производит анализ указанного каталога на предмет наличия правил Suricata и прописывает обнаруженные правила в рабочую директорию. Это позволит в дальнейшем редактировать действия для обнаруженных правил.
Рекомендуется не сканировать каталоги, содержащие более 30 000 правил, так как это приводит к ошибкам и сбоям в процессе сканирования. Если существует такой каталог, рекомендуется разделить файлы на несколько каталогов, в каждом из которых будет не более 30 000 правил.
В случае необходимости выключения определенного правила, добавленного через интерфейс командной строки (CLI), необходимо выполнить следующую команду:
admin@ngfwos:~$ suricata disable-rules sid <sid>
Success: Rules disabled.
admin@ngfwos:~$
# Зафиксировать изменения.
admin@ngfwos:~$ suricata commit-rules
Success: Rules successfully committed in active database.
admin@ngfwos:~$ suricata save-rules
Success: All rules saved successfully in /var/lib/suricata/rules/suricata.rules.
admin@ngfwos:~$
Строка, содержащая указанное правило, будет закомментирована в файле с помощью специального символа «#»:
admin@ngfwos:~$ suricata show-rules directory active
SIDS
/var/lib/suricata/rules/suricata.rules
1377
#alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"HTTP GET Request Containing Rule in URI";
flow:established,to_server; http.method; content:"GET"; http.uri; content:"rule";
fast_pattern; classtype:bad-unknown; rev:1;)
IDS
admin@ngfwos:~$
Для отключения всех правил, содержащихся в файле «suricata.rules» (указан в качестве примера), необходимо выполнить следующую команду:
admin@ngfwos:~$ suricata disable-rules file-path /var/lib/suricata/rules/suricata.rules
Success: Rules disabled.
admin@ngfwos:~$
# Зафиксировать изменения.
admin@ngfwos:~$ suricata commit-rules
Success: Rules successfully committed in active database.
admin@ngfwos:~$ suricata save-rules
Success: All rules saved successfully in /var/lib/suricata/rules/suricata.rules.
admin@ngfwos:~$
Для активации ранее отключённых правил необходимо выполнить следующую команду:
# Включить все правила, указанные в файле suricata.rules.
admin@ngfwos:~$ suricata enable-rules file-path /var/lib/suricata/rules/suricata.rules
# Включить правила с идентификатором <sid>
admin@ngfwos:~$ suricata disable-rules sid <sid>
Зафиксировать изменения:
admin@ngfwos:~$ suricata commit-rules
Success: Rules successfully committed in active database.
admin@ngfwos:~$ suricata save-rules
Success: All rules saved successfully in /var/lib/suricata/rules/suricata.rules.
admin@ngfwos:~$
Примечание
В случае необходимости отключения правил в файлах, добавленных не через интерфейс командной строки (CLI), необходимо добавить эти правила в рабочую директорию системы Suricata.
В случае необходимости удаления файла с правила Suricata, добавленного через интерфейс командной строки (CLI), например, ранее созданного файла test.rules, необходимо выполнить следующую команду:
admin@ngfwos:~$ suricata del-rules file-path /var/lib/suricata/rules/test.rules
Success: Rules removed.
# Зафиксировать изменения.
admin@ngfwos:~$ suricata commit-rules
Success: Rules successfully committed in active database.
admin@ngfwos:~$ suricata save-rules
Success: All rules saved successfully in /var/lib/suricata/rules/test.rules.
admin@ngfwos:~$
В случае необходимости удаления определенного правила Suricata, добавленного через интерфейс командной строки (CLI), необходимо выполнить следующую команду:
admin@ngfwos:~$ suricata del-rules sid <sid>
Success: Rules removed.
# Зафиксировать изменения.
admin@ngfwos:~$ suricata commit-rules
Success: Rules successfully committed in active database.
admin@ngfwos:~$ suricata save-rules
Success: All rules saved successfully in /var/lib/suricata/rules/suricata.rules.
admin@ngfwos:~$
Примечание
В случае необходимости удаления правила или файла с правилами, добавленных не через интерфейс командной строки (CLI), необходимо добавить эти правила в рабочую директорию системы Suricata.
где «Server1» – имя настроенного сервера обновлений.
Для импорта правила со всех настроенных удалённых серверов необходимо ввести следующую команду:
admin@ngfwos:~$ suricata update-rules remote-server all
Обновление с локального источника:
Для импорта правила с конкретного локального хранилища необходимо ввести следующую команду:
admin@ngfwos:~$ suricata update-rules local-storage LOCAL
где «LOCAL» – имя локального хранилища.
Для импорта правила из всех настроенных локальных хранилищ необходимо ввести следующую команду:
admin@ngfwos:~$ suricata update-rules local-storage all
Для изменения каталога, используемого по умолчанию для хранения правил Suricata, необходимо ввести следующую команду:
set suricata default-rule-path /var/lib/suricata/rules/test/
где </var/lib/suricata/rules/test/> – новый каталог хранения правил по умолчанию.
Для указания пути к файлу с правилами, который будет использоваться системой Suricata для анализа сетевого трафика и обнаружения потенциальных угроз, необходимо выполнить следующую команду:
set suricata rule-files file-name </var/lib/suricata/rules/test.rules>
где </var/lib/suricata/rules/test.rules> – путь к файлу с правилами Suricata (приведен в качестве примера).
Для настройки Suricata на использование всех файлов правил из определённого каталога, применяется следующая команда:
set suricata rule-files file-name /var/lib/suricata/rules/*.rules
После выполнения данной команды система Suricata автоматически загрузит и активирует все правила, содержащиеся в файлах с расширением «.rules», расположенных в каталоге «/var/lib/suricata/rules/».
Включение и выключение какого-либо параметра IDS/IPS осуществляется с помощью атрибутов «yes» и «no» соответственно.
Для включения сбора статистики о деятельности и производительности системы IDS/IPS необходимо ввести следующую команду:
set suricata stats enabled yes
Для установки интервала сбора статистики необходимо ввести следующую команду:
set suricata stats interval <interval>
где <interval> - значение интервала сбора статистики в секундах. По умолчанию используется значение «8».
Для включения записи событий и предупреждений IDS/IPS в глобальный журнал системы ARMA Стена необходимо ввести следующую команду:
set suricata outputs syslog enabled yes
По умолчанию запись событий и предупреждений IDS/IPS в глобальный журнал включена.
Дополнительные команды настройки включения записи событий и предупреждений IDS/IPS:
Включить запись уведомлений о срабатывании событий IDS/IPS в формате JSON в файл «eve.json»:
set suricata outputs eve-log enabled yes
где «eve-log» – идентификатор типа файла.
Включить запись уведомлений о срабатывании событий IDS/IPS в более простой текстовый файл «fast.log» журнала:
set suricata outputs fast enabled yes
Команда, предписывающая Suricata вносить все новые данные в существующий файл «fast.log», не заменяя его:
set suricata outputs fast append yes
Включить запись статистики IDS/IPS в файл «stats.log»:
set suricata outputs stats enabled yes
Команда, предписывающая Suricata вносить все новые данные в существующий файл «stats.log», не заменяя его:
set suricata outputs stats append yes
Включить журналирование HTTP-трафика в файл «http.log»:
set suricata outputs http-log enabled yes
Команда, предписывающая Suricata вносить все новые данные в существующий файл «http.log», не заменяя его:
set suricata outputs http-log append yes
Включить запись информации о TLS-трафике в файл «tls.log»:
set suricata outputs tls-log enabled yes
Команда, предписывающая Suricata вносить все новые данные в существующий файл «tls.log», не заменяя его:
set suricata outputs tls-log append yes
Включить запись предупреждений в системе IDS/IPS в файл «alert-debug.log»:
set suricata outputs alert-debug enabled yes
Команда, предписывающая Suricata вносить все новые данные в существующий файл «alert-debug.log», не заменяя его:
set suricata outputs alert-debug append yes
Включить запись сертификатов TLS-сессий в системе IDS/IPS:
set suricata outputs tls-store enabled yes
Сертификаты сохраняются в каталоге /var/log/suricata/certs/.
Включить сохранение всех пакетов, зарегистрированных в системе IDS/IPS, в файл журнала «_log(n).pcap_»:
set suricata outputs pcap-log enabled yes
Команда настройки размера файла «_log(n).pcap_»:
set suricata outputs pcap-log limit <limit>
где <limit> - максимальный размер файла в байтах. Допускается указать единицы измерения: mb - мегабайт или kb - килобайт. По умолчанию используется значение «1000mb». В случае, если размер файла достигнет установленного лимита, произойдет его ротация, и будет создан новый файл.
Команда ограничения максимального количества файлов pcap:
set suricata outputs pcap-log max-files <max>
где <max> - максимальное количество файлов pcap. По умолчанию используется значение «2000».
Примечание
Настройки limit и max-files применяются для каждого потока. Таким образом, ограничение объёма для восьми потоков с 2000 файлами с размером 1000 мегабайт каждый составит 16 терабайт.
Включить запись данных TCP после установления соединения в статусе «established» в файл «tcp-data.log»:
set suricata outputs tcp-data enabled yes
Включить запись данных тела HTTP после установления соединения в статусе «established» в файл «http-body-data.log»:
set suricata outputs http-body-data enabled yes
Примечание
При активации дополнительных файлов журналов уведомлений о срабатывании системы IDS/IPS, будут сохраняться в каталоге /var/log/suricata.
Включить логирование системных событий работы Suricata в глобальный журнал системы ARMA Стена:
set suricata logging outputs syslog enabled yes
Дополнительные команды настройки включения логирования системных событий работы Suricata:
Включить вывод журнала системных событий работы Suricata в окне терминала, в котором запущена система ARMA Стена:
set suricata logging outputs console enabled yes
Включить логирование системных событий работы Suricata в файл «suricata.log»:
set suricata logging outputs file enabled yes
Файл «suricata.log» сохраняется в каталоге /var/log/suricata/.
Установить уровень ведения журнала в файле «suricata.log»:
set suricata logging outputs file level <level>
где <level> - уровень ведения журнала. По умолчанию используется уровень «info».
Установить уровень ведения журнала по умолчанию:
set suricata logging default-log-level <level>
где <level> - уровень ведения журнала. По умолчанию используется уровень «notice». Возможно указать следующие значения:
«error» - уровень ошибок, которые могут оказать влияние на работу системы;
«warning» - уровень предупреждений о потенциальных проблемах;
«notice» - уровень для общих уведомлений о важных событиях;
«info» - уровень для информационных сообщений;
«perf» - уровень для сообщений и событий, связанных с производительностью и работой системы Suricata;
«config» - уровень конфигурации Suricata;
«debug» - уровень для отладочной информации.
Включить/отключить обнаружение пакетов, переданных по определённому протоколу прикладного уровня:
set suricata app-layer protocols <protocolname> enabled yes|no
где <protocolname> – протокол.
Поддерживается обнаружение пакетов, переданных по следующим протоколам:
«ads»;
«alphalink» - по умолчанию отключён;
«bittorrent-dht»;
«dcerpc»;
«dhcp»;
«dnp3»;
«dns tcp»;
«dns udp»;
«enip»;
«ftp»;
«http»;
«http2»;
«iec104»;
«ike»;
«imap»;
«krb5»;
«modbus» - по умолчанию отключён;
«modbus2» - по умолчанию отключён;
«mqtt»;
«nfs»;
«ntp»;
«opc-ua»;
«pgsql»;
«quic»;
«rdp»
«rfb»;
«sip»;
«smb»;
«smtp»;
«snmp»;
«ssh»;
«telnet»;
«tftp»;
«tls»;
«tpkt».
Для указания портов назначения, используемых при обнаружении пакетов по протоколу ads, необходимо ввести следующую команду:
set suricata app-layer protocols ads detection-ports dst-port <portnumber>
где <portnumber> – номер порта. По умолчанию используется порт «48898».
Возможно указание порта назначения при обнаружении пакетов по следующим протоколам:
«dnp3», по умолчанию используется порт «20000»;
«enip», по умолчанию используется порт «44818»;
«iec104», по умолчанию используется порт «2404»;
«modbus», по умолчанию используется порт «502»;
«modbus2», по умолчанию используется порт «502»;
«opc-ua», по умолчанию используется порт «4840» и «48020»;
«rfb», по умолчанию используются порты: 5900, 5901, 5902, 5903, 5904, 5905, 5906, 5907, 5908, 5909;
«smb», по умолчанию используется порт «139» и «445»;
«tls», по умолчанию используется порт «443»;
«dns tcp» – DNS поверх TCP, по умолчанию используется порт «53»;
«dns udp» – DNS поверх UDP, по умолчанию используется порт «53»;
«tpkt», по умолчанию используется порт «102».
Для протокола enip существует возможность настроить порт источника:
set suricata app-layer protocols enip detection-ports src-port <portnumber>
где <portnumber> - номер порта. По умолчанию используется порт «44818».
Для протокола http возможно настроить дополнительные параметры:
определить размер скользящего окна для проверки тела запроса:
set suricata app-layer protocols http request-body-inspect-window <value>
где <value> - значение размера скользящего окна. По умолчанию используется значение «4kb».
установить максимальный размер тела запроса:
set suricata app-layer protocols http request-body-limit <value>
где <value> - значение максимального размера тела запроса. По умолчанию используется значение «3072».
установить минимальный размер тела запроса для начала проверки:
set suricata app-layer protocols http request-body-minimal-inspect-size <value>
где <value> - значение минимального размера тела запроса. По умолчанию используется значение «8kb».
определить размер скользящего окна для проверки ответа:
set suricata app-layer protocols http response-body-inspect-window <value>
где <value> - значение минимального размера ответа. По умолчанию используется значение «4kb».
установить максимальный размер тела ответа:
set suricata app-layer protocols http response-body-limit <value>
где <value> - значение максимального размера тела ответа. По умолчанию используется значение «3072».
установить минимальный размер тела ответа для начала проверки:
set suricata app-layer protocols http response-body-minimal-inspect-size <value>
где <value> - значение минимального размера тела ответа. По умолчанию используется значение «8kb».
Для протокола tls возможно настроить дополнительные параметры:
установить параметр, который определяет обработку трафика после установлении TLS сессии:
set suricata app-layer protocols tls encryption-handling <parameter>
где <parameter> - параметр поведения. Парсер прикладного уровня TLS имеет возможность прекратить обработку зашифрованного трафика после первоначального подтверждения связи. Возможно указать следущие параметры поведения:
default - продолжить мониторинг TLS-сессии, выявить аномалии в протоколе, проверить ключевые слова TLS_*. Отключить проверку немодифицированных сигнатур «content»;
bypass - прекратить обработку этого потока настолько, насколько это возможно. Не проводить дальнейший анализ и проверку TLS. По возможности, обработку потока выполнять либо в ядре, либо в аппаратном обеспечении;
full - продолжать отслеживание и проверку в обычном режиме. Сигнатуры ключевых слов немодифицированного содержимого также проверяются;
включить поддержку JA3:
set suricata app-layer protocols tls ja3-fingerprints yes
Для протокола smtp возможно настроить дополнительные параметры:
установить минимальный размер анализируемого сообщения:
set suricata app-layer protocols smtp inspected-tracker content-inspect-min-size <value>
где <value> - значение минимального размера соббщения в байтах. По умолчанию используется значение «32768».
установить размера скользящего окна, в котором будет просматриваться сообщение:
set suricata app-layer protocols smtp inspected-tracker content-inspect-window <value>
где <value> - значение размера скользящего окна в байтах. По умолчанию используется значение «4096».
установить максимального размера анализируемого сообщения:
set suricata app-layer protocols smtp inspected-tracker content-limit <value>
где <value> - значение максимального размера сообщения в байтах. По умолчанию используется значение «100000».
включить пересчет md5 для сообщения:
set suricata app-layer protocols smtp mime body-md5 yes
включить декодирование сообщений MIME в формате Base64:
set suricata app-layer protocols smtp mime decode-base64 yes
включить декодирование MIME-сообщений:
set suricata app-layer protocols smtp mime decode-mime yes
включить декодирование quoted MIME-сообщений:
set suricata app-layer protocols smtp mime decode-quoted-printable yes
включить сохранение URL из сообщений:
set suricata app-layer protocols smtp mime extract-urls yes
указать максимальное количество байт для каждого значения данных заголовка, хранящегося в структуре данных:
set suricata app-layer protocols smtp mime header-value-depth <value>
где <value> - значение максимального количества байт. По умолчанию используется значение «2000».
включить извлечение всех сырых smtp-сообщений (не совместимо с настройкой mime decode-mime):
set suricata app-layer protocols smtp raw-extraction yes
Команда настройки политики исключений для сессий, которые были захвачены в середине потока:
set suricata stream midstream-policy <policy>
где <policy> - значение политики исключений и результирующего поведения. Возможно указать следующие значения:
ignore - не применять политику исключений. Используется по умолчанию;
drop-packet - отбрасывает только текущий пакет, не затрагивая остальные пакеты в потоке;
drop-flow - отключить проверку для всего потока (пакеты, полезная нагрузка, протокол прикладного уровня);
reject - аналогично drop-flow, но дополнительно отклоняет текущий пакет;
pass-flow - пропустить поток. Поток будет повторно собран, а его синтаксический анализ и протоколирование продолжены на уровне приложения;
bypass - обход потока, дальнейший анализ потока не выполняется;
pass-packet - отключает детектирование для текущего пакета, но продолжает выполнять обновления состояния потока и разбор прикладного уровня.
Команда настройки политики обработки ошибок, возникающих на прикладном уровне в Suricata:
set suricata app-layer error-policy <policy>
где <policy> - действие над пакетом. Возможно указать следующие значения:
drop-flow - отключает проверку для всего потока (flow), включая пакеты, полезную нагрузку и протоколы прикладного уровня. Отбрасывает текущий пакет и все последующие пакеты в этом потоке. Применяется в ситуациях, требующих обеспечения высокого уровня защиты и оперативного блокирования потенциально вредоносного трафика;
pass-flow - отключает проверку полезной нагрузки и пакетов, но продолжает выполнять сборку потока (stream reassembly), анализ прикладного уровня (app-layer parsing) и логирование;
bypass - обходит (игнорирует) весь поток, отключая дальнейшую проверку. Используется для минимизации влияния ошибок на производительность, но может снижать безопасность;
drop-packet - отбрасывает только текущий пакет, вызвавший ошибку;
pass-packet - отключает детектирование для текущего пакета, но продолжает обновление потока и анализ прикладного уровня (в зависимости от того, какая политика была активирована). Позволяет изолировать ошибку, не затрагивая остальной трафик;
reject - аналогично drop-flow, но также отправляет TCP-сброс (RST) или ICMP-сообщение об ошибке для завершения соединения. Уведомляет участников соединения о блокировке;
ignore - игнорировать ошибку в приложении и продолжать обработку данных. Значение используется по умолчанию.
Команды настроек метода захвата сетевого трафика NetMap:
14.1 Для настройки режима захвата на определённого интерфейса необходимо ввести следующую команду:
set suricata netmap interface <iname> copy-mode [ips | tap]
где:
<iname> – имя интерфейса;
ips - режим сетевой безопасности, обеспечивающий активный мониторинг и предотвращение подозрительной активности путём модификации, блокировки или отбрасывания трафика в реальном времени на основе правил безопасности;
tap (ids) - режим пассивного мониторинга сетевого трафика, направленный на обнаружение подозрительной активности и генерацию оповещений при совпадении с заданными правилами безопасности, без вмешательства в проходящий трафик.
14.2 Для настройки режима захвата для всех интерфейсов, для которых режим захвата не задан локально, необходимо ввести следующую команду:
set suricata netmap parameters copy-mode [ips | tap]
14.3 Для указания количества потоков, используемых для обработки сетевых пакетов, необходимо ввести следующую команду:
set suricata netmap parameters threads <value>
где <value> - количество потоков. Возможно указать значение в диапазоне от «1» до «9999» или установлено как «auto». По умолчанию используется значение «auto». Рекомендуется выбирать значение, равное единице, либо использовать режим «auto», либо устанавливать значение, соответствующее числу RSS-очередей на интерфейсе. По умолчанию используется настройка «auto». В случае несоответствия количества RSS-очередей, указанных в конфигурации, фактическому числу RSS-очередей на интерфейсе, функционирование Suricata может быть нестабильным или недостаточно эффективным.
14.4 Для настройки проверки контрольных сумм TCP-пакетов необходимо ввести следующую команду:
set suricata netmap parameters checksum-checks <yes | no | auto>
где <yes | no | auto> - параметр проверки контрольных сумм при работе Suricata в режиме NetMap. Возможно указать следующие значения:
yes - включает проверку контрольных сумм (надёжность, но ниже производительность). Проверка контрольных сумм TCP-пакетов оказывает значительное влияние на производительность системы;
no - отключает проверку (высокая производительность, но возможны ошибки);
auto - автоматический выбор (оптимизация под оборудование и условия). Используется по умолчанию.
Примечание
Проверка контрольных сумм TCP-пакетов оказывает значительное влияние на производительность системы.
14.5 Настроить политику параметров драйвера сетевой карты при использовании метода захвата трафика NETMAP в Suricata.
set suricata netmap parameters driver-settings-policy <low| mid | high>.
где <low| mid | high> - блок настроек позволяющмй оптимизировать работу NETMAP, регулируя уровень производительности и ресурсов, выделяемых для обработки сетевого трафика. Возможно указать следующие значения:
low - подходит для сетей с низкой нагрузкой или ограниченными ресурсами оборудования. Минимизирует использование оперативной памяти и CPU:
if_num = 100 - количество интерфейсов, которые могут быть обработаны одновременно;
buf_num = 163840 - общее количество буферов для хранения пакетов;
if_size = 1024 -размер кольцевого буфера (ring buffer) для каждого интерфейса.
mid (по умолчанию)- оптимальное решение для большинства сценариев, особенно при использовании сетей средней пропускной способности (до 10 Гбит/с):
if_num = 500 - увеличенное количество интерфейсов для обработки большего числа потоков данных;
buf_num = 491520 - увеличение объема буферов для временного хранения пакетов;
if_size = 2048 -увеличенный размер кольцевого буфера для каждого интерфейса, снижая вероятность потери пакетов.
high - рекомендовано для использования в высокоскоростных сетях со скоростью передачи данных 10 Гбит/с и выше, где требуется максимальная пропускная способность и минимальные потери данных:
if_num = 1000 - максимальное количество интерфейсов, которые могут быть обработаны одновременно;
buf_num = 983040 - увеличение объема буферов для минимизации потерь пакетов при высокой нагрузке;
if_size = 4096 -максимальный размер кольцевого буфера, обеспечивающий минимальные задержки и максимальную пропускную способность.
14.6 Команда глобальной конфигурации действий с пакетами и потоками (политика исключений), возникающими в процессе работы Suricata (нехватка памяти, неподдерживаемый протокол, разрыв соединения и т.д.):
set suricata exception-policy <policy>
где <policy> - действие над пакетом. Возможно указать следующие значения:
auto (используется по умолчанию);
drop-flow;
pass-flow;
bypass;
drop-packet;
pass-packet;
reject;
ignore.
Примечание
В случае если политика исключений не включена, Suricata не осуществляет регистрацию статистических данных, связанных с данной политикой.
Указать режим захвата сетевого трафика для Suricata:
set suricata capture-method <af-packet | netmap>
где <af-packet | netmap> - режим захвата сетевого трафика. Возможно указать следующие режимы:
netmap - высокопроизводительный фреймворк для захвата и обработки сетевых пакетов, который минимизирует задержки и потери данных, обеспечивая максимальную эффективность на высокоскоростных сетях. Установлен по умолчанию.
af-packet - использует стандартный механизм ядра Linux для захвата сетевых пакетов, обеспечивая простоту настройки и хорошую производительность на сетях с пропускной способностью до 1Gbps.
Для оптимизации производительности сервера при работе с IDS/IPS возможно настроить один из предопределённых профилей производительности системы, введя следующую команду:
set system option performance <throughput | latency>
где:
«throughput» - профиль сервера, ориентированный на повышение пропускной способности сети, акцентируясь на производительности в ущерб энергосбережению. Профиль содержит следующие основные настройки:
драйвер intel_pstate настраивается на максимальную производительность, в параметр max_perf_pct устанавливается значение «100»%;
буферы ядра сети увеличиваются для улучшения пропускной способности;
включены Transparent Huge Pages (THP) для оптимизации работы с большими страницами памяти;
параметр cpupower настраивается на режим «performance» для повышения производительности процессора;
в параметр kernel.sched_min_granularity_ns устанавливается значение «10» мкс для повышения точности планирования задач;
в параметр kernel.sched_wakeup_granularity_ns устанавливается значение «15» мкс для повышения скорости реакции на пробуждение задач;
в параметр vm.dirty_ratio устанавливается значение «40»% для повышения производительности дисковой подсистемы за счет увеличенного кэша;
«latency» - профиль сервера, ориентированный на снижение задержки сети, акцентируясь на производительности в ущерб энергосбережению. Профиль содержит следующие основные настройки:
драйвер intel_pstate настраивается на поддержание минимальной частоты процессора, в параметр min_perf_pct устанавливается значение «100»% для обеспечения минимальной задержки;
отключаются Transparent Huge Pages (THP);
отключается автоматический баланс нагрузки между NUMA-узлами для уменьшения задержек;
параметр cpupower настраивается на режим «performance» для повышения производительности процессора;
в параметр cpu_dma_latency устанавливается значение «1» для минимизации задержки при работе с памятью;
в параметры busy_read и busy_poll устанавливаются значения «50» мкс для ускорения операций ввода-вывода;
в параметр tcp_fastopen устанавливается значение «3» для ускорения установки TCP-соединений.
Для просмотра всех событий системы IDS/IPS из глобального журнала в локальном консольном интерфейсе необходимо ввести в эксплуатационном режиме команду (см. Рисунок – Журнал системы IDS/IPS):
Журнал событий системы IDS/IPS возможно отфильтровать с помощью дополнительных фильтров:
engine - вывод событий запуска Suricata:
admin@ngfwos:~$ show logging idps engine [class <> | level <>]
rules - вывод событий срабатывания правил Suricata согласно настройкам ведения журнала (по умолчанию используется уровень «notice»):
admin@ngfwos:~$ show logging idps rules [class <> | level <>]
server - вывод событий, связанных с настройками Suricata:
admin@ngfwos:~$ show logging idps server [class <> | level <>]
update_rules - вывод событий, связанных с обновлением правил Suricata:
admin@ngfwos:~$ show logging idps update_rules [class <> | level <>]
Подробное описание дополнительных фильтров «class» и «level» представлено в разделе «Логирование» настоящего руководства (см. Просмотр глобального журнала).