nDPI
nDPI (от англ. ntop Deep Packet Inspection) — это программная библиотека с открытым исходным кодом для глубокого анализа пакетов (DPI), предназначенная для идентификации сетевых протоколов и приложений в трафике компьютерных сетей. Разрабатывается и поддерживается командой ntop, известной также по проекту ntopng — сетевому монитору с веб-интерфейсом. nDPI используется для классификации трафика в реальном времени, что позволяет сетевым администраторам, провайдерам и разработчикам анализировать, какие приложения (например, веб-браузеры, мессенджеры, потоковые сервисы, торренты) генерируют сетевой поток, без необходимости вскрытия зашифрованного содержимого.
История
Проект nDPI был создан в 2011 году как ответвление (форк) от более старой библиотеки OpenDPI, которая, в свою очередь, была основана на технологии, разработанной компанией ipoque (позднее приобретённой EMC). OpenDPI имела ограниченную лицензию и не поддерживалась, что побудило команду ntop начать разработку собственной версии с более открытой моделью распространения. Первый публичный релиз nDPI состоялся в 2012 году, и с тех пор библиотека активно развивается: добавляются новые протоколы, улучшается производительность и точность детектирования.
Ключевым этапом стало внедрение поддержки анализа зашифрованного трафика (в частности, TLS/SSL) в середине 2010-х годов. Поскольку всё больше приложений начали шифровать свои данные, nDPI перешёл от простого поиска сигнатур в полезной нагрузке к методам, основанным на статистике потоков, размерах пакетов, временных характеристиках и метаданных установки соединения. В 2020-х годах nDPI стал одним из наиболее популярных DPI-движков с открытым кодом, используемым как в академических исследованиях, так и в коммерческих продуктах.
Архитектура и принцип работы
nDPI реализован на языке C и предоставляет C-интерфейс (API) для интеграции в другие программы. Библиотека не требует специального аппаратного обеспечения и может работать на стандартных серверах под управлением Linux, FreeBSD, macOS и Windows. Основные компоненты nDPI:
- Ядро (core engine): отвечает за обработку пакетов, поддержание состояния потоков и принятие решений о классификации.
- Модуль протоколов: содержит набор правил (сигнатур) для идентификации более 300 протоколов и приложений, включая HTTP, HTTPS, DNS, SSH, BitTorrent, Skype, Zoom, Netflix, YouTube, Telegram, WhatsApp (продукт Meta, признанной экстремистской и запрещённой в РФ) и многие другие.
- Модуль статистики: собирает метрики по каждому потоку (объём трафика, количество пакетов, временные метки, IP-адреса, порты).
- Модуль обнаружения аномалий: может выявлять подозрительные паттерны, например, сканирование портов, DoS-атаки или попытки обхода DPI.
Методы идентификации
nDPI использует комбинацию нескольких методов для классификации трафика:
- Сигнатурный анализ: поиск характерных строк или байтовых последовательностей в незашифрованной части пакета (например, в HTTP-запросе или в начале TLS-рукопожатия).
- Портовый анализ: проверка номеров портов источника и назначения (устаревающий метод, так как многие приложения используют динамические порты).
- Поведенческий анализ: оценка характеристик потока — размеров пакетов, интервалов между ними, направления передачи данных. Например, для VoIP-трафика характерны небольшие пакеты с постоянной частотой.
- Анализ TLS-рукопожатия: извлечение имени сервера (SNI) из сертификата или расширения ClientHello, что позволяет определить, к какому сервису обращается клиент, даже при шифровании.
- Статистическое моделирование: использование машинного обучения (в экспериментальных версиях) для классификации трафика на основе многомерных признаков.
Классификация протоколов
nDPI поддерживает широкий спектр протоколов, разделённых на категории:
- Веб и HTTP/HTTPS: HTTP, HTTPS, HTTP/2, HTTP/3 (QUIC).
- Электронная почта: SMTP, IMAP, POP3, SMTPS, IMAPS, POP3S.
- Мессенджеры и VoIP: WhatsApp, Telegram, Signal, Viber, Skype, Zoom, Webex, Discord, Slack.
- Потоковое видео и аудио: YouTube, Netflix, Twitch, Spotify, Apple Music, Hulu.
- Файлообмен и торренты: BitTorrent, eDonkey, Gnutella, FTP, SFTP.
- Системные протоколы: DNS, DHCP, NTP, SNMP, ICMP, ARP.
- VPN и туннелирование: OpenVPN, WireGuard, IPsec, PPTP, L2TP.
- Базы данных: MySQL, PostgreSQL, MongoDB, Redis, Cassandra.
- Игры и потоковые сервисы: Steam, Xbox Live, PlayStation Network, Discord (голосовой чат).
Полный список протоколов обновляется с каждым релизом; на начало 2024 года nDPI поддерживает более 300 различных протоколов и приложений.
Применение
nDPI используется в различных сценариях, связанных с мониторингом и управлением сетями:
- Сетевой мониторинг: интеграция с ntopng, Prometheus, Grafana, Zabbix для визуализации трафика по приложениям.
- Системы обнаружения вторжений (IDS/IPS): например, в Suricata nDPI используется как модуль для классификации трафика, что помогает выявлять аномалии.
- Биллинг и тарификация: провайдеры могут применять nDPI для разделения трафика на категории (например, «веб», «видео», «торренты») и применять разные тарифы.
- Политика безопасности: блокировка или ограничение определённых приложений (например, торрентов или мессенджеров) в корпоративных сетях.
- Анализ качества обслуживания (QoS): приоритизация трафика для критически важных приложений (VoIP, видеоконференции) и ограничение для фоновых (обновления, торренты).
- Академические исследования: изучение структуры интернет-трафика, разработка новых методов классификации, тестирование алгоритмов машинного обучения.
Преимущества и ограничения
Преимущества
- Открытый исходный код: nDPI распространяется по лицензии LGPLv3, что позволяет использовать, модифицировать и встраивать библиотеку в коммерческие и некоммерческие проекты без лицензионных отчислений.
- Высокая производительность: библиотека способна обрабатывать трафик на скоростях до 10 Гбит/с на одном ядре современного процессора.
- Непрерывное обновление: команда ntop регулярно выпускает новые версии с поддержкой актуальных протоколов (например, QUIC, HTTP/3, новые версии мессенджеров).
- Модульность: nDPI можно использовать как самостоятельную библиотеку или встраивать в другие приложения через API.
- Кроссплатформенность: работает на основных операционных системах.
Ограничения
- Ограниченная эффективность при полном шифровании: если трафик полностью зашифрован (например, при использовании VPN с шифрованием всего потока), nDPI не может определить конкретное приложение внутри туннеля, хотя может идентифицировать сам протокол туннелирования.
- Зависимость от сигнатур: для новых или редко используемых протоколов может потребоваться ручное добавление сигнатур.
- Ресурсоёмкость: на высоконагруженных сетях (более 40 Гбит/с) может потребоваться аппаратное ускорение или распределённая обработка.
- Юридические ограничения: в некоторых странах использование DPI, включая nDPI, может регулироваться законами о тайне связи и персональных данных. В Российской Федерации применение средств DPI для перехвата и анализа трафика без согласия сторон может быть ограничено законодательством (Федеральный закон «О связи», «О персональных данных»).
Примеры использования
- ntopng: nDPI является основным движком для классификации трафика в этом популярном сетевом мониторе. Администратор может видеть, какой процент трафика приходится на YouTube, Telegram, BitTorrent и т.д.
- Suricata: IDS/IPS-система с открытым кодом использует nDPI для расширенной классификации протоколов, что позволяет создавать более точные правила обнаружения.
- pfSense: встроенный модуль nDPI позволяет фильтровать трафик по приложениям на уровне межсетевого экрана.
- nProbe: инструмент для экспорта NetFlow/IPFIX, который использует nDPI для обогащения потоковых данных информацией о приложениях.
Интересные факты
- nDPI поддерживает детектирование более 300 протоколов, но точное число постоянно растёт: в версии 4.0 (2021 год) было добавлено около 50 новых протоколов, включая Clubhouse, Signal и TikTok.
- Библиотека способна обнаруживать не только приложения, но и версии протоколов (например, TLS 1.2 vs TLS 1.3) и даже названия клиентских программ (например, «curl» или «wget»).
- nDPI активно используется в исследовательских проектах, связанных с анализом интернет-цензуры и блокировок, в том числе для изучения работы систем «ТСПУ» (технических средств противодействия угрозам) в России.
Источники
- ntop.org — официальный сайт проекта nDPI.
- Репозиторий nDPI на GitHub (ntop/nDPI).
- Документация ntopng и nProbe.
- Статья «Deep Packet Inspection: A Survey» (2019) — обзор методов DPI.
- Материалы конференций SharkFest и NFV/SDN (2015–2023) по применению nDPI.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →