Функциональность системы обнаружения и предотвращения вторжений (СОВ) в 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>
по умолчанию для сетевых интерфейсов, на которых режим не задан в явном виде, но активирована служба Suricata:
set suricata netmap parameters copy-mode <ips | tap>
где <ips | tap> - режим захвата трафика. Возможно указать следующие значения:
ips - режим сетевой безопасности, обеспечивающий активный мониторинг и предотвращение подозрительной активности путём модификации, блокировки или отбрасывания трафика в реальном времени на основе правил безопасности;
tap (ids) - режим пассивного мониторинга сетевого трафика, направленный на обнаружение подозрительной активности и генерацию оповещений при совпадении с заданными правилами безопасности, без вмешательства в проходящий трафик.
Примечание
Необходимо явно установить режим захвата трафика по умолчанию либо указать данный параметр для конкретного интерфейса, на котором будет активирована Suricata. В случае отсутствия указанных настроек, сетевой интерфейс, используемый для работы со службой Suricata, будет исключён из обработки стандартного сетевого стека. Это может привести к потере возможности выполнения базовых сетевых операций, включая передачу данных и управление системой через протокол SSH, при условии, что данный интерфейс задействован для этих целей. Подобное поведение обусловлено особенностью технологии NetMap, которая блокирует сетевой интерфейс для всех внешних процессов и операций, включая сетевые подключения.
Указать файл с правила, которые будут использоваться в Suricata:
set suricata rule-files file-name /config/files/configuration/suricata/rule-files/*.rules
Система Suricata загрузит и будет использовать все правила, которые найдёт в файлах с расширением «rules», расположенных в каталоге «/config/files/configuration/suricata/rule-files/». Данный каталог используется системой по умолчанию.
После выполнения минимальных настроек Suricata для запуска СОВ, необходимо ввести следующую команду в режиме конфигурации:
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».
Для просмотра статистики по загруженным правилам Suricata, включая количество активных, сбойных и пропущенных правил, необходимо выполнить следующую команду в эксплуатационном режиме:
set suricata netmap interface eth0
set suricata netmap parameters copy-mode ips
set suricata rule-files file-name /config/files/configuration/suricata/rule-files/suricata.rules
set suricata enable yes
commit
save
При активации Suricata в режиме netmap на физическом интерфейсе eth0 обработка трафика через VLAN-подинтерфейсы (например, eth0.100) становится невозможной. Трафик, направляемый через такие подинтерфейсы, не будет проходить, поскольку netmap захватывает поток пакетов на уровне физического интерфейса, и кадры с VLAN-тегами могут не доставляться до стека, либо не обрабатываться корректно в контексте подинтерфейсов.
Включение СОВ на VLAN-подинтерфейсе eth0.100:
set suricata netmap interface eth0.100
set suricata netmap parameters copy-mode ips
set suricata rule-files file-name /config/files/configuration/suricata/rule-files/suricata.rules
set suricata enable yes
commit
save
В данной конфигурации Suricata осуществляет детектирование трафика исключительно на VLAN-подинтерфейсе eth0.100. Пакеты, проходящие через физический интерфейс eth0, при этом не блокируются и продолжают обрабатываться сетевым стеком в штатном режиме, однако не подвергаются анализу со стороны Suricata.
Включение СОВ на интерфейсах eth0 и eth0.100:
set suricata netmap interface eth0
set suricata netmap interface eth0.100
set suricata netmap parameters copy-mode ips
set suricata rule-files file-name /config/files/configuration/suricata/rule-files/suricata.rules
set suricata enable yes
commit
save
В данной конфигурации детектирование трафика осуществляется только на физическом интерфейсе eth0. Трафик, проходящий через VLAN-подинтерфейс eth0.100, не будет обрабатываться, несмотря на его указание в конфигурации Suricata, и фактически блокируется на уровне обработки пакетов.
Для обеспечения детектирования трафика как на физическом интерфейсе eth0, так и на VLAN-подинтерфейсе eth0.100, требуется отключить аппаратное ускорение обработки VLAN-тегов (rxvlan и txvlan) на физическом интерфейсе перед активацией Suricata. Для отключения аппаратного ускорения необходимо ввести следующие команды от имени УЗ «admin»:
admin@ngfwos:~$ sudo -i
root@ngfwos:~# ethtool --offload eth0 rxvlan off txvlan off
root@ngfwos:~# exit
admin@ngfwos:~$
Примечание
Изменение параметров offload необходимо выполнять до включения Suricata, так как настройки netmap применяются на этапе инициализации драйвера.
После выполнения данной команды аппаратная фильтрация и обработка VLAN-тегов на интерфейсе eth0 будет отключена, что позволит драйверу сетевого интерфейса и приложению Suricata получать полный трафик, включая кадры с VLAN-метками, через механизм netmap. В этом случае Suricata сможет корректно обрабатывать трафик на обоих интерфейсах — eth0 и eth0.100.
Включение СОВ на агрегированном интерфейсе bond1:
set suricata netmap interface bond1
set suricata netmap parameters copy-mode ips
set suricata rule-files file-name /config/files/configuration/suricata/rule-files/suricata.rules
set suricata enable yes
commit
save
При активации Suricata в режиме netmap на агрегированном интерфейсе bond1 захват трафика осуществляется на уровне интерфейса bond, что исключает возможность корректной обработки VLAN-подинтерфейсов, ассоциированных с bond1 (например, bond1.100). Трафик на подинтерфейсах блокируется.
Включение СОВ на VLAN-подинтерфейсе bond1.200:
set suricata netmap interface bond1.200
set suricata netmap parameters copy-mode ips
set suricata rule-files file-name /config/files/configuration/suricata/rule-files/suricata.rules
set suricata enable yes
commit
save
Suricata в данном режиме анализирует трафик только на VLAN-подинтерфейсе bond1.200. Трафик, проходящий через интерфейс bond1, не перехватывается и обрабатывается стандартным сетевым стеком.
Включение СОВ на интерфейсах bond1 и bond1.200:
Конфигурация агрегированного интерфейса bond1:
# Создание агрегированного интерфейса «bond1» с методом хеширования «layer2+3»:
set interfaces bonding bond1 hash-policy 'layer2+3'
# Включение сетевых интерфейсов «eth2» и «eth3» в состав интерфейса «bond1»:
set interfaces bonding bond1 member interface 'eth2'
set interfaces bonding bond1 member interface 'eth3'
# Создание интерфейса VLAN на агрегированном интерфейсе и назначение ему IP-адрес:
set interfaces bonding bond1 vif 200 address '10.23.5.250/29'
Отключение аппаратного ускорения VLAN-обработки на физических интерфейсах.
Необходимо отключить аппаратное ускорение приёма/передачи VLAN-тегов на физических интерфейсах «eth2» и «eth3», входящих в интерфейс «bond1». Это обеспечит корректную обработку VLAN-маркированного трафика на уровне ядра.
Для отключения аппаратного ускорения необходимо ввести следующие команды от имени УЗ «admin»:
admin@ngfwos:~$ sudo -i
root@ngfwos:~# ethtool --offload eth2 rxvlan off txvlan off
root@ngfwos:~# ethtool --offload eth3 rxvlan off txvlan off
root@ngfwos:~# exit
admin@ngfwos:~$
Конфигурация Suricata:
set suricata netmap interface eth2
set suricata netmap interface eth3
set suricata netmap parameters checksum-checks 'no'
set suricata netmap parameters copy-mode 'ips'
set suricata rule-files file-name /config/files/configuration/suricata/rule-files/suricata.rules
set suricata enable 'yes'
Примечание
Если указать интерфейсы bond1 и bond1.200:
set suricata netmap interface bond1
set suricata netmap interface bond1.200
то обработка и детектирование трафика осуществляются исключительно на интерфейсе «bond1». Трафик, поступающий через интерфейс «bond1.200», будет заблокирован, несмотря на наличие конфигурационной команды «set suricata netmap interface bond1.200».
Система Suricata имеет две директории конфигурации: активная и рабочая.
Рабочая директория - содержит рабочую конфигурацию Suricata, которая в данный момент редактируется. Здесь отображаются все правила, созданные пользователем в интерфейсе командной строки (CLI). К этим правилам возможно применять команды редактирования: добавлять правила, изменять действия правил, активировать и деактивировать правила, удалять правила или файлы с правилами. Изменения, внесённые в рабочую конфигурацию, не вступают в силу до тех пор, пока они не будут зафиксированы командой «suricata commit-rules». В этот момент рабочая конфигурация становится активной конфигурацией.
Активная директория - содержит активную конфигурацию Suricata, которая в данный момент загружена и используется. Команда «suricata save-rules» сохраняет активную конфигурацию в файл для последующего использования.
Для просмотра всех правил прописанных в рабочей или активной директории Suricata необходимо ввести команду:
admin@ngfwos:~$ suricata show-rules directory <active | working>
SIDS
/config/files/configuration/suricata/rule-files/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 /config/files/configuration/suricata/rule-files/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 /config/files/configuration/suricata/rule-files/test.rules.
admin@ngfwos:~$
Если в каталоге «/config/files/configuration/suricata/rule-files/» отсутствует файл с именем «test.rules», то такой файл будет создан, и в него будет добавлено создаваемое правило.
Добавить новый файл правил в активный список файлов с правилами, используемых Suricata для анализа сетевого трафика, введя следующую команду в конфигурационном режиме:
set suricata rule-files file-name /config/files/configuration/suricata/rule-files/test.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 /config/files/configuration/suricata/rule-files/test.rules.
admin@ngfwos:~$
В данном случае действие правила было изменено с «alert» на «drop».
Примечание
В случае необходимости изменения действия правил в файлах, добавленных не через интерфейс командной строки (CLI), необходимо добавить эти правила в рабочую директорию системы Suricata с помощью следующей команды:
<каталог> - каталог для поиска правил Suricata, например - «/config/files/configuration/suricata/rule-files/»;
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 /config/files/configuration/suricata/rule-files/suricata.rules.
admin@ngfwos:~$
Строка, содержащая указанное правило, будет закомментирована в файле с помощью специального символа «#»:
admin@ngfwos:~$ suricata show-rules directory active
SIDS
/config/files/configuration/suricata/rule-files/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 /config/files/configuration/suricata/rule-files/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 /config/files/configuration/suricata/rule-files/suricata.rules.
admin@ngfwos:~$
Для активации ранее отключённых правил необходимо выполнить следующую команду:
# Включить все правила, указанные в файле suricata.rules.
admin@ngfwos:~$ suricata enable-rules file-path /config/files/configuration/suricata/rule-files/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 /config/files/configuration/suricata/rule-files/suricata.rules.
admin@ngfwos:~$
Примечание
В случае необходимости отключения правил в файлах, добавленных не через интерфейс командной строки (CLI), необходимо добавить эти правила в рабочую директорию системы Suricata.
В случае необходимости удаления файла с правила Suricata, добавленного через интерфейс командной строки (CLI), например, ранее созданного файла test.rules, необходимо выполнить следующую команду:
admin@ngfwos:~$ suricata del-rules file-path /config/files/configuration/suricata/rule-files/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 /config/files/configuration/suricata/rule-files/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 /config/files/configuration/suricata/rule-files/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/> – новый каталог хранения правил по умолчанию.
По умолчанию используется каталог /config/files/configuration/suricata/rule-files/.
Для указания пути к файлу с правилами, который будет использоваться системой Suricata для анализа сетевого трафика и обнаружения потенциальных угроз, необходимо выполнить следующую команду:
set suricata rule-files file-name <test.rules>
где <test.rules> – имя файла с правилами Suricata (приведён в качестве примера), расположенного в каталоге по умолчанию: /config/files/configuration/suricata/rule-files/. Если файл правил находится в другом каталоге, необходимо указать полный путь к нему. Пример: «set suricata rule-files file-name /path/to/rules/test.rules».
Для настройки Suricata на использование всех файлов правил из определённого каталога, применяется следующая команда:
set suricata rule-files file-name /config/files/configuration/suricata/rule-files/*.rules
После выполнения данной команды система Suricata автоматически загрузит и активирует все правила, содержащиеся в файлах с расширением «.rules», расположенных в каталоге «/config/files/configuration/suricata/rule-files/».
Включение и выключение какого-либо параметра 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> - максимальный размер файла в байтах. Возможно указать значение в диапазоне от «0» до «18446744073709553664». Допускается указать единицы измерения: kb - килобайт (возможный диапазон значений от «0» до «18014398509481986»), mb - мегабайт (возможный диапазон значений от «0» до «17592186044416») или gb - гигабайт (возможный диапазон значений от «0» до «17179869184»). По умолчанию используется значение «1000mb». В случае, если размер файла достигнет установленного лимита, произойдёт его ротация, и будет создан новый файл.
Команда ограничения максимального количества файлов pcap:
set suricata outputs pcap-log max-files <max>
где <max> - максимальное количество файлов pcap. Возможно указать значение в диапазоне от «1» до «4294967295». По умолчанию используется значение «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) - режим пассивного мониторинга сетевого трафика, направленный на обнаружение подозрительной активности и генерацию оповещений при совпадении с заданными правилами безопасности, без вмешательства в проходящий трафик.
Примечание
В случае, если для конкретного интерфейса не будет явно указан режим захвата, будет применяться глобальный режим захвата по умолчанию, установленный для всех интерфейсов. Если глобальный режим захвата для всех интерфейсов не будет определён, система выдаст сообщение об ошибке при попытке применения конфигурации:
admin@ngfwos# set suricata netmap interface eth1
[edit]
admin@ngfwos# commit
[ suricata ]
copy-mode must be configured for interface "eth1" or globally in netmap
parameters
[[suricata]] failed
Commit failed
[edit]
admin@ngfwos#
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 - режим перехвата трафика в Suricata, который требует наличия нескольких сетевых интерфейсов и работает в режиме шлюза.
Для оптимизации производительности сервера при работе с 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-соединений.
Функция контроля промышленных протоколов реализована на основе технологии глубокой инспекции трафика на уровне прикладных протоколов, включая специализированные промышленные протоколы.
Механизм анализа и идентификации промышленных протоколов основан на сигнатурном методе обнаружения, обеспечивая интеллектуальное распознавание протоколов в реальном времени. Обнаружение и классификация трафика осуществляются с использованием правил системы сетевой инспекции Suricata, что позволяет эффективно выявлять и контролировать нештатное использование промышленных протоколов, а также потенциально вредоносную активность, связанную с ними.
Данная функциональность позволяет обеспечить видимость и контроль использования промышленных протоколов в сетях предприятия, предотвратить несанкционированный доступ к критическим системам и повысить уровень безопасности в средах ICS/SCADA.
Система ARMA Стена поддерживает следующие промышленные протоколы:
ADS (Automation Device Specification ) — протокол, используемый для обмена данными между устройствами в промышленных системах автоматизации. Протокол поддерживает два типа транспортных соединений:
TCP;
UDP.
События, связанные с передачей сообщений по протоколу ADS, могут быть обнаружены и обработаны на основе следующих признаков:
Тип сообщения — запрос (REQUEST) или ответ (RESPONSE).
В зависимости от используемой команды ADS, возможно указание дополнительных параметров в правиле:
Команды ADS Read, ADS Write, ADS Add Device Notification, ADS Read Write поддерживают следующие параметры:
ADS Index Group;
ADS Index Offset.
Команда ADS Write Control поддерживает следующие параметры:
ADS State — состояние ADS-соединения. Возможно использовать следующие значения:
0 - ADSSTATE_INVALID;
1 - ADSSTATE_IDLE;
2 - ADSSTATE_RESET;
3 - ADSSTATE_INIT;
4 - ADSSTATE_START;
5 - ADSSTATE_RUN;
6 - ADSSTATE_STOP;
7 - ADSSTATE_SAVECFG;
8 - ADSSTATE_LOADCFG;
9 - ADSSTATE_POWERFAILURE;
10 - ADSSTATE_POWERGOOD;
11 - ADSSTATE_ERROR;
12 - ADSSTATE_SHUTDOWN;
13 - ADSSTATE_SUSPEND;
14 - ADSSTATE_RESUME;
15 - ADSSTATE_CONFIG;
16 - ADSSTATE_RECONFIG;
диапазон 0 - 16.
Device State — состояние устройства.
Команда ADS Add Device Notification поддерживает параметр Transmission Mode (режим передачи уведомлений). Доступные значения:
TRANSMISSION_MODE_NO_TRANS;
TRANSMISSION_MODE_CLIENT_CYCLE;
TRANSMISSION_MODE_CLIENT_1_REQ;
TRANSMISSION_MODE_SERVER_CYCLE;
TRANSMISSION_MODE_SERVER_ON_CHA.
Примечание
Для обеспечения фильтрации сетевого трафика по протоколу ADS необходимо проверить, что распознавание пакетов данного протокола включено в системе Suricata. Это можно проверить и при необходимости активировать с помощью следующей команды в конфигурационном режиме:
set suricata app-layer protocols alphalink enabled yes
Обнаружение трафика по протоколу ADS в системе Suricata по умолчанию включено.
Примеры правил:
AMS NetId - позволяет задать правило на основе идентификатора устройства (NetID):
# Блокировать TCP-пакеты, предназначенные устройству с NetID 5.99.54.158.1.1:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: NET_ID_TARGET[5.99.54.158.1.1:5.99.54.158.1.1]; rev: 1;)'
# Блокировать исходящие пакеты от устройств с NetID с 11.11.11.11.1.1 по 77.77.77.77.1.1:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: NET_ID_SOURCE[11.11.11.11.1.1:77.77.77.77.1.1]; rev: 1;)'
# Блокировать пакеты, отправленные от устройств с NetID с 11.11.11.11.1.1 по 77.77.77.77.1.1 к устройству с NetID 5.99.54.158.1.1:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: NET_ID_SOURCE[11.11.11.11.1.1:77.77.77.77.1.1], NET_ID_TARGET[5.99.54.158.1.1:5.99.54.158.1.1]; rev: 1;)'
AMS Port:
# Блокировать все TCP-пакеты, отправленные с порта 300:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: PORT_SOURCE[300:300]; rev: 1;)'
# Блокировать пакеты, адресованные на порты с 300 до 65535:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: PORT_TARGET[300:65535]; rev: 1;)'
Command Id:
# Блокировать команду ADS Read Device Info (Command ID = 1):
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[1:1]; rev: 1;)'
# Блокировать команду ADS Read (Command ID = 2):
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[2:2]; rev: 1;)'
# Блокировать команду ADS Write (Command ID = 3):
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[3:3]; rev: 1;)'
# Блокировать команду ADS Read State (Command ID = 4):
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[4:4]; rev: 1;)'
# Блокировать команду ADS Write Control (Command ID = 5):
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[5:5]; rev: 1;)'
# Блокировать команду ADS Add Device Notification (Command ID = 6):
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[6:6]; rev: 1;)'
# Блокировать команду ADS Delete Device Notification (Command ID = 7):
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[7:7]; rev: 1;)'
# Блокировать команду ADS Device Notification (Command ID = 8):
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[8:8]; rev: 1;)'
# Блокировать команду ADS Read Write (Command ID = 9):
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[9:9]; rev: 1;)'
# Блокировать любые команды с ID от 1 до 10:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[1:10]; rev: 1;)'
Message Type:
# Блокировать все ADS-запросы:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: REQUEST; rev: 1;)'
# Блокировать все ADS-ответы:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: RESPONSE; rev: 1;)'
Примечание
Нельзя использовать «REQUEST» и «RESPONSE» одновременно в одном правиле, такое правило будет считаться невалидным.
ADS Index:
# Блокировать команду ADS Read, если используется смещение индекса от 5 до 1000:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[2:2], INDEX_OFFSET[5:1000]; rev: 1;)'
# Блокировать команду ADS Write, если указано смещение от 5 до 1000:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[3:3], INDEX_GROUP[5:1000]; rev: 1;)'
# Блокировать команду ADS Add Device Notification, если указано смещение от 5 до 1000:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[6:6], INDEX_OFFSET[5:1000]; rev: 1;)'
# Блокировать команду ADS Read Write, если указана группа индекса от 5 до 1000:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[9:9], INDEX_GROUP[5:1000]; rev: 1;)'
ADS State:
# Блокировать команду ADS Write Control, если состояние ADS находится в диапазоне от 5 до 17:
admin@ngfwos:~$ suricata add-rules file-path ads.rules
text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[5:5], ADS_STATE[5:17]; rev: 1;)'
Transmission mode:
# Блокировать команду ADS Add Device Notification, если используется режим NO TRANS:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[6:6], TRANSMISSION_MODE_NO_TRANS; rev: 1;)'
# Блокировать команду ADS Add Device Notification в режиме циклического опроса клиента:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[6:6], TRANSMISSION_MODE_CLIENT_CYCLE; rev: 1;)'
# Блокировать команду ADS Add Device Notification, если клиент ожидает одно событие:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[6:6], TRANSMISSION_MODE_CLIENT_1_REQ; rev: 1;)'
# Блокировать команду ADS Add Device Notification в режиме циклической рассылки сервера:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[6:6], TRANSMISSION_MODE_SERVER_CYCLE; rev: 1;)'
# Блокировать оманду ADS Add Device Notification, если сервер работает в режиме уведомления по изменению:
admin@ngfwos:~$ suricata add-rules file-path ads.rules text 'drop tcp any any <> any any (ads_ip: COMMAND_ID[6:6], TRANSMISSION_MODE_SERVER_ON_CHA; rev: 1;)'
Поддерживается работа на прикладном или сетевом уровне.
Для анализа и фильтрации сообщений по протоколу Alpha Link доступны следующие параметры сопоставления:
ANY/NOT - универсальное совпадение или его отрицание;
CMD (Command) — значение команды или диапазон значений (CMD = х / CMD [х:у]);
CMD_TYPE (Тип команды) — определённое значение типа команды (CMD_TYPE = х / CMD_TYPE [х:у]);
Примечание
Для обеспечения фильтрации сетевого трафика по протоколу Alpha Link необходимо активировать распознавание пакетов этого протокола с помощью следующей команды в конфигурационном режиме:
set suricata app-layer protocols alphalink enabled yes
По умолчанию обнаружение пакетов протокола Alpha Link в Suricata отключено.
Пример правила:
ANY/NOT:
admin@ngfwos:~$ suricata add-rules file-path alphalink.rules text 'drop tcp any any -> any any (alphalink: ANY; rev: 1;)'
Правило блокирует весь исходящий TCP-трафик, если пакет соответствует условию ANY модуля alphalink.
Команда:
admin@ngfwos:~$ suricata add-rules file-path alphalink.rules text 'drop tcp any any <- any any (alphalink: COUNTERS(0|2|8), CMD [5:15]; rev: 1;)'
Команда добавляет в файл alphalink.rules правило для Suricata, которое блокирует входящий TCP-трафик (от любого источника к локальному хосту), если через модуль alphalink обнаружены COUNTERS со значениями 0, 2 или 8 и значение команды (CMD) находится в диапазоне от 5 до 15.
Тип команды:
admin@ngfwos:~$ suricata add-rules file-path alphalink.rules text 'drop tcp any any <> any any (alphalink: COUNTERS(0|2|8), CMD_TYPE = 5; rev: 1;)'
Данное правило блокирует TCP-трафик в обоих направлениях, если в пакете содержатся указанные значения счётчиков (COUNTERS = 0, 2, 8) и тип команды (CMD_TYPE) равный 5.
AoE (ATA over Ethernet) — сетевой протокол канального уровня, предназначенный для передачи команд ATA (Advanced Technology Attachment) по сети Ethernet. AoE инкапсулирует команды ATA и данные в Ethernet-фреймы, обеспечивая простой и эффективный способ организации блочного доступа к удалённым дискам.
Перечень доступных правил и способ их описания аналогичен применяемому в сигнатурах для протокола ADS.
Примеры правил:
# Правило блокирует IP-пакеты, содержащие трафик протокола AoE с заданными значениями:
admin@ngfwos:~$ suricata add-rules file-path aoe.rules text 'drop ip any any -> any any (aoe: COMMAND_ID[3:3], INDEX_GROUP[1:1]; rev: 1;)'
# Правило срабатывает при наличии в пакете команды EtherCAT CMD[5:5] и любой структуры AoE:
admin@ngfwos:~$ suricata add-rules file-path aoe.rules text 'alert ip any any -> any any (ethercat: CMD[5:5]; aoe: ANY; rev: 1;)'
# Правило срабатывает при выполнении команды read:
admin@ngfwos:~$ suricata add-rules file-path dnp3.rules text 'alert dnp3 any any -> any any (dnp3_func:read; rev: 1;)'
# Правило срабатывает при выполнении команды start_appl:
admin@ngfwos:~$ suricata add-rules file-path dnp3.rules text 'alert dnp3 any any -> any any (dnp3_func:17; rev: 1;)'
Примечание
В рамках одного правила не допускается использование нескольких меток.
Объект — группа и вариация объекта, к которому обращаются.
Примеры правил:
# Правило срабатывает при обращении к объектам группы 2:
admin@ngfwos:~$ suricata add-rules file-path dnp3.rules text 'alert dnp3 any any -> any any (dnp3_obj:2; rev: 1;)'
# Правило срабатывает при обращении к объектам группы 2, вариации 3:
admin@ngfwos:~$ suricata add-rules file-path dnp3.rules text 'alert dnp3 any any -> any any (dnp3_obj:2,3; rev: 1;)'
Таблица «Список внутренних индикаций протокола DNP3»
Hex
Метка
0x8000
device_restart
0x4000
device_trouble
0x2000
local_control
0x1000
need_time
0x0800
class_3_events
0x0400
class_2_events
0x0200
class_1_events
0x0100
all_stations
0x0080
reserved_1
0x0040
reserved_2
0x0020
config_corrupt
0x0010
already_executing
0x0008
event_buffer_overflow
0x0004
parameter_error
0x0002
object_unknown
0x0001
no_func_code_support
Примеры правил:
# Правило срабатывает при перезагрузке устройства:
admin@ngfwos:~$ suricata add-rules file-path dnp3.rules text 'alert dnp3 any any -> any any (dnp3_ind:device_restart; rev: 1;)'
# Правило срабатывает при необходимости синхронизации времени или неизвестной команде:
admin@ngfwos:~$ suricata add-rules file-path dnp3.rules text 'alert dnp3 any any -> any any (dnp3_ind:need_time,no_func_code_support; rev: 1;)'
Контент — содержательная часть пакета в шестнадцатеричном виде.
Для анализа содержательной части пакета используется механизм сопоставления с образцом. Указывается шестнадцатеричный поток данных.
Примеры правил:
# Правило срабатывает при наличии последовательности c6 02 в теле пакета:
admin@ngfwos:~$ suricata add-rules file-path dnp3.rules text 'alert dnp3 any any -> any any (dnp3_data; content:"|c6 02|"; rev: 1;)'
# Правило срабатывает при наличии указанной шестнадцатеричной последовательности:
admin@ngfwos:~$ suricata add-rules file-path dnp3.rules text 'alert dnp3 any any -> any any (dnp3_data; content:"|01 01 01 00 00 00 00 00 00 00|"; rev: 1;)'
Для ENIP (Ethernet/IP) доступны следующие правила:
Фильтрация по любому пакету ENIP/CIP.
Пример правила:
# Правило для обнаружения любого пакета протокола ENIP/CIP:
admin@ngfwos:~$ suricata add-rules file-path enip-cip.rules text 'alert enip any any <> any any (msg: "Any ENIP/CIP packet detected"; rev: 1;)'
Фильтрация по команде ENIP (enip_command).
Каждый пакет ENIP содержит поле Command, определяющее тип выполняемой операции. Значение команды задаётся в диапазоне от «0» до «65535».
Примеры правил:
# Правило срабатывает при обнаружении команды 0x0070 (Send Unit Data):
admin@ngfwos:~$ suricata add-rules file-path enip-cip.rules text 'alert enip any any <> any any (enip_command: 112; rev: 1;)'
# Правило срабатывает при обнаружении команды 0x006F (Send RR Data):
admin@ngfwos:~$ suricata add-rules file-path enip-cip.rules text 'alert enip any any <> any any (enip_command: 111; rev: 1;)'
В протоколе CIP (Common Industrial Protocol) фильтрация возможна по следующим параметрам:
Сервис (cip_service) - определяет тип запроса в протоколе CIP. Возможный диапазон значений - от «0» до «127».
Примеры правил:
# Правило срабатывает при обнаружении сервиса 0x0A (Multiple Service Packet):
admin@ngfwos:~$ suricata add-rules file-path enip-cip.rules text 'alert enip any any <> any any (cip_service: 10; rev: 1;)'
# Правило срабатывает при обнаружении команды сервиса 0x03 (Get Attribute List):
admin@ngfwos:~$ suricata add-rules file-path enip-cip.rules text 'alert enip any any <> any any (cip_service: 3; rev: 1;)'
Класс (cip_class) - используется совместно с сервисом. Возможный диапазон значений - от «1» до «65535». Указывается сразу после сервиса. Фильтрация только по классу без указания сервиса не поддерживается.
Список сервисов поддерживающих фильтрацию по классу:
0x03 (Get Attribute List)
0x04 (Set Attribute List)
0x0E (Get Attribute Single)
0x10 (Set Attribute Single)
Пример правила:
# Правило срабатывает при обнаружении сервиса 0x03 (Get Attribute List) и класса 0xAC:
admin@ngfwos:~$ suricata add-rules file-path enip-cip.rules text 'alert enip any any <> any any (cip_service: 3,172; rev: 1;)'
Атрибут (cip_attribute) - указывается после сервиса и класса. Возможный диапазон значений - от «0» до «65535». Фильтрация только по атрибуту без указания сервиса и класса не поддерживается.
Поддерживаются только следующие сервисы:
0x03 (Get Attribute List)
0x04 (Set Attribute List)
0x0E (Get Attribute Single)
0x10 (Set Attribute Single)
Пример правила:
# Правило срабатывает при обнаружении сервиса 0x03 (Get Attribute List), класса 0xAC и атрибута 0x0005:
admin@ngfwos:~$ suricata add-rules file-path enip-cip.rules text 'alert enip any any <> any any (cip_service: 3,172,5; rev: 1;)'
ANSI сегмент (cip: ANSI:)
Позволяет анализировать содержимое вложенных пакетов CIP. Указывается как строковое значение.
Пример правила:
# Правило срабатывает при обнаружении в трафике EtherNet/IP CIP-сервис 82 и строки "F60" в ANSI-кодировке внутри сообщения:
admin@ngfwos:~$ suricata add-rules file-path enip-cip.rules text 'alert enip any any <> any any (cip_service: 82; cip: ANSI: "F60"; rev: 1;)'
Порт (cip: PORT)
Позволяет фильтровать порты во вложенных пакетах CIP. Поддерживаются операторы сравнения: «=», «!=», «>», «<», а также точное указание диапазона «[value:length]».
В сервисе 0x52 (Unconnected Send) содержится вложенный пакет. Порт обычно находится в заголовке первого пакета, а ANSI-сегмент — во втором. Это необходимо учитывать при анализе структуры пакетов и настройке фильтров.
Пример правила:
# Правило срабатывает при обнаружении пакетов протокола ENIP с CIP-сервисом 0x52 (Unconnected Send), содержащие во вложенном запросе порт, отличный от значения 10:
admin@ngfwos:~$ suricata add-rules file-path enip-cip.rules text 'alert enip any any <> any any (cip_service: 82; cip: PORT != 10; rev: 1;)'
Для одновременной фильтрации пакета по порту и по ANSI-сегменту необходимо использовать два отдельных правила, связанных через механизм флагов состояния. Это связано с тем, что указанные параметры относятся к разным уровням вложенных протоколов и не могут быть проверены в рамках одного правила.
Пример правил:
# Правило устанавливает флаг cip_matreshka при обнаружении порта 9:
admin@ngfwos:~$ suricata add-rules file-path enip-cip.rules text 'alert enip any any <> any any (flowbits: set, cip_matreshka; cip_service: 82; cip: PORT = 9; rev: 1;)'
# Второе правило проверяет наличие ANSI-сегмента "N69" при установленном флаге:
admin@ngfwos:~$ suricata add-rules file-path enip-cip.rules text 'alert enip any any <> any any (flowbits: isset, cip_matreshka; cip_service: 76; cip: ANSI: "N69"; rev: 1;)'
Цепочка правил применяется последовательно: второе правило активируется только при выполнении условия первого.
Возможно одновременно указывать фильтры для протоколов ENIP и CIP, разделяя их точкой с запятой внутри одного правила.
Пример правила:
# Правило фильтрует ENIP команду 0x0070 (Send Unit Data) и CIP сервис 0x03 (Get Attribute List) с классом 0xAC и атрибутом 0x0005:
admin@ngfwos:~$ suricata add-rules file-path enip-cip.rules text 'alert enip any any <> any any (enip_command: 112; cip_service: 3,172,5; rev: 1;)'
Для фильтрации пакетов с использованием протокола EtherCAT могут применяться следующие параметры:
Команда (CMD).
Для реализации фильтрации по значению команды применяется правило типа диапазон.
Пример правил:
# Правило срабатывает при обнаружении пакетов с командой EtherCAT, равной 1:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: CMD[1:1]; rev: 1;)'
# Правило срабатывает при обнаружении пакетов с командой EtherCAT в диапазоне от 1 до 13:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: CMD[1:13]; rev: 1;)'
Логический адрес (ADDR).
Фильтрация по логическому адресу также выполняется с использованием правила типа диапазон.
Пример правил:
# Правило срабатывает при обнаружении пакетов с логическим адресом 65535:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: ADDR[65535:65535]; rev: 1;)'
# Правило срабатывает при обнаружении пакетов с логическим адресом 69632:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: ADDR[69632:69632]; rev: 1;)'
Составной адрес (SLAVE, OFFSET).
Составной адрес представляет собой комбинацию идентификатора устройства (Slave) и смещения (Offset), указывающего на конкретный регистр памяти внутри этого устройства.
Slave — числовой идентификатор, однозначно определяющий устройство в сети EtherCAT.
Пример правил:
# Правило срабатывает при обнаружении пакетов, направленные на устройство с номером Slave = 3:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: SLAVE[3:3]; rev: 1;)'
# Правило срабатывает при обнаружении пакетов, направленные на устройство с номером Slave = 65534:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: SLAVE[65534:65534]; rev: 1;)'
Offset — адрес регистра или области памяти внутри указанного устройства.
Пример правил:
# Правило срабатывает при обнаружении пакетов с обращением к регистру Offset = 304:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: OFFSET[304:304]; rev: 1;)'
# Правило срабатывает при обнаружении пакетов с обращением к регистру Offset = 1282:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: OFFSET[1282:1282]; rev: 1;)'
Значение поля данных (DATA).
Предусмотрена возможность поиска шестнадцатеричного потока в поле данных датаграммы EtherCAT. Область поиска включает данные между заголовком датаграммы и счётчиком WKC.
Таким образом возможно обнаруживать:
данные, передаваемые с использованием логического адреса;
данные, относящиеся к профилям коммуникации (например, AoE, CoE);
содержимое регистров.
Пример правил:
# Правило срабатывает при обнаружении пакетов, содержащие последовательность 08 00 в поле данных:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: DATA:|08 00|; rev: 1;)'
# Правило срабатывает при обнаружении пакетов с данными, соответствующими определённому профилю CoE:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: DATA:|0A 00 03 10 00 03 00 20 2F 12 1C 00 00 00 00 00|; rev: 1;)'
Регистры.
Список поддерживаемых регистров:
0x0120 - управляющий регистр. Фильтрация выполняется с использованием правил типа диапазон и метки.
Пример правил:
# Правило срабатывает при обнаружении обращений к биту CTRL регистра 0x0120 со значением 5:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 120_CTRL[5:5]; rev: 1;)'
# Правило срабатывает при обнаружении установки флага ERROR_ACK регистра 0x0120 в состояние TRUE:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 120_ERROR_ACK_TRUE; rev: 1;)'
# Правило срабатывает при обнаружении сброса флага ID регистра 0x0120 в состояние FALSE:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 120_ID_FALSE; rev: 1;)'
0x0130 - статусный регистр. Фильтрация выполняется с использованием правил типа диапазон и метки.
Пример правил:
# Правило срабатывает при обнаружении обращений к биту STATUS регистра 0x0130 со значением 5:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 130_STATUS[5:5]; rev: 1;)'
# Правило срабатывает при обнаружении установки флага ERROR регистра 0x0130 в состояние TRUE:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 130_ERROR_TRUE; rev: 1;)'
# Правило срабатывает при обнаружении сброса флага ID регистра 0x0130 в состояние FALSE:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 130_ID_FALSE; rev: 1;)'
0x0200 - регистр состояния контроллера. Фильтрация выполняется с использованием правил типа метки.
Пример правил:
# Правило срабатывает при обнаружении указанного <Значение> EtherCAT, связанных с событием LATCH:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 200_LATCH_Значение; rev: 1;)'
# Правило срабатывает при регистрации статуса ESK в пакете EtherCAT с заданным логическим значением:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 200_ESK_STATUS_Значение; rev: 1;)'
# Правило срабатывает при появлении указанного AL-статуса <Значение>:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 200_AL_STATUS_Значение; rev: 1;)'
# Правило срабатывает при оналичии в трафике EtherCAT значения IRQ для указанного SM-модуля с указанным номером <Номер>:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 200_SM_Номер_IRQ_Значение; rev: 1;)'
где:
<Значение> - может принимать значения TRUE или FALSE, в зависимости от состояния флага в поле регистра;
<Номер> - число в диапазоне от «0» до «7».
0x0300 - регистр CRC. Фильтрация выполняется с использованием правил типа диапазон.
Пример правил:
# Правило срабатывает при обнаружении ошибки RX_ERROR канала CRC <Номер> со значением 5:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 300_CRC_Номер_INV_FRAME[5:5]; rev: 1;)'
# Правило срабатывает при обнаружении ошибки INV_FRAME канала CRC <Номер> со значением 5:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 300_CRC_Номер_RX_ERROR[5:5]; rev: 1;)'
где <Номер> - число в диапазоне от «0» до «3».
0x0502 - регистр конфигурации EEPROM. Фильтрация выполняется с использованием правил типа метки.
Пример правил:
# Правило срабатывает при обнаружении установленного уровня разрешения на запись 1 в регистре 0x0502:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 502_WRITE_ACCESS_1_Значение; rev: 1;)'
# Правило срабатывает при обнаружении включения или отключения эмуляции EEPROM через соответствующий флаг регистра 0x0502:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 502_EEPROM_EMUL_Значение; rev: 1;)'
# Правило срабатывает при разрешения доступа к данным размером 8 байт:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 502_8_B_ACCESS_Значение; rev: 1;)'
# Правило срабатывает при обнаружении обращения к адресу, использующему 2-байтовый формат:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 502_2_B_ADDRESS_Значение; rev: 1;)'
# Правило срабатывает при обнаружении попытки чтения из регистра 0x0502:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 502_READ_ACCESS_Значение; rev: 1;)'
# Правило срабатывает при обнаружении второго уровня разрешения на запись данных в регистр:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 502_WRITE_ACCESS_2_Значение; rev: 1;)'
# Правило срабатывает при попытке перезагрузки конфигурации EEPROM:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 502_RELOAD_ACCESS_Значение; rev: 1;)'
# Правило срабатывает при обнаружении наличия ошибки CRC в пакете EtherCAT:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 502_CRC_ERROR_Значение; rev: 1;)'
# Правило срабатывает при возникновении ошибки загрузки данных EEPROM:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 502_LOAD_ERROR_Значение; rev: 1;)'
# Правило срабатывает при обнаружении ошибки выполнения команды в контексте EEPROM:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 502_CMD_ERROR_Значение; rev: 1;)'
# Правило срабатывает при ошибке записи данных в EEPROM:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 502_WRITE_ERROR_Значение; rev: 1;)'
# Правило срабатывает при обнаружении статуса занятости EEPROM в текущем пакете:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'aalert ip any any -> any any (ethercat: 502_BUSY_Значение; rev: 1;)'
где <Значение> - может принимать значения TRUE или FALSE, в зависимости от состояния флага в поле регистра.
0x0504–0x050E - расширенные регистры. Фильтрация выполняется с использованием правил типа диапазон.
Пример правил:
# Правило срабатывает при обращении к регистру 0x0504 с значением поля, равным 5:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 504[5:5]; rev: 1;)'
# Правило срабатывает при обнаружении обращения к регистру 0x0506 с установленным значением поля 5:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 506[5:5]; rev: 1;)'
# Правило срабатывает при обнаружении обращения к регистру 0x0508, если значение соответствует 5:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 508[5:5]; rev: 1;)'
# Правило срабатывает при обнаружении обращения к регистру 0x050A с заданным значением 5 в поле данных:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 50A[5:5]; rev: 1;)'
# Правило срабатывает при обнаружении обращения к регистру 0x050C, где значение равно 5.:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 50C[5:5]; rev: 1;)'
# Правило срабатывает при обнаружении обращения к регистру 0x050E с полем, равным 5:
admin@ngfwos:~$ suricata add-rules file-path ethercat.rules text 'alert ip any any -> any any (ethercat: 50E[5:5]; rev: 1;)'
Для Fanuc FOCAS возможно задать правило обнаружения по следующим типам фильтрации:
ANY/NOT
Используется для задания общего условия срабатывания правила (ANY — любое значение, NOT — исключить указанное значение). Применяется как базовая метка для фильтрации пакетов без детализации содержимого.
Пример правил:
# Правило срабатывает на любой пакет протокола FOCAS:
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: ANY; rev: 1;)'
# Правило срабатывает, если пакет НЕ соответствует протоколу FOCAS:
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: NOT; rev: 1;)'
Направление (REQUEST / RESPONSE)
Фильтрует пакеты по направлению: запрос (REQUEST) или ответ (RESPONSE).
Пример правил:
# Правило срабатывает на все запросы клиента:
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: REQUEST; rev: 1;)'
Фильтруются только запросы: 21 01 (команды), 11 01 (загрузка программы), 15 01 (скачивание программы). Возможность добавления новых значений реализована через модификацию исходного кода.
# Правило срабатывает на все ответы сервера:
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: RESPONSE; rev: 1;)'
Фильтруются только ответы: 21 02 (ответ на команды), 11 02 (подтверждение на загрузку), 15 02 (подтверждение на скачивание). Возможность добавления новых значений реализована через модификацию исходного кода.
Запрос (REQUEST)
Позволяет фильтровать конкретные запросы по их числовому идентификатору, используя правило типа диапазон.
Пример правил:
# Фильтрация запроса 11 01 (загрузка программы):
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: REQUEST[4353:4353]; rev: 1;)'
# Фильтрация запроса 15 01 (скачивание программы):
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: REQUEST[5377:5377]; rev: 1;)'
# Фильтрация запроса 21 01 (команды к ЧПУ):
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: REQUEST[8449:8449]; rev: 1;)'
Ответ (RESPONSE)
Позволяет фильтровать конкретные ответы по их числовому идентификатору, используя правило типа диапазон.
Пример правил:
# Фильтрация ответа 11 02 (подтверждение загрузки программы):
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: RESPONSE[4354:4354]; rev: 1;)'
# Фильтрация ответа 15 02 (подтверждение скачивания программы):
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: RESPONSE[5378:5378]; rev: 1;)'
# Фильтрация ответа 21 02 (ответы на команды от ЧПУ):
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: RESPONSE[8450:8450]; rev: 1;)'
Команда (FUNC)
Позволяет фильтровать пакеты по конкретной команде, используя её числовой идентификатор или строковые параметры, такие как пути к файлам.
Пример правил:
# Фильтрация команды 00 01 00 B3 (список файлов/программ):
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: FUNC[65715:65715]; rev: 1;)'
# Фильтрация команды 00 01 80 01 (чтение регистра):
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: FUNC[98305:98305]; rev: 1;)'
# Фильтрация команды 00 01 00 30 (диагностические данные):
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: GETDIAG_START[918:918], GETDIAG_END[919:919], GETDIAG_AXIS[1:1]; rev: 1;)'
# Фильтрация команды 00 01 00 B3 (список файлов/программ):
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: READDIR:"N://CNC_MEM/USER/TESTS", ARG4[1:1]; rev: 1;)'
# Фильтрация команды 00 01 00 B6 (удалить папку/файл/программу):
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: DELETE:"//CNC_MEM/USER/TESTS/O00000002"; rev: 1;)'
# Фильтрация команды 00 01 80 01 (чтение регистров):
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: READPMC_START[2204:2204], READPMC_END[2205:2205], READPMC_MEMORY_TYPE[9:9], READPMC_DATA_TYPE[1:1]; rev: 1;)'
Аргументы команды (ARG1, ARG2…)
Позволяет фильтровать аргументы команды, используя правила типа диапазон. Доступно до пяти аргументов. Возможно использоваться совместно с фильтром команд.
Пример правил:
# Фильтрация аргумента №N (где N — число от 1 до 5 включительно):
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: ARGN[1000:1000]; rev: 1;)'
# Фильтрация только части аргументов:
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: ARG3[9:9], ARG4[1:1]; rev: 1;)'
# Фильтрация всех 5 аргументов:
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: ARG1[1000:1000], ARG2[1002:1002], ARG3[9:9], ARG4[1:1], ARG5[0:0]; rev: 1;)'
Пример использования правила с командой:
# Фильтрация команды чтения регистров с конкретными аргументами:
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert tcp any any -> any any (focas: FUNC[98305:98305], ARG1[1000:1000], ARG2[1002:1002], ARG3[9:9], ARG4[1:1], ARG5[0:0]; rev: 1;)'
Правило отфильтровывает пакеты с командой 00 01 80 01 (чтение регистров) и указанными аргументами. Для данной команды аргументы означают: ARG1 — Start Address, ARG2 — End Address, ARG3 — Memory Type, ARG4 — Data Type, ARG5 — не используется.
Сообщения протокола GOOSE передаются ниже уровня TCP/IP стека и могут быть проанализированы только в прозрачном режиме системы ARMA Стена.
Для настройки правил обнаружения трафика по протоколу GOOSE (IEC 61850-8-1), доступны следующие типы фильтрации:
ANY/NOT
Используется для задания общего условия срабатывания правила (ANY — любое значение, NOT — исключить указанное значение). Применяется как базовая метка для фильтрации пакетов без детализации содержимого.
Пример правил:
# равило срабатывает на любой пакет протокола GOOSE:
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert ip any any -> any any (goose:ANY; msg:"GOOSE ANY"; sid:1; rev:1;)'
# Правило срабатывает, если пакет НЕ соответствует протоколу GOOSE:
admin@ngfwos:~$ suricata add-rules file-path focas.rules text 'alert ip any any -> any any (goose:NOT; msg:"GOOSE NOT"; rev: 1;)'
При использовании метки NOT, возможны ложные срабатывания из-за особенностей обработки не TCP/IP трафика в Suricata. Метка ANY не вызывает ложных срабатываний.
Идентификатор приложения (APPID)
Фильтрация пакетов по идентификатору приложения (APPID) с использованием правила типа диапазон.
Пример правил:
# Фильтрация по определённому APPID:
admin@ngfwos:~$ suricata add-rules file-path goose.rules text 'alert ip any any -> any any (goose:APPID[1000:1000]; msg:"GOOSE APPID[1000:1000]"; rev: 1;)'
# Фильтрация по всем APPID в пределах указанного диапазона:
admin@ngfwos:~$ suricata add-rules file-path goose.rules text 'alert ip any any -> any any (goose:APPID[:1000]; msg:"GOOSE APPID[:1000]"; rev: 1;)'
Значение поля «Dataset»
Для фильтрации данных по значению поля DATSET применяется правило следующего формата: DATSET «Значение». Значение данного поля должно быть обязательным и содержать не более 150 символов. Оно может включать в себя латинские буквы, пробелы, запятые и другие допустимые символы. Запрещается использование кавычек и непечатных символов.
Пример правил:
# Правило срабатывает при обнаружении GOOSE-сообщения, где поле DATSET равно "D063MLINCTRL/LLN0$DSAUV":
admin@ngfwos:~$ suricata add-rules file-path goose.rules text 'alert ip any any -> any any (goose:DATSET "D063MLINCTRL/LLN0$DSAUV"; msg:"GOOSE DATSET"; rev: 1;)'
# Правило срабатывает при обнаружении GOOSE-сообщения, где поле DATSET равно "D058MPTRCTRL/LLN0$DSAUV":
admin@ngfwos:~$ suricata add-rules file-path goose.rules text 'alert ip any any -> any any (goose:DATSET "D058MPTRCTRL/LLN0$DSAUV"; msg:"GOOSE DATSET"; rev: 1;)'
Значение поля «GoCBRef»
Для фильтрации данных по значению поля GoCBRef применяется правило следующего формата: GOCBREF «Значение». Значение данного поля должно быть обязательным и содержать не более 150 символов.
Пример правил:
# Правило срабатывает при обнаружении GOOSE-сообщения, где поле GOCBREF равно "D063MLINCTRL/LLN0$GO$gcbB":
admin@ngfwos:~$ suricata add-rules file-path goose.rules text 'alert ip any any -> any any (goose:GOCBREF "D063MLINCTRL/LLN0$GO$gcbB"; msg:"GOOSE GOCBREF"; rev: 1;)'
# Правило срабатывает при обнаружении GOOSE-сообщения, где поле GOCBREF равно "D058MPTRCTRL/LLN0$GO$gcbB":
admin@ngfwos:~$ suricata add-rules file-path goose.rules text 'alert ip any any -> any any (goose:GOCBREF "D058MPTRCTRL/LLN0$GO$gcbB"; msg:"GOOSE GOCBREF"; rev: 1;)'
Значение поля «GoID»
Для фильтрации данных по значению поля GOID применяется правило следующего формата: GOID «Значение». Значение данного поля должно быть обязательным и содержать не более 150 символов.
Пример правил:
# Правило срабатывает при обнаружении GOOSE-сообщения, где поле GOID равно "D001ELINCTRL/LLN0$GO$gcbA":
admin@ngfwos:~$ suricata add-rules file-path goose.rules text 'alert ip any any -> any any (goose:GOID "D001ELINCTRL/LLN0$GO$gcbA"; msg:"GOOSE GOID"; rev: 1;)'
# Правило срабатывает при обнаружении GOOSE-сообщения, где поле GOID равно "gcbG":
admin@ngfwos:~$ suricata add-rules file-path goose.rules text 'alert ip any any -> any any (goose:GOID "gcbG"; msg:"GOOSE GOID"; rev: 1;)'
Значение поля «t» - относительно текущего времени (UTC).
Для фильтрации по значению поля «t» относительно текущего времени (UTC) применяется правило следующего формата: CURR_DATE_TIME_DELTA[дельта]. В данном контексте поле «дельта» должно быть заполнено и содержать корректную запись временной разницы. Запись поля «дельта» состоит из двух компонентов: количество секунд (положительное число от 1 до 9 цифр) и количество наносекунд (положительное число из 9 цифр), разделённых точкой, например: 1234.000000001.
Пример правил:
# Правило срабатывает при обнаружении GOOSE-сообщения с временным смещением 1234.000000001:
admin@ngfwos:~$ suricata add-rules file-path goose.rules text 'alert ip any any -> any any (goose:CURR_DATE_TIME_DELTA[1234.000000001]; msg:"goose CURR_DATE_TIME_DELTA"; rev: 1;)'
# Правило срабатывает при обнаружении GOOSE-сообщения с временным смещением 56780.000000001:
admin@ngfwos:~$ suricata add-rules file-path goose.rules text 'alert ip any any -> any any (goose:CURR_DATE_TIME_DELTA[56780.000000001]; msg:"goose CURR_DATE_TIME_DELTA"; rev: 1;)'
Правила срабатывают, если значение поля «t» выходит за пределы указанного интервала или является некорректным.
Значение поля «t» - относительно заданного времени (UTC).
Для фильтрации данных по значению поля «t» относительно заданного времени (UTC) применяется правило следующего вида: YYYYMMDDHHMMSS.SSSSSSSSS_TIME_DELTA [время в указанном формате : дельта]. Поля времени в указанном формате и дельта не могут быть пустыми и должны содержать корректно оформленные значения времени и временной разницы.
Формат записи поля времени включает в себя значение года, месяца, дня, часа, минуты и секунды заданного времени (14 символов), после чего через разделительный знак «.» указывается количество наносекунд (положительное число, состоящее из 9 цифр), например: 20191007120042.237304687.
Формат записи дельты состоит из количества секунд (положительное число, содержащее от 1 до 9 цифр), после которого через разделительный знак «.» указывается количество наносекунд (положительное число, состоящее из 9 цифр), например: 1234.000000001.
Пример правил:
# Правило срабатывает при обнаружении GOOSE-сообщения с меткой времени 20191016142511.595703125 и допуском 0.005 сек:
admin@ngfwos:~$ suricata add-rules file-path goose.rules text 'alert ip any any -> any any (goose:YYYYMMDDHHMMSS_SSSSSSSSS_TIME_DELTA[20191016142511.595703125:0.005000000]; msg:"goose YYYYMMDDHHMMSS_SSSSSSSSS_TIME_DELTA"; rev: 1;)'
# Правило срабатывает при обнаружении GOOSE-сообщения с меткой времени 20190925124044.148437500 и допуском 0.002003 сек:
admin@ngfwos:~$ suricata add-rules file-path goose.rules text 'alert ip any any -> any any (goose:YYYYMMDDHHMMSS_SSSSSSSSS_TIME_DELTA[20190925124044.148437500:0.002003000]; msg:"goose YYYYMMDDHHMMSS_SSSSSSSSS_TIME_DELTA"; rev: 1;)'
# Правило срабатывает при обнаружении GOOSE-сообщения с меткой времени 20190925124044.148437500 и большим допуском 86400.002 сек:
admin@ngfwos:~$ suricata add-rules file-path goose.rules text 'alert ip any any -> any any (goose:YYYYMMDDHHMMSS_SSSSSSSSS_TIME_DELTA[20190925124044.148437500:86400.002000000]; msg:"goose YYYYMMDDHHMMSS_SSSSSSSSS_TIME_DELTA"; rev: 1;)'
Правила срабатывают, если значение поля «t» выходит за пределы указанного интервала или является некорректным.
Для реализации фильтрации сетевых пакетов по значениям определённых полей протокола KRUG используется правило типа диапазон. Поддерживаются следующие поля и диапазоны значений:
Поле «COMMAND» - диапазон значений [0:255].
Пример правила:
# Правило срабатывает при COMMAND = 0:
admin@ngfwos:~$ suricata add-rules file-path krug.rules text 'alert udp any any -> any any (krug_pc_ctr_ip: COMMAND[0:0]; rev: 1;)'
Поле «CMD» - диапазон значений [0:255].
Пример правила:
# Правило срабатывает при CMD = 2:
admin@ngfwos:~$ suricata add-rules file-path krug.rules text 'alert udp any any -> any any (krug_pc_ctr_ip: CMD[2:2]; rev: 1;)'
Поле «PORT» - диапазон значений [0:65535].
Пример правила:
# Правило срабатывает при PORT = 5:
admin@ngfwos:~$ suricata add-rules file-path krug.rules text 'alert udp any any -> any any (krug_pc_ctr_ip: PORT[5:5]; rev: 1;)'
Поле «ACCESS» - диапазон значений [0:65535].
Пример правила:
# Правило срабатывает при ACCESS = 15:
admin@ngfwos:~$ suricata add-rules file-path krug.rules text 'alert udp any any -> any any (krug_pc_ctr_ip: ACCESS[15:15]; rev: 1;)'
Поле «MODE» - диапазон значений [0:65535].
Пример правила:
# Правило срабатывает при MODE = 21:
admin@ngfwos:~$ suricata add-rules file-path krug.rules text 'alert udp any any -> any any (krug_pc_ctr_ip: MODE[21:21]; rev: 1;)'
Поле «ERRCODE» - диапазон значений [0:65535].
Пример правила:
# Правило срабатывает при ERRCODE = 33:
admin@ngfwos:~$ suricata add-rules file-path krug.rules text 'alert udp any any -> any any (krug_pc_ctr_ip: ERRCODE[33:33]; rev: 1;)'
Пример комбинированного правила:
# Правило срабатывает при наличии COMMAND=0 , CMD=2 и ERRCODE=33 в одном пакете:
admin@ngfwos:~$ suricata add-rules file-path krug.rules text 'alert udp any any -> any any (krug_pc_ctr_ip: COMMAND[0:0], CMD[2:2], ERRCODE[33:33];; rev: 1;)'
Сообщения по протоколу OPC UA разделяются по типу сообщения:
«HELLO» – маркер начала передачи данных между клиентом и сервером;
«ACKNOWLEDGE» – ответ на сообщение типа HELLO;
«OPEN» – открытие канала передачи данных с предложенным методом шифрования данных;
«MESSAGE» – передаваемое сообщение;
«CLOSE» – конец сессии.
При выборе «OPEN» появится поле выбора политики безопасности.
При выборе «MESSAGE» появится поле выбора типа запроса.
При выборе «BROWSE» в поле «Тип запроса» появятся поле выбора типа идентификатора узла и поле ввода значения, и поле ввода идентификатора пространства имён.
При выборе «READ» в поле «Тип запроса» появятся поле выбора типа идентификатора узла и поле ввода значения, поле ввода идентификатора пространства имён.
При выборе «WRITE» в поле «Тип запроса» появятся поле ввода идентификатора пространства имён, поле ввода значения, поле выбора типа идентификатора узла и поле выбора типа значений.
При выборе «CALL» в поле «Тип запроса» появятся поле выбора типа идентификатора узла, вызываемого объекта, и поле выбора типа идентификатора узла, вызываемого метода.
Стандарт протокола связи коммуникационных модулей серий Siemens SIMATIC S7-300/400.
Сообщения по протоколу S7comm разделяются по функции:
CPUSERVICE;
SETUPCOMM;
READVAR;
WRITEVAR;
REQUESTDOWNLOAD;
DOWNLOADBLOCK;
DOWNLOADENDED;
STARTUPLOAD;
UPLOAD;
ENDUPLOAD;
PLCCONTROL;
PLCSTOP.
При выборе в поле «Функция» функции «READVAR» необходимо выбрать тип области чтения и поля ввода имени области, типа данных, количества данных и смещения данных.
При выборе в поле «Функция» функции «WRITEVAR» необходимо выбрать тип области чтения и поля ввода имени области, типа данных, количества данных и смещения данных, типа передаваемого значения, количество передаваемых данных, список значений данных.
При выборе в поле «Функция» функции «REQUESTDOWNLOAD» появятся поля выбора типа блока, номера блока и целевой файловой системы.
При выборе в поле «Функция» функции «DOWNLOADBLOCK» появятся поля выбора типа блока, номера блока и целевой файловой системы.
При выборе в поле «Функция» функции «STARTUPLOAD» появятся поля выбора типа блока, номера блока и целевой файловой системы.
При выборе в поле «Функция» функции «PLCCONTROL» появится поле выбора функции управления ПЛК:
«INSE (Активация скачанного блока, параметром выступает имя блока)»;
«DELE (Удаление блока, параметром выступает имя блока)»;
«PPROGRAM (Запуск программы, параметром выступает имя программы)»;
«GARB (Сжатие памяти)»;
«MODU (Копирование RAM в ROM, параметр содержит идентификатор файловой системы A/E/P)»;
Для просмотра всех событий системы 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» представлено в разделе «Логирование» настоящего руководства (см. Просмотр глобального журнала).