Системы обнаружения атак
Suricata IDS
Работа №2
NFQueue
Общие сведения
Общие сведения. Режим работы Repeat
Общие сведения. Режим работы accept
Общие сведения. Режим работы route
Общие сведения
IPTables
IPTables
IPTables
IPTables
IPTables
NFTables
Дополнительные возможности
Дополнительные возможности
AF_PACKET
AF_PACKET режим IPS
AF_PACKET режим IPS
AF_PACKET режим IPS
AF_PACKET режим IPS
AF_PACKET режим IPS
AF_PACKET режим IPS
AF_PACKET запуск
AF_PACKET запуск
AF_PACKET дополнительно
Задание к работе – практическая часть (допуск)
Задание к работе – теоретическая часть (защита)
Спасибо за внимание!

Системы обнаружения атак (NFQueue и AF_PACKET в Suricata)

1. Системы обнаружения атак

Сорокин Александр Владимирович
Системы обнаружения атак, 2025
1

2. Suricata IDS

Системы обнаружения атак, 2025
2

3. Работа №2

Системы обнаружения атак, 2025
3

4. NFQueue

Системы обнаружения атак, 2025
4

5. Общие сведения

Пакет приходит в iptables и проходит через правила, пока не встречает
NFQUEUE правило. Можно промаркировать пакет перед этим.
Далее пакет обрабатывается правилами Suricata и в зависимости от
режима отбрасывается, принимается (для accept) или маркируется (для
repeat).
После отработки NFQUEUE пакет уходит в iptables, где может быть опять
промаркирован, отброшен, принят, отправлен на пересмотр в NFQUEUE
или отправлен в начало правил iptables
Системы обнаружения атак, 2025
5

6. Общие сведения. Режим работы Repeat

- repeat - Suricata помечает
пакет, а правила iptables
выносят
дальнейший
вердикт
Системы обнаружения атак, 2025
6

7. Общие сведения. Режим работы accept

accept - Suricata сама
решает, что делать с
пакетом, дальше в iptables
пакет не попадает
Системы обнаружения атак, 2025
7

8. Общие сведения. Режим работы route

- route - передаем пакет в
другие
очереди,
например,
для
взаимодействия c другими
движками
обработки
событий
Системы обнаружения атак, 2025
8

9. Общие сведения

Чтобы проверить, включен ли NFQ в вашей сборке Suricata, введите
следующую команду:
suricata --build-info
Чтобы запустить Suricata в режиме NFQ, вы должны использовать ключ -q.
Строки конфигурационного файла, задающие настройку маски для
обрабатываемых пакетов:
nfq:
repeat-mark: 1
repeat-mask: 1
Системы обнаружения атак, 2025
9

10. IPTables

Прежде всего, важно знать, какой трафик вы хотели бы отслеживать. Есть два варианта:
1.
Трафик, который проходит через ваш компьютер
2.
Трафик, генерируемый вашим компьютером
Если Suricata работает на шлюзе и предназначен для защиты компьютеров за этим шлюзом, вы имеете дело с первым
сценарием: forward_ing.
Если Suricata должна защитить компьютер, на котором он работает, вы имеете дело со вторым сценарием.
Эти два способа использования Suricata также можно объединять.
Раздел руководства:
https://docs.suricata.io/en/latest/setting-up-ipsinline-for-linux.html
Системы обнаружения атак, 2025
10

11. IPTables

Если Suricata работает на шлюзе и предназначен для защиты компьютеров за этим шлюзом, вы имеете дело с первым
сценарием.
Для того чтобы анализировать весь входящий трафик необходимо прописать следующую команду (для сценария шлюза):
sudo iptables -I FORWARD -j NFQUEUE
Системы обнаружения атак, 2025
11

12. IPTables

Если Suricata должна защитить компьютер, на котором он работает, вы имеете дело со вторым сценарием.
Для анализа всего входящего и исходящего трафика(можно указать номер в очереди, по умолчанию будет 0):
sudo iptables -I INPUT -j NFQUEUE
sudo iptables -I OUTPUT -j NFQUEUE
Системы обнаружения атак, 2025
12

13. IPTables

Чтобы узнать, правильно ли вы установили правила iptables, убедитесь, что Suricata запущен, и введите:
sudo iptables -vnL
Если вы остановите Suricata и воспользуетесь интернетом, трафик не пройдет. Чтобы интернет работал правильно,
сначала удалите все правила iptables.
Чтобы стереть все правила iptables, введите:
sudo iptables -F
Системы обнаружения атак, 2025
13

14. IPTables

Также IPTables позволяет указать протоколы ключ -p:
sudo iptables -I INPUT -p tcp -j NFQUEUE
sudo iptables -I OUTPUT -p tcp -j NFQUEUE
И порты ключами --sport и --dport
sudo iptables -I INPUT -p tcp --sport 80 -j NFQUEUE
sudo iptables -I OUTPUT -p tcp --dport 80 -j NFQUEUE
Системы обнаружения атак, 2025
14

15. NFTables

Конфигурация NFtables проста и позволяет смешивать правила брандмауэра с IPS. Концепция
заключается в создании специальной цепочки для IPS, которая будет оцениваться после правила
брандмауэра. Если ваша основная таблица называется filter, ее можно создать следующим образом:
nft> add chain filter IPS { type filter hook forward priority 10;}
Чтобы отправить все перенаправленные пакеты в Suricata, можно использовать
nft> add rule filter IPS queue
Делать это только для пакетов, которыми обмениваются eth0 и eth1
nft> add rule filter IPS iif eth0 oif eth1 queue
nft> add rule filter IPS iif eth1 oif eth0 queue
Системы обнаружения атак, 2025
15

16. Дополнительные возможности

NFQueue механизм поддерживает некоторые интересные варианты. Там будет показана конфигурация
nftables, но функции также доступны в iptables.
Полный синтаксис механизма очереди выглядит следующим образом:
nft add rule filter IPS queue num 3-5 options fanout,bypass
Это правило отправляет совпадающие пакеты в 3 очереди с балансировкой нагрузки, начиная с 3 и
заканчивая 5. Чтобы получить пакеты в Suricata с помощью этой настройки, вам нужно указать несколько
очередей в командной строке:
suricata -q 3 -q 4 -q 5
Системы обнаружения атак, 2025
16

17. Дополнительные возможности

fanout и bypass- это два доступных варианта:
fanout: При использовании вместе с балансировкой нагрузки это будет использовать идентификатор процессора (CPU) вместо
хэша соединения в качестве индекса для сопоставления пакетов с очередями. Идея заключается в том, что вы можете
повысить производительность, если на процессор есть одна очередь. Для этого требуется указать общее количество
очередей, превосходящих 1.
bypass: По умолчанию, если ни одна программа пользовательского пространства не прослушивает очередь Netfilter, то все
пакеты, которые должны быть поставлены в очередь, отбрасываются. При использовании этой опции правило очереди ведет
себя как ACCEPT, если программа не прослушивается, и пакет перейдет к следующей таблице.
Опция обхода может быть использована, чтобы избежать простоя канала, когда Suricata не запущена, но это также означает, что
функция блокировки не будет присутствовать.
Системы обнаружения атак, 2025
17

18. AF_PACKET

Системы обнаружения атак, 2025
18

19. AF_PACKET режим IPS

Начиная с версии 1.4, Suricata умеет работать в
качестве IPS, используя zero-copy режим системы
AF_PACKET, но с некоторыми ограничениями.
Системы обнаружения атак, 2025
19

20. AF_PACKET режим IPS

Метод захвата через AF_PACKET поддерживает
работу в режиме IPS, все что нужно для его
использования - подключенные интерфейсы,
SURICATA позаботится о копировании пакетов с
одного интерфейса на другой. Не нужно настраивать
ни iptables, ни nftables.
Для работы в этом режиме необходимо задать два
интерфейса через переменные внутри конфигурации
AF_PACKET, пример между eth0 и eth1 справа
(пишем в файл конфигурации). Интерфейс eth0 в
таком случае будет копировать все полученные
пакеты в eth1 из-за переменных конфигурации
copy-*, аналогичные действия будет выполнять
eth1, имея ту же конфигурацию.
Системы обнаружения атак, 2025
af-packet:
- interface: eth0
threads: 1
defrag: no
cluster-type: cluster_flow
cluster-id: 98
copy-mode: ips
copy-iface: eth1
buffer-size: 64535
use-mmap: yes
- interface: eth1
threads: 1
cluster-id: 97
defrag: no
cluster-type: cluster_flow
copy-mode: ips
copy-iface: eth0
buffer-size: 64535
use-mmap: yes
20

21. AF_PACKET режим IPS

Важные моменты при использовании данного режима:
• Реализация режима зависит от режим zero-copy. Таким образом,
обязательно установить значение use-mmap: yes для обоих
интерфейсов.
• Максимальная единица передачи (MTU) должна быть одинакова для
обоих интерфейсов: копирование между интерфейсами прямое, если
размер пакета оказывается больше, чем MTU получателя, то такой
пакет сбрасывается ядром.
• Дефрагментация пакетов должна осуществляться (или нет) на обоих
интерфейсах (defrag: yes|no).
Дополнительный источник:
https://home.regit.org/2012/09/newaf_packet-ips-mode-in-suricata/
Системы обнаружения атак, 2025
21

22. AF_PACKET режим IPS

Важные моменты при использовании данного режима:
• Задать значения переменных copy-iface, cluster-id,
interface различными для двух интерфейсов во избежание
конфликта.
• Чтобы перевести SURICATA в режим блокировки (пакетов),
достаточно установить значение stream.inline: auto или
stream.inline: yes.
• Переменная copy-mode может принимать значения ips (ключевое
слово drop учитывается, и соответствующие пакеты отбрасываются) и
tap (отбрасываний не происходит, SURICATA работает в режиме
моста) - значения могут быть различными для используемых
интерфейсов.
Дополнительный источник:
https://home.regit.org/2012/09/newaf_packet-ips-mode-in-suricata/
Системы обнаружения атак, 2025
22

23. AF_PACKET режим IPS

Данный режим поддерживает использование нескольких потоков,
однако значение переменной threads должно совпадать на
интерфейсах: это ограничение связано с тем, что соединение
осуществляется на уровне сокетов - каждый пакет полученный
сокетом пересылается на соединенный сокет, слушающий
подключенный интерфейс.
Системы обнаружения атак, 2025
23

24. AF_PACKET режим IPS

Чтобы добиться максимальной производительности, SURICATA
должна работать в режиме –runmode=workers. Фактически это
означает, что существует несколько потоков, каждый из которых
запускает полный конвейер пакетов и каждый получает пакеты из
выбранного метода захвата. То есть, мы полагаемся на метод захвата
для распределения пакетов по различным потокам. Одним из
важнейших аспектов этого является то, что SURICATA должна
получить обе стороны потока в одном потоке в правильном порядке.
Метод захват AF_PACKET использует для этих целей перенную
cluster-type. Значение по умолчанию cluster_flow,
указывает методу захвата хешировать по потоку. Этот хэш
симметричен.
Системы обнаружения атак, 2025
24

25. AF_PACKET запуск

suricata -c /etc/suricata/suricata.yaml --af-packet
Для работы в режиме
AF_PACKET в опциях запуска
необходимо указать --afpacket[=<device>], что
включит захват трафика с
использованием AF_PACKET
на Linux. Если устройство
(интерфейс) не задано,
используется список
устройств из секции af-packet
в файле suricata.yaml.
Системы обнаружения атак, 2025
25

26. AF_PACKET запуск

Одновременно можно использовать обычный IDS
интерфейс, например, eth3 может быть добавлен в
секцию af-packet конфигурационного файла и
использоваться как простой интерфейс (use-mmap: no).
Системы обнаружения атак, 2025
26

27. AF_PACKET дополнительно

Файл stats.log содержит полезную информацию в
capture.kernel_packets и capture.kernel_drops. Их
значение разнится в зависимости от режима захвата, в случае
AF_PACKET kernel_packets это число корректно отправленных
пакетов, kernel_drops - число отброшенных пакетов.
IPS с примерами на русском:
https://habr.com/ru/post/192884/
stats.log
Системы обнаружения атак, 2025
27

28. Задание к работе – практическая часть (допуск)

● Настроить Suricata для работы в режиме NFQueue
● Настроить Suricata для работы в режиме AF_PACKET
● Продемонстрировать манипуляции с наборами правил
● Продемонстрировать запуск Suricata в режиме NFQueue с различными опциями
● Продемонстрировать запуск Suricata в режиме AF_PACKET с различными
опциями
Системы обнаружения атак, 2025
28

29. Задание к работе – теоретическая часть (защита)

● Принципы работы режимов NFQueue и AF_PACKET
● Особенности настройки Suricata для работы в указанных режимах
● Параметры запуска (ключи) Suricata в указанных режимах
Системы обнаружения атак, 2025
29

30. Спасибо за внимание!

Системы обнаружения атак, 2025
30
English     Русский Правила