惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
P
Proofpoint News Feed
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
博客园 - Franky
V
V2EX
爱范儿
爱范儿
J
Java Code Geeks
小众软件
小众软件
Last Week in AI
Last Week in AI
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
酷 壳 – CoolShell
酷 壳 – CoolShell
The Register - Security
The Register - Security
GbyAI
GbyAI
Vercel News
Vercel News
Y
Y Combinator Blog
腾讯CDC
F
Fortinet All Blogs
I
InfoQ
N
Netflix TechBlog - Medium
B
Blog RSS Feed
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
量子位
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
Scott Helme
Scott Helme
T
Tor Project blog
U
Unit 42
Google Online Security Blog
Google Online Security Blog
PCI Perspectives
PCI Perspectives
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
D
Darknet – Hacking Tools, Hacker News & Cyber Security
aimingoo的专栏
aimingoo的专栏
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Stack Overflow Blog
Stack Overflow Blog
Security Archives - TechRepublic
Security Archives - TechRepublic

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Suricata IPS NFQueue with nDPI. Часть I
Gandalf_the_ · 2026-04-24 · via Все публикации подряд на Хабре

# 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.

В этой части будут рассмотрены:

  1. Общие сведения о suricata.

  2. Требования к железу.

  3. Описание режимов работы.

  4. Описание, характеристики и возможности nDPI

  5. Описание движков.

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:

рис.1 Список движков suricata установленной из репозитариев.

рис.1 Список движков suricata установленной из репозитариев.

Сравнительная таблица с указанием поддерживаемой ОС, возможных режимов работы, способа захвата и обеспечиваемой скорости передачи данных для рассмотренных движков:

Рис. 2. Сравнительная таблица используемых в suricata движков.

Рис. 2. Сравнительная таблица используемых в suricata движков.

В качестве примера используемых сетевых карт приведены карты производителя 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.