# 18.04.2026
Для тех кто не понимает что значит заголовок: «Suricata IPS NFQueue with nDPI» — это значит, что программа suricata работает в режиме IPS с движком NFQueue и поддержкой nDPI. Именно такая сборка потому что:
-
Режим IPS мне нужен для защиты клиентов локальной сети в реальном времени;
-
Движок NFQueue обеспечивает простой выборочный захват трафика и дает возможность работы в режиме IPS на роутере со snat и dnat, т.е. позволяет использовать существующую железку даже если она бюджетная. Не требует дорогих сетевых карт;
-
Использование nDPI очень сильно расширяет возможности по анализу трафика на уровне приложений.
Надо ли это вам? Если вы считаете, что возможностей файрвола для обеспечения безопасности вам маловато, то да, это вам надо.
Традиционные файрволы могут блокировать нежелательный трафик по IP адресам и портам, но они не способны анализировать содержимое пакетов и обнаруживать сложные атаки, которые маскируются под легитимный трафик. Suricata сильно дополняет возможности классического файрвола — она позволяет блокировать данные на более высоком уровне — на уровне приложений. Suricata v.8 может работать в режиме брандмауэра. Данный режим является экспериментальным. Может быть через какое‑то время прекратят его поддержку, как и поддержку cuda. А может быть: «через несколько лет не будет не iptables ни nftables, а будет одна сплошная suricata». Шутка. Конечно же поддержка классического брандмауэра Linux никуда не денется, но вот suricata может занять достойное место среди программ обеспечивающих безопасность (хотя, может быть, уже заняла).
Данная информация предназначена для тех, кто хотел бы получить опыт работы с suricata и попробовать ее возможности на практике. Приведенная конфигурация будет рассчитана на минимальное потребление ресурсов. Установка и настройка будут выполняться на ОС Debian 13 с nftables для текущей стабильной версии suricata 8.0.4.
В этой части будут рассмотрены:
-
Общие сведения о suricata.
-
Требования к железу.
-
Описание режимов работы.
-
Описание, характеристики и возможности nDPI
-
Описание движков.
1. Общие сведения о suricata
Suricata — это высокопроизводительная система обнаружения и предотвращения вторжений в сети, а также система мониторинга сетевой безопасности. Она имеет открытый исходный код и (на 18.04.2026) принадлежит некоммерческому фонду Open Information Security Foundation (OISF), управляемому сообществом. Suricata представляет собой одну из самых мощных систем обнаружения/предотвращения атак, которая позволяет не только обнаруживать известные угрозы, но и создавать собственные правила для защиты от специфических атак.
Suricata может отслеживать статистику сетевых соединений, выявлять необычные паттерны трафика, обнаруживать подозрительную активность на основе эвристических алгоритмов. Это позволяет обнаруживать новые, ранее неизвестные угрозы, для которых еще не созданы сигнатуры. Такие возможности делают suricata не только инструментом для обнаружения известных атак, но и системой для выявления новых угроз. Исходный код suricata распространяется под лицензией GNU General Public License версии 2. Адрес сайта разработчиков: https://suricata.io/
Suricata 8.0.4 поддерживает:
-
многопоточную обработку — используется несколько ядер ЦП для высокоскоростной обработки пакетов, повышая производительность и эффективность.
-
автоматическую дефрагментацию и пересборку пакетов, что позволяет обеспечить корректную обработку потоков, независимо от порядка поступления пакетов.
-
декодирование пакетов: ipv4, ipv6, tcp, udp, icmp, sctp, gre, ethernet, ppp, arp, pppoe, raw, sll, vlan.
-
протоколы туннелирования: Teredo, IP‑IP, IP6-IP4, IP4-IP6, GRE.
-
парсеры для протоколов: bittorrent-dht, dcerpc, dhcp, dnp3, dns, doh2, enip, ftp, http, http2, ike, imap, krb5, ldap, mdns, modbus, mqtt, nfs, ntp, pgsql, pop3, quic, rdp, rfb, sip, smb, smtp, snmp, ssh, telnet, tftp, tls, websocket. Это позволяет оперировать в правилах только типом протокола, без привязки к номеру порта (например, блокировать HTTP трафик на нестандартном порту).
-
возможность обнаружения (на 18.04.2026) 447 протоколов и приложений уровня L7 — за счет подключенной библиотеки nDPI, даже если они зашифрованы или пытаются скрыть свое присутствие.
-
возможность динамической (во время работы) регистрации плагинов с парсерами протоколов, детекторами и компонентами для ведения логов.
-
сохранение трафика в .pcap файл.
-
разбор данных из .pcap файла — применяется для настройки своих правил на срабатывание при определенном инциденте. (Есть сайты, которые хранят данные об произошедших инцидентах в формате .pcap файлов и предоставляют возможность их бесплатного скачивания).
-
выделение файлов из трафика и их идентификация по имени, типу или хэшу, а так же их сохранение для дальнейшего анализа.
-
написание своих скриптов на языке Lua для расширенного анализа трафика и реализации дополнительных возможностей, для которых возможностей предоставленных разработчиками недостаточно.
-
управление через командный socket — позволяет перегружать правила без перезагрузки сервиса, получать статистику для анализа производительности и др.
Каждый пакет, пришедший к suricata разбирается, логируется (насколько подробно — определяется в конфиг‑файле), и если данные в пакете соответствуют какому‑то правилу, то к этому пакету применяется действие, установленное в данном правиле. Т.е. все действия, производимые suricata, выполняются на основе правил. Грамотно составленные правила обеспечивают и хорошую защиту. Некоторые списки правил распространяются свободно, как от компаний так и от частных лиц. Некоторые — на коммерческой основе, например, от касперского. Возможно создание своих собственных правил под свои задачи. Действия, применяемые к данным могут быть: в режиме IDS — alert, pass, rejectboth‑?; в режиме IPS — alert, pass, drop, reject, rejectsrc, rejectdst, rejectboth.
2. Требования к железу
Минимальные требования для движка NFQueue:
CPU: с поддержкой SSE3* и выше, 2 ядра. Набор инструкций SSE3 (Streaming SIMD Extensions 3) поддерживается практически всеми современными процессорами, начиная с моделей 2004–2005 годов выпуска.
Оперативная память: свободной памяти 512МБ — для suricata, evebox, monitorix.
Операционная система: очень желательно современная, чтобы можно было использовать новые версии библиотек и инструментов. Рекомендуемая версия ядра от 5.15, хотя стабильная работа возможна на ядре версии 3.10.
Диск: необходимо примерно 4ГБ свободного места в /usr для сборки и минимум 2ГБ в /var для логов surucata и работы evebox.
Сетевые карты: любые, которые обеспечивают стабильную работу, поскольку способ перенаправления трафика программный.
Объем оперативной памяти, занятой suricata, зависит от количества загруженных правил и от скорости потока данных (чем выше скорость, тем больше размер буферов памяти для его обработки). Нагрузка на CPU так же зависит от количества загруженных правил и от скорости потока данных — чем выше скорость, тем больше данных нужно обрабатывать по списку правил за единицу времени. Свободное место в /var зависит от того, сколько данных и за какой срок вы хотите хранить. Если свободного места в /usr недостаточно для сборки, можете установить suricata из репозитариев (но тогда не будет поддержки nDPI) или собрать ее на другом компьютере.
Минимальные требования указаны для небольшой нагрузки (небольшой офис). У меня на домашнем роутере suricata работала без проблем с 2ГБ памяти, выделенными 2 ядрами и загруженными 49 тыс правилами. Клиентов локальной сети было немного, но и железо совершенно не напрягалось.
Необходимые для suricata ресурсы зависят от того, как вы настроите работу suricata. В отличие от других движков, которые передают в suricata все данные поступающие на сетевой адаптер (начиная от arp-трафика), движок NFQueue позволяет пересылать для анализа только те данные, которые сочтет нужным администратор. Например, рекомендуется исключить из проверки трафик из локальной сети на роутер и обратно для ssh, http и других локальных сервисов. Например, можно весь web-трафик клиентов локальной сети пересылать на прокси и настроить прокси на управление web-трафиком (а это 90%-95% всего трафика). Тогда для анализа останется только транзитный трафик. Это в десятки раз снизит нагрузку на процессор. Например, можно на прокси отправлять не весь web-трафик, а только трафик на те сайты, которым вы заведомо доверяете — mail.ru, yandex.ru, google, vk и т.д.
Если на вашем роутере есть хотя бы 1,5-2ГБ свободной оперативной памяти, и CPU с SSE3, и выше, с 4-мя ядрами, то это вполне подойдет для среднего офиса.
3. Описание режимов работы.
Режимы работы suricata:
NSM — мониторинг безопасности.
IDS — обнаружение вторжений.
IPS — предотвращение вторжений.
Режим NSM (Network Security Monitoring) — это расширенное логирование с глубоким контекстным анализом всего, что происходит внутри соединения, даже если в данных нет ничего вредоносного, например:
-
время; src_addr, src_port, dst_addr, dsp_port.
-
HTTP: URL, User-Agent, Host, статус-коды, cookie, заголовки, тело запроса и ответа.
-
DNS: Запросы и ответы.
-
TLS/SSL: Отпечатки сертификатов (JA3/JA3S), SNI.
-
Файлы: Контрольные суммы (MD5/SHA256) всех файлов, переданных по HTTP, FTP или SMB.
-
Извлечение файлов (File Extraction): suricata может автоматически сохранять подозрительные файлы (например, .exe) из трафика на диск для последующего анализа в песочнице.
-
Полный захват пакетов (Full Packet Capture): suricata может сохранять сырые данные (.pcap) для проведения расследований. Поскольку объем данных очень большой, то, как правило, данные передаются в другие программы, облегчающие их анализ, например, Elasticsearch, Logstash, Kibana.
Зачем нужно сохранять данные, если в них нет ничего вредоносного? В современной безопасности 90% атак не детектируются сигнатурами сразу. NSM позволяет аналитику вернуться назад во времени (“посмотреть в логи”), найти подозрительную сессию и понять, как именно произошло заражение.
Режим IDS (Intrusion Detection System) — это режим работы suricata как “пассивного наблюдателя” в сети. В этом режиме система только обнаруживает угрозы, но не вмешивается в передачу данных. На сайте разработчиков есть упоминание про активный режим IDS. Предположительно в таком режиме suricata может вмешиваться в поток данных, отправив обоим сторонам соединения пакеты побуждающие приложения прекратить передачу данных. Подробного описания данного режима и примеров конфигурации как его настроить нет. Возможно достаточно в правилах заменить действие на ‘rejectboth’. Но лично мне такая блокировка очень сомнительна.
В режиме IDS suricata получает копии пакетов, затем разбирает их, проверяет по базе сигнатур и ищет аномалии. Если найдено совпадение (например, попытка взлома), suricata записывает это в лог. В результате — атака зафиксирована, администратор уведомлен, но пакет дошел до цели. Так же в режиме IDS может выполняться и расширенное логирование с глубоким контекстным анализом, т.е. IDS может выполнять и NSM.
Когда выбирают режим IDS:
-
Высокие скорости: На каналах 40–100 Гбит/с трудно блокировать пакеты без задержек, поэтому там чаще просто “смотрят”.
-
Боязнь ложных срабатываний: Чтобы кривое правило случайно не заблокировало доступ к важному сервису (например, банковскому API).
IDS — это «сигнализация», которая поднимет тревогу, но не закроет дверь перед грабителем.
Режим IPS (Intrusion Prevention System) — это режим «активной защиты», в котором suricata работает как фильтр. В отличие от IDS, она не просто смотрит на трафик, а может уничтожить вредоносный пакет до того, как он попадет к цели.
В режиме IPS suricata настраивается таким образом, чтобы весь трафик проходил через нее. Каждый пакет сверяется с базой правил. Пакет не пройдет дальше, пока suricata не закончит его проверку. Если пакет чист, он летит дальше. Если пакет опасен, suricata его удаляет и, если нужно, обрывает соединение (отправляет TCP RST). В результате атака остановлена, вредоносный код не дошел до сервера или рабочего компьютера.
IPS — это “бронежилет” для вашей сети. Этот режим требует более тщательной настройки правил, чтобы избежать ложных срабатываний, которые могут заблокировать легитимный трафик.
Кроме блокировки трафика так же выполняются оповещения о других обнаруженных угрозах. Т.е. администратор решает, что при совпадении с такими-то правилами трафик будет блокироваться (с выдачей уведомления), а при совпадении с другими правилами будут выдаваться только уведомления. И, конечно же, может выполняться расширенное логирование с глубоким контекстным анализом, т.е. получаем комплексный режим: IPS+IDS+NSM.
Плюсы и минусы IPS:
Плюсы: останавливает эксплойты и вирусы на лету; вредоносный трафик не доходит до конечных узлов; не требует участия админа для отражения атаки.
Минусы: задержки из-за проверки пакетов; ошибка в правиле (False Positive) может “уронить” сайт или сервис; увеличивается нагрузка на процессор.
Главные отличия IDS от IPS:
|
Характеристика |
IDS (Обнаружение) |
IPS (Предотвращение) |
|
Положение в сети: |
сбоку (параллельно) |
в разрыв (последовательно) |
|
Влияние на пакет: |
только чтение |
чтение + блокировка |
|
Нагрузка на сеть: |
0% (не вносит задержек) |
добавляет задержку (Latency) |
|
Риски: |
безопасно для работы сети |
ошибка может заблокировать интернет |
4. Описание, характеристики и возможности nDPI
nDPI (ntop Deep Packet Inspection) — это поддерживаемый ntop набор инструментов для работы с DPI, выпущенный под лицензией LGPL. Он призван расширить оригинальную библиотеку за счет добавления новых протоколов, которые в противном случае доступны только в платной версии OpenDPI. Кроме того, ntop модифицировали nDPI, чтобы он лучше подходил для приложений мониторинга трафика, отключив определенные функции, которые замедляют работу механизма DPI, но не являются необходимыми для мониторинга сетевого трафика. Адрес сайта разработчиков: https://www.ntop.org
nDPI используется для добавления информации о протоколах, обнаруженных на прикладном уровне, независимо от используемого порта. Это означает, что можно как обнаруживать известные протоколы на нестандартных портах (например, обнаруживать HTTP на портах, отличных от 80), так и наоборот (например, обнаруживать трафик Skype на порту 80). Это связано с тем, что в настоящее время концепция “порт = приложение” уже неактуальна.
Помимо определения протокола приложения, nDPI также извлекает и предоставляет соответствующие метаданные, связанные с приложением 7-го уровня, такие как URL-адрес, TLS-сертификат, операционная система и т. д. Кроме того, поскольку тенденция интернет-трафика смещается в сторону зашифрованного контента, часто с использованием TLS/QUIC, nDPI позволяет извлекать метаданные из зашифрованных сообщений, а также классифицировать зашифрованный трафик, реализуя так называемый ETA (анализ зашифрованного трафика).
Основные характеристики nDPI:
-
Обнаружение протоколов приложений 7-го уровня (в v5.0 поддерживается 467 протоколов)
-
Категоризация трафика
-
Выявление рисков, связанных с потоком
-
Расширяемость за счет конфигурационных файлов (хост, BPF, протокол, порт и т. д.).
-
Поддержка ETA (анализ зашифрованного трафика)
-
Поддержка FPC (первая классификация пакетов)
-
Поддержка TLV для сериализации сетевых данных в двоичном формате.
Возможности предоставляемые nDPI:
-
Классификация сетевого трафика: определение приложения или сервиса, стоящего за каждым сетевым потоком (например, Skype, BitTorrent, Facebook, YouTube). Это позволяет создавать собственные приложения без необходимости реализации сложных аналитических возможностей, поскольку они уже предоставляются nDPI.
-
Фильтрация контента и родительский контроль: блокировка доступа к определенным категориям веб-сайтов или приложений — контенту для взрослых, социальных сетей или игровых платформ и др.
-
Выявление необычных моделей трафика, которые могут сигнализировать об атаках, активности вредоносного ПО или неправильной настройке устройств: nDPI способен идентифицировать конкретные “риски” в сетевом трафике. Кроме того, в сочетании с машинным обучением, он может помочь обнаружить угрозы нулевого дня или ранние признаки компрометации путем анализа отклонений в нормальных моделях трафика.
-
Управление качеством обслуживания и пропускной способностью: приоритезация или ограничение трафика в зависимости от типа приложения (например, ограничение скорости потоковых сервисов в рабочее время) — позволяет рационально использовать полосу пропускания или отдавать приоритет VoIP/видеозвонкам перед P2P-трафиком.
-
В системах обнаружения и предотвращения вторжений (IDS/IPS): обнаружение потенциально вредоносной активности в сетевом трафике на основе поведения на уровне приложений. Это позволяет блокировать или сообщать о подозрительных протоколах или некорректно сформированных пакетах, которые могут указывать на эксплойты или утечку данных, а также для дополнения журналов метаданными уровня 7.
Suricata использует библиотеку nDPI для глубокого анализа пакетов и получения дополнительный информации. Это позволяет определять протоколы и приложения (L7 уровень), даже если они зашифрованы или пытаются скрыть свое присутствие. nDPI заглядывает внутрь пакета и понимает, что это http, https, telegram, netflix, bittorrent или zoom, на каких бы портах они ни работали. Поэтому можно написать правило не просто для “трафика на порт 443 и адрес facebook.com”, а конкретно для “трафик приложения Facebook”. nDPI так же умеет извлекать метаданные из TLS-соединений (SNI, сертификаты), чтобы понять, какая программа инициировала связь, даже если данные внутри зашифрованы.
Главные преимущества использования nDPI с suricata:
-
Упрощение правил: достаточно использовать название протокола а не перечислять все адреса и порты.
-
Борьба с маскировкой: находит протоколы (например bittorrent), которые пытаются казаться обычным HTTPS-трафиком.
-
Экономия ресурсов: позволяет быстро “отсеивать” тяжелый доверенный трафик (например, обновления Windows или Netflix), чтобы не тратить на него процессорное время suricata.
-
Упрощение анализа безопасности: позволяет увидеть наличие проблем, если вы обнаружили в сети трафик которого быть не должно.
Использование nDPI превращает suricata из сетевого детектора в мощный анализатор приложений, который понимает реальное содержимое сети, а не только номера портов.
На момент написания статьи возможно определение 447 различных протоколов с помощью nDPI:
1kxun, AccuWeather, Activision, AdobeConnect, ADS_Analytic_Track, AdultContent, AFP, AJP, Alibaba, AliCloud, Amazon, AmazonAlexa, AmazonAWS, AmazonVideo, AmongUs, AMQP, ANSI_C1222, AnyDesk, Apple, AppleiCloud, AppleiTunes, ApplePush, AppleSiri, AppleStore, AppleTVPlus, Armagetron, ATG, AVAST, AVASTSecureDNS, Azure, BACnet, Badoo, BeckhoffADS, BFCP, BFD, BGP, BITCOIN, BitTorrent, BJNP, Blizzard, Bloomberg, Bluesky, Cachefly, CactusVPN, CAPWAP, Cassandra, Ceph, CHECKMK, CIP, CiscoSkinny, CiscoVPN, Citrix, ClickHouse, Cloudflare, CloudflareWarp, CNN, CNP-IP, COAP, CoD_Mobile, collectd, Controller_Area_Network, Corba, CPHA, Crashlytics, Crossfire, CryNetwork, Cybersec, Dailymotion, DataSaver, Dazn, DCERPC, Deezer, DHCP, DHCPV6, Diameter, DICOM, DigitalOcean, DingTalk, DirecTV, Discord, DisneyPlus, DLEP, DNP3, DNS, DNScrypt, Dofus, DoH_DoT, Dota2, DRDA, Dropbox, DTLS, EAQ, eBay, Edgecast, eDonkey, EGP, Elasticsearch, ElectronicArts, EpicGames, ETHEREUM, EthernetGlobalData, EthernetIP, Ether-S-Bus, EtherSIO, Facebook, FacebookMessenger, FacebookVoip, FastCGI, FbookReelStory, FINS, FIX, FLUTE, FortiClient, FTP_CONTROL, FTP_DATA, FTPS, Fuze, GaijinEntertainment, Gearman, GearUP_Booster, GeForceNow, GenshinImpact, Git, Github, GitLab, GMail, Gnutella, Google, GoogleCall, GoogleChat, GoogleClassroom, GoogleCloud, GoogleDocs, GoogleDrive, GoogleMaps, GoogleMeet, GoogleServices, GoTo, GRE, GTP, GTP_C, GTP_PRIME, GTP_U, Guildwars, H323, HalfLife2, HAProxy, HART-IP, HBO, Heroes_of_the_Storm, HiSLIP, HL7, HLS, HotspotShield, HP_VIRTGRP, HSRP, HTTP, HTTP2, HTTP_Connect, HTTP_Proxy, Huawei, HuaweiCloud, Hulu, i3D, IAX, IceCast, iCloudPrivateRelay, ICMP, ICMPV6, IEC60870, IEC62056, IEEE-C37118, IFLIX, IGMP, IHeartRadio, IMAP, IMAPS, IMO, Instagram, IP_in_IP, IPP, IP_PIM, IPSec, iQIYI, IRC, ISO9506-1-MMS, Jabber, JRMI, JSON-RPC, Kafka, KakaoTalk, KakaoTalk_Voice, KCP, Kerberos, Kismet, KNXnet_IP, LagoFast, LastFM, LDAP, LDP, Likee, Line, LineCall, LinkedIn, LISP, Livestream, LLM, LLMNR, LoLWildRift, LotusNotes, Lustre, Mastodon, MDNS, Megaco, Memcached, MerakiCloud, MGCP, Microsoft, Microsoft365, Mikrotik, Mining, Modbus, Monero, MongoDB, Mozilla, MpegDash, MPEG_TS, MQTT, MS_OneDrive, MS-RPCH, MsSQL-TDS, Mullvad, Mumble, Munin, MySQL, Nano, NAT-PMP, Nats, Naver, NestLogSink, NetBIOS, NetEaseGames, NetFlix, NetFlow, Nexon, NFS, Nintendo, NOE, NoMachine, NordVPN, ntop, NTP, Nvidia, OCS, OCSP, OICQ, Ookla, OPC-UA, OpenDNS, OpenFlow, OpenVPN, OpenWire, OperaVPN, Oracle, OSPF, Outlook, Paltalk, Pandora, ParamountPlus, Pastebin, PathofExile, PFCP, PGM, Pinterest, Playstation, PlayStore, Pluralsight, POP3, POPS, PostgreSQL, PPTP, PrivateInternetAccess, PROFINET_IO, Protobuf, ProtonVPN, Psiphon, PTPv2, QQ, QUIC, Radius, Radmin, Raft, RakNet, RDP, Reddit, RESP, RiotGames, RipeAtlas, RMCP, Roblox, Roughtime, RSH, RSYNC, RTCP, RTMP, RTP, RTPS, RTSP, RUTUBE, RX, S7Comm, S7CommPlus, Salesforce, SAP, SCTP, SD-RTN, Service_Location_Protocol, sFlow, Shein, Showtime, Signal, SignalVoip, Sina, SinaWeibo, SIP, SiriusXMRadio, Slack, SMBv1, SMBv23, SMPP, SMTP, SMTPS, Snapchat, SnapchatCall, SNMP, SOAP, SOCKS, Softether, SOMEIP, Sonos, SoundCloud, Source_Engine, Spotify, SRTP, SSDP, SSH, Steam, SteamDatagramRelay, STOMP, STUN, SurfShark, Syncthing, Syslog, Tailscale, Taobao, TargusDataspeed, Teams, TeamsCall, TeamSpeak, TeamViewer, Telegram, TelegramVoip, Telnet, Temu, Tencent, TencentGames, Tencentvideo, Teredo, TeslaServices, TES_Online, TFTP, Threads, Threema, Thrift, Tidal, TikTok, TINC, TiVoConnect, TLS, TocaBoca, Tor, TPLINK_SHP, TRDP, TruPhone, Tumblr, TuneIn, TunnelBear, TuyaLP, Twitch, Twitter, Ubiquity, UBNTAC2, UbuntuONE, UFTP, UltraSurf, UMAS, Usenet, VHUA, Viber, ViberVoip, Vimeo, Vivox, VK, VMware, VNC, VRRP, Vudu, VXLAN, Warcraft3, Waze, WebDAV, Webex, WebSocket, WeChat, WhatsApp, WhatsAppCall, WhatsAppFiles, Whois-DAS, Wikipedia, WindowsUpdate, Windscribe, WireGuard, WorldOfKungFu, WorldOfWarcraft, WSD, Xbox, XDMCP, Xiaomi, Yahoo, Yandex, YandexAlice, YandexCloud, YandexDirect, YandexDisk, YandexMail, YandexMarket, YandexMetrika, YandexMusic, Yojimbo, YouTube, YouTubeUpload, Z3950, Zabbix, Zattoo, ZeroMQ, Zoom, ZUG
5. Описание движков
Движки определяют способ захвата трафика и доступные режимы работы suricata. Они могут работать только на определенной ОС. Скорость обработки трафика движком зависит от режима работы suricata, используемого оборудования и настроек оборудования и самой suricata.
Узнать какие движки поддерживает ваша программа можно с помощью команды:
# suricata —build-info
Например, для suricata установленной из репозитариев Debian:
Сравнительная таблица с указанием поддерживаемой ОС, возможных режимов работы, способа захвата и обеспечиваемой скорости передачи данных для рассмотренных движков:
В качестве примера используемых сетевых карт приведены карты производителя Intel для того чтобы можно было оценить тип используемых карт и их стоимость. Но это вовсе не значит что можно использовать только карты производства Intel.
AF_PACKET — поддерживает оба режима.
Это стандартный, “родной” движок Linux для захвата пакетов и самый популярный способ запуска suricata, так как он встроен в ядро “из коробки” и не требует установки сторонних драйверов или библиотек.
Основные свойства AF_PACKET:
-
Высокая производительность: в современных ядрах (3.0+) используется механизм FANOUT, который позволяет эффективно распределять пакеты между всеми ядрами процессора.
-
Zero-Copy (mmap): пакеты копируются в общую область памяти между ядром и suricata, что снижает нагрузку на CPU.
-
Гибкость: поддерживает аппаратную разгрузку (checksum offload) и работу с VLAN.
-
IDS (Обнаружение): работает как пассивный “слушатель” интерфейса. Это стандарт для систем мониторинга.
-
IPS (Предотвращение): используется в режиме AF_PACKET IPS (Bridge). В этом случае suricata захватывает пакет с одной карты (например, eth0) и пересылает его в другую (eth1). Пересылка пакетов происходит в обход сетевого стека ядра, где работают правила nftables и SNAT. Если пакет должен быть заблокирован, то он просто не копируется во второй интерфейс. Настроить связку “L2-мост + L3-маршрутизация с NAT” на одном физическом сервере через AF_PACKET крайне сложно и нестабильно.
-
Скорость:
-
До 1 Гбит/с: работает идеально на любом современном железе.
-
1–10 Гбит/с: требует тщательной настройки параметров cluster-id и cluster-type. Лучше использовать карты Intel (драйверы i40e, ixgbe), так как они лучше поддерживают многопоточность (RSS), что критично для балансировки AF_PACKET.
-
Выше 10 Гбит/с: обычно упирается в возможности ядра Linux, и тогда переходят на AF_XDP или DPDK.
-
Работает с любыми сетевыми адаптерами, которые видны в Linux и даже с виртуальными адаптерами в облаках.
AF_PACKET — это “золотой стандарт” для suricata на Linux. Если вы не знаете, что выбрать, начинайте с него.
AF_XDP (eXpress Data Path) — лучше всего оптимизирован для режима IDS, но поддерживает и режим IPS.
Используется для высокоскоростного захвата пакетов с минимальными задержками и низкой нагрузкой на процессор. Это современная альтернатива классическим методам (AF_PACKET, PCAP), которая позволяет обрабатывать трафик на скоростях 10 Гбит/с и выше на обычном оборудовании. Требуется версия ядра Linux 4.18 и выше (для полной поддержки функций рекомендуется 5.4+), библиотеки libxdp и libbpf и сетевая карта с поддержкой XDP в драйвере.
Ключевые преимущества AF_XDP:
-
Обход сетевого стека ядра (Kernel Bypass): пакеты передаются из сетевой карты напрямую в память suricata (в пользовательское пространство), минуя тяжеловесные механизмы обработки ядра Linux.
-
Zero-copy: данные не копируются между ядром и приложением, что радикально экономит циклы CPU и пропускную способность памяти.
-
Работа на уровне драйвера: анализ пакета начинается в кратчайшие сроки после его поступления на сетевой интерфейс.
-
IDS (Обнаружение): это “родная” стихия AF_XDP. Он забирает пакеты из сетевой карты на огромной скорости, делает копию для анализа и позволяет системе работать в пассивном режиме. Здесь он работает как сверхбыстрая замена AF_PACKET.
-
IPS (Предотвращение): технически suricata поддерживает режим IPS через AF_XDP (начиная с версии 7.0). В режиме IPS suricata должна работать как “мост” (bridge). Она забирает пакет с одного интерфейса (например, eth0), анализирует его и, если он “чист”, пересылает во второй интерфейс (eth1).
-
Совместимость: позволяет сохранить возможность управления интерфейсом через обычные утилиты (например, ip link), хотя во время работы suricata интерфейс может быть эксклюзивно занят движком.
Для использования рекомендуются, например, сетевые карты Intel: i40e: Серия Intel X710 (10/40 Гбит/с) и XL710; ice: Серия Intel E810 (100 Гбит/с); ixgbe: Серия Intel 82599 / X520 (10 Гбит/с).
DPDK (Data Plane Development Kit) — поддерживает оба режима.
Для максимально быстрой обработки пакетов, который полностью забирает управление сетевой картой у ядра Linux (Kernel Bypass) с главной целью — экстремальная производительность. Требует специфических драйверов (PMD — Poll Mode Drivers).
Основные свойства DPDK:
-
Прямой доступ: suricata общается с сетевой картой напрямую через драйверы пользователя, минуя прерывания ядра и контекстные переключения.
-
Zero-Copy: данные пакета попадают из памяти сетевой карты сразу в анализатор suricata.
-
Скорость: это самый быстрый способ работы suricata, позволяющий обрабатывать десятки и сотни гигабит трафика на одном узле. Карта полностью “исчезает” из системы (вы не увидите её через ifconfig или ip a), и всё управление переходит к suricata.
Для использования рекомендуются, например, сетевые карты Intel: cерия E810 (драйвер ice) — до 100 Гбит/с; серия X710/XL710 (драйвер i40e) — 10/40 Гбит/с (лучший выбор по стабильности); серия 82599 / X520 (драйвер ixgbe) — проверенная классика 10 Гбит/с.
DPDK — выбор для тяжелых магистральных каналов (от 40 Гбит/с) и специализированных программно-аппаратных комплексов.
eBPF (Extended Berkeley Packet Filter) — поддерживает оба режима.
В suricata — это современный способ “умной” фильтрации трафика прямо в ядре Linux, еще до того, как пакеты попадут в саму программу.
Основные свойства eBPF:
-
Главная фишка eBPF — обход (Bypass): Если suricata понимает, что поток (например, YouTube или Netflix) безопасен, она дает команду eBPF-программе в ядре “пропускать этот поток мимо меня”. Это колоссально снижает нагрузку на CPU.
-
Балансировка (Load Balancing): eBPF может очень эффективно распределять пакеты между ядрами процессора (RSS в софте), чтобы suricata работала быстрее.
-
Защита от DDoS: eBPF может отбрасывать пакеты по простым критериям на уровне ядра, не нагружая анализатор suricata.
Работает на любой карте, у которой есть нормальный драйвер. Но для максимальной скорости (режим XDP native) лучше всего подходят те же карты, что и для AF_XDP.
eBPF очень прихотлив к версии ядра и библиотекам (libbpf). Если вы обновите ядро Linux, eBPF-программу для suricata часто приходится пересобирать под новую версию заголовков ядра.
eBPF — это “умный фильтр”, который позволяет suricata не захлебнуться в огромном потоке данных, делегируя простую работу ядру Linux. Используйте eBPF, если у вас Linux и ваша задача — выжать максимум из “железа”, отсекая ненужный трафик на уровне ядра.
XDP (eXpress Data Path) — поддерживает оба режима.
Это “турбо-режим” для работы с пакетами в Linux. Он является частью технологии eBPF и позволяет обрабатывать сетевой трафик на самом раннем этапе — сразу после того, как пакет поступил в драйвер сетевой карты. Главная цель использования XDP — максимальная скорость при минимальных задержках.
Основные свойства XDP:
-
Сверхбыстрый захват: пакеты забираются прямо из драйвера (режим Native) и передаются в suricata (через AF_XDP), минуя почти весь сетевой стек ядра.
-
Аппаратный Drop (IPS): если suricata видит атаку, она дает команду XDP сбросить пакет (XDP_DROP). Это происходит мгновенно, не нагружая процессор обработкой этого пакета в IP-стеке.
-
Bypass (Пропуск): безопасный трафик (например, Netflix) помечается XDP и пролетает через систему, не заходя в suricata для анализа, что экономит ресурсы.
-
IDS (Обнаружение): самый частый вариант. Работает как очень быстрая “слушалка” интерфейса.
-
IPS (Предотвращение): XDP позволяет либо мгновенно пропустить пакет (XDP_PASS), либо мгновенно его уничтожить. Это дает самую низкую задержку (latency) среди всех методов блокировки в Linux.
Для XDP критически важна поддержка Native XDP (на уровне драйвера сетевой карты). Если драйвер не поддерживает XDP, включится режим Generic XDP (эмуляция), который работает медленно.
Считается, что указанные сетевые карты Intel лучше всего подходят для использования с XDP: i40e (серия X710/XL710) — 10/40 Гбит/с — самая стабильная поддержка; ice (серия E810) — 100 Гбит/с; ixgbe (серия X520/82599) — 10 Гбит/с.
Если DPDK полностью забирает карту у системы, то XDP позволяет карте оставаться видимой в Linux (ip a, tcpdump), но при этом дает скорость, близкую к DPDK. XDP — это современный стандарт для высокопроизводительных IPS на Linux.
PF_RING — поддерживает оба режима, но для IPS требует платной лицензии.
Это высокоскоростной движок захвата пакетов от компании ntop, разработанный специально для преодоления ограничений стандартного механизма захвата в Linux (libpcap). Главная цель — линейная скорость обработки трафика.
Основные свойства PF_RING:
-
Ускорение захвата: в отличие от обычного сокета, PF_RING использует кольцевой буфер в памяти, что позволяет suricata забирать пакеты гораздо быстрее.
-
Zero-Copy (режим ZC): пакеты передаются напрямую из сетевой карты в память приложения, минуя копирование в ядре. Это позволяет обрабатывать 10 Гбит/с и выше на одном ядре CPU.
-
Балансировка по ядрам (RSS/VWM): PF_RING эффективно распределяет пакеты между потоками suricata, гарантируя, что части одного соединения всегда попадают на одно и то же ядро.
-
IDS (Обнаружение): это основной сценарий использования. PF_RING ZC считается эталоном для мощных пассивных сенсоров, которые “слушают” зеркалированный трафик.
-
IPS (Предотвращение): поддерживается через режим PF_RING Bridge. В этом случае пакеты проходят сквозь две сетевые карты, и suricata решает, пересылать их дальше или нет. Требует покупки лицензии на режим ZC.
PF_RING может работать с любой картой (режим Non-ZC), но его истинная мощь раскрывается только с драйверами ZC (Zero Copy). Считается, что лучшая поддержка драйверов ZC у сетевых карт Intel: ixgbe: Серия 82599 / X520 (10 Гбит/с); i40e: Серия X710 / XL710 (10/40 Гбит/с); ice: Серия E810 (100 Гбит/с); igb: Серия i350 (1 Гбит/с).
PF_RING — стоит выбирать, если вам нужна стабильность “из коробки”, профессиональная поддержка от ntop и вы готовы заплатить за лицензию ради 10-100 Гбит/с.
NFQueue (Netfilter Queue) — поддерживает оба режима.
Это классический механизм взаимодействия suricata с брандмауэром Linux (iptables/nftables), при котором ядро передает пакеты в пользовательское пространство для вынесения вердикта.
Основные свойства NFQueue:
-
Управление потоком: пакет “замораживается” в очереди ядра, пока suricata его не проверит.
-
Вердикт на лету: после анализа suricata приказывает ядру либо пропустить пакет (ACCEPT), либо уничтожить его (DROP), либо отклонить (REJECT).
-
Гибкая фильтрация: вы можете направить в suricata не весь трафик, а только нужные цепочки (например, только входящий трафик на порт 80).
-
IDS (Обнаружение): на больших скоростях крайне неэффективен из-за огромных накладных расходов на переключение контекста между ядром и программой.
-
IPS (Предотвращение): это основной и единственный смысл использования NFQueue. Через этот движок suricata работает как полноценный Firewall, способный блокировать атаки в реальном времени.
В отличие от специализированных движков (DPDK, XDP, PF_RING ZC), NFQueue — это полностью программный способ захвата данных. Подойдет любая сетевая карта, которая работает в Linux (от встроенных Realtek до серверных Intel). Специальные драйверы не требуются.
Ограничение: Так как каждый пакет должен пройти через сетевой стек ядра и контекстные переключения, производительность упирается в мощность процессора, а не в модель сетевой карты. На скоростях выше 1–2 Гбит/с NFQueue начинает создавать значительные задержки (latency).
NFQueue — это самый простой и совместимый способ запустить IPS, работающий на любом “железе”, но он самый медленный из всех современных методов. Идеален для офисного канала до 1 Гбит/с.
NFLOG — режим IDS.
Позволяет suricata получать копии пакетов напрямую из подсистемы Netfilter (брандмауэра Linux, такого как iptables или nftables), suricata их анализирует и генерирует оповещение, при этом сами пакеты продолжают свое движение по сетевому стеку без задержек.
Основные возможности, которые это дает:
-
Гибкий захват трафика: вместо прослушивания всего интерфейса (как это делает AF_PACKET или PCAP), suricata может обрабатывать только те пакеты, которые вы явно направили ей с помощью правил брандмауэра.
-
Снижение нагрузки: вы можете настроить фильтрацию на уровне ядра так, чтобы в suricata попадал не весь трафик, а только подозрительный или специфический (например, только HTTP или трафик из определенных подсетей), что существенно экономит ресурсы процессора.
-
Поддержка меток (Marking): suricata может считывать метки пакетов, установленные Netfilter, что полезно для сложной маршрутизации и классификации трафика.
NFLOG — это полностью программный способ захвата данных. Подойдет любая сетевая карта, которая работает в Linux
IPFW (IP Firewall) — поддерживает оба режима.
Разработан для FreeBSD. Он выполняет ту же роль, что и NFQUEUE в Linux:
-
Перехват пакетов: с помощью правила divert пакеты извлекаются из стека ядра и передаются в suricata.
-
Контроль трафика: пакет “зависает” в системе, пока suricata не проанализирует его.
-
Вынесение вердикта: suricata возвращает пакет в IPFW с указанием пропустить его дальше или сбросить.
-
IDS (Обнаружение): на больших скоростях крайне неэффективен из-за огромных накладных расходов на переключение контекста между ядром и программой.
-
IPS (Предотвращение): это основное назначение. IPFW используется в suricata исключительно для блокировки атак в реальном времени на FreeBSD.
Как и в случае с NFQUEUE, IPFW — это программный способ захвата. Подойдет любая карта, имеющая драйвер во FreeBSD (Intel, Broadcom, Realtek, Chelsio). Для высоких нагрузок на FreeBSD традиционно рекомендуются карты Intel (драйверы em, igb, ix, ixl), так как их драйверы лучше всего оптимизированы под многопоточность стека FreeBSD. Скорость аналогична NFQUEUE (обычно до 1–2 Гбит/с на хорошем многоядерном процессоре). Ограничение: Основная нагрузка ложится на CPU из-за копирования данных между адресным пространством ядра и пользователя (context switching). IPFW (divert mode) позволяет работать в режиме IPS на роутере с поддержкой snat и dnat.
IPFW — это стандартный способ запустить IPS на FreeBSD (например, в составе pfSense или OPNsense), если вам не нужна экстремальная производительность Netmap.
Netmap — поддерживает оба режима.
Это высокопроизводительный фреймворк для быстрой обработки пакетов, созданный в Университете Пизы. Он является основным выбором для тех, кто хочет выжать максимум из FreeBSD, хотя работает и на Linux. Netmap — это “золотая середина” между обычными сокетами и сложным DPDK.
Netmap обеспечивает:
-
Прямой доступ к кольцам (Rings): suricata получает доступ к буферам сетевой карты напрямую.
-
Zero-copy (внутри Netmap): пакеты передаются между сетевой картой и suricata без лишнего копирования в памяти ядра.
-
Минимальный Overhead: Netmap отключает стандартный сетевой стек для выбранного интерфейса, направляя все ресурсы CPU на обработку трафика в suricata.
-
Netmap уникален тем, что он одинаково хорош для обоих режимов:
-
IDS (Обнаружение): работает как сверхбыстрый захватчик (аналог AF_XDP в Linux). Вы просто “слушаете” трафик на огромной скорости.
-
IPS (Предотвращение): это самый популярный режим для Netmap. Он создает “программный мост” (Inline Bridge) между двумя интерфейсами или между интерфейсом и операционной системой. Пакеты пролетают сквозь suricata с минимальной задержкой, и она может их блокировать.
-
Netmap требует поддержки со стороны драйвера сетевой карты (Netmap-aware drivers) и переводит интерфейс в специальный режим (он “исчезает” для обычных утилит ОС). В Linux для использования netmap необходимо собирать модуль ядра netmap и suricata из исходников. Для максимальной производительности netmap в Linux требуются патченные драйверы сетевых карт.
Рекомендуемые сетевые карты от Intel (лучшая поддержка): em/igb: 1 Гбит/с (i350 и др.); ix/ixl: 10/40 Гбит/с (X520, X540, X710) — это эталонные карты для Netmap.
Если вы используете OPNsense, pfSense или чистую FreeBSD и хотите запустить IPS на скорости 10 Гбит/с — Netmap ваш единственный и лучший выбор.
DAG (Data Acquisition Generation) — режим IDS.
Это специализированный интерфейс для работы с профессиональными картами захвата трафика от компании Endace. “Тяжелая артиллерия” в мире мониторинга сетей. Карты DAG — это не обычные сетевые адаптеры, а высокоточные приборы.
Движок DAG позволяет suricata:
-
Гарантированный захват (Zero Loss): карты проектируются так, чтобы не терять ни одного пакета даже на скоростях 100 Гбит/с при минимальном размере кадра (64 байта).
-
Аппаратные метки времени (Hardware Timestamping): карта ставит метку времени на каждый пакет с наносекундной точностью в момент его поступления в порт. Это критично для корректной сборки сессий в suricata.
-
Снятие нагрузки (Offload): карта сама выполняет фильтрацию, классификацию и распределение трафика по потокам (Load Balancing) еще до того, как пакет попадет в процессор сервера.
-
IDS (Обнаружение): это основной и практически единственный сценарий.
-
IPS (Предотвращение): технически некоторые карты поддерживают передачу, но в suricata движок DAG почти всегда используется в режиме IDS для глубокого анализа магистральных каналов.
Нужны только специализированные карты производства Endace. Серия EndaceMeasurement Cards (DAG). Модели варьируются от 1 Гбит/с до 100 Гбит/с (например, DAG 10X, DAG 100).
Движок DAG выбирают крупные телеком-операторы и государственные структуры, которым нужно анализировать трафик на скоростях 40–100 Гбит/с с гарантией 100% точности данных.
Napatech — поддерживает оба режима.
Это поддержка специализированных интеллектуальных сетевых адаптеров (SmartNIC), которые полностью берут на себя первичную обработку трафика, освобождая CPU сервера для глубокого анализа (DPI). Решение для Enterprise-сегмента, когда обычные сетевые карты (Intel/Mellanox) перестают справляться с нагрузкой.
Движок Napatech обеспечивает:
-
Hardware Offload: карта сама собирает фрагментированные пакеты и распределяет потоки (flows) по ядрам процессора.
-
Zero Packet Loss: гарантированная передача 100% пакетов в suricata на скоростях до 200 Гбит/с.
-
Точные метки времени: наносекундная точность аппаратных таймстемпов, что критично для анализа сетевых задержек.
-
IDS (Обнаружение): основной сценарий. Карта работает в режиме пассивного захвата через TAP или SPAN. Благодаря глубокой интеграции, suricata может обрабатывать огромные объемы данных без потерь.
-
IPS (Предотвращение): поддерживается (режим Inline). Пакеты проходят через карту, и suricata подает команду на их пропуск или блокировку. Это работает намного быстрее любого программного решения, так как коммутация пакетов происходит внутри логики карты (FPGA).
Нужны только карты производства Napatech. Это не обычные NIC, а устройства на базе FPGA: серия NT: Модели вроде NT40, NT100, NT200. Скорости: От 10 до 200 Гбит/с (на одну карту с несколькими портами). Драйверы: Требуется установка проприетарного ПО Napatech Software Suite.
Napatech — это профессиональное решение для ЦОД и крупных корпораций, где требуется анализ трафика выше 40 Гбит/с с аппаратной гарантией точности.
WinDivert (Windows Packet Divert) — поддерживает оба режима.
Это специализированный драйвер для ОС Windows, который позволяет перехватывать, анализировать и модифицировать сетевые пакеты в пользовательском пространстве. Основной способ заставить suricata работать в режиме активной защиты на платформе Windows. Выполняет роль “моста” между сетевым стеком Windows и suricata.
Движок WinDivert обеспечивает:
-
Перехват трафика: пакеты извлекаются из стека на уровне ядра и передаются в suricata.
-
Модификацию и фильтрацию: suricata может изменять содержимое пакета или блокировать его до того, как он уйдет в сеть или будет обработан приложением.
-
Программную реализацию: не требует специальных функций от сетевой карты, так как работает на уровне драйвера Windows (WFP — Windows Filtering Platform).
-
IDS (Обнаружение): технически возможен, но для пассивного режима в Windows чаще используют Npcap, так как он создает меньше накладных расходов при простом копировании трафика.
-
IPS (Предотвращение): это главное назначение WinDivert в suricata. Пакет физически задерживается драйвером, пока suricata не вынесет вердикт. Это единственный надежный способ реализовать встроенную блокировку (Inline) на Windows-сервере.
WinDivert — это чисто программное решение. Работает с любыми сетевыми адаптерами (Ethernet, Wi-Fi, виртуальные адаптеры), для которых есть драйвер в Windows. Отлично работает внутри виртуальных машин (Hyper-V, VMware, VirtualBox). Скорость ограничена мощностью CPU и производительностью сетевого стека Windows. На скоростях выше 1 Гбит/с могут наблюдаться существенные задержки и нагрузка на процессор. Вы можете настроить WinDivert так, чтобы он перехватывал только определенный трафик (например, tcp.DstPort == 80), используя синтаксис фильтров WinDivert.
WinDivert — это стандартный и практически единственный способ запустить IPS на Windows.
Npcap — режим IDS.
Это современная библиотека для захвата и отправки пакетов в ОС Windows, пришедшая на смену устаревшему WinPcap. Она основана на архитектуре NDIS 6 и является стандартом для таких инструментов, как Wireshark и Nmap. Основной способ “научить” suricata видеть сетевой трафик в среде Windows.
Движок Npcap обеспечивает:
-
Захват пакетов (Sniffing): Npcap копирует пакеты из сетевого стека и передает их в suricata для анализа.
-
Поддержку петлевого интерфейса (Loopback): позволяет suricata видеть трафик между приложениями внутри одного и того же Windows-хоста (127.0.0.1), чего не умел старый WinPcap.
-
Сбор данных из разных уровней: Npcap умеет собирать пакеты до того, как их изменит брандмауэр Windows.
-
IDS (Обнаружение): это основной режим. Npcap работает как пассивный “слушатель”. Он делает копию трафика, не задерживая оригинал. Это идеальный выбор для мониторинга сети на Windows.
-
IPS (Предотвращение): Не поддерживает.
Npcap — это программный драйвер фильтрации (NDIS Filter Driver), поэтому он максимально универсален. Работает со всеми сетевыми адаптерами, поддерживаемыми Windows (Ethernet, Wi-Fi, 4G/5G модемы). Отлично видит трафик VPN-туннелей и виртуальных коммутаторов (Hyper-V). Производительность сильно зависит от мощности CPU.
Комфортная работа возможна на скоростях до 1 Гбит/с. На 10 Гбит/с начнутся огромные потери пакетов.
Важный нюанс — лицензирование: Npcap Free Edition имеет ограничения — можно устанавливать максимум на 5 компьютеров в организации. Для коммерческого использования в больших сетях требуется покупка Npcap OEM.
Npcap — это стандартный «движок по умолчанию» для запуска suricata IDS на Windows.
ссылка на оригинал статьи https://habr.com/ru/articles/1027512/