Snort 3

Теги

Snort — свободная сетевая система предотвращения вторжений (IPS) и обнаружения вторжений (IDS) с открытым исходным кодом, способная выполнять регистрацию пакетов и в реальном времени осуществлять анализ трафика в IP-сетях.

Snort выполняет протоколирование, анализ, поиск по содержимому, а также широко используется для активного блокирования или пассивного обнаружения целого ряда нападений и зондирований, таких как попытки атак на переполнение буфера, скрытое сканирование портов, атаки на веб-приложения, SMB-зондирование и попытки определения операционной системы.

Программное обеспечение в основном используется для предотвращения проникновения, блокирования атак, если они имеют место. Может работать совместно с другим программным обеспечением, например, SnortSnarf, sguil, OSSIM и BASE (обеспечивающим визуальное представление данных вторжения).

Среди ключевых направлений развития Snort 3: упрощение настройки и запуска Snort, автоматизация конфигурирования, упрощения языка построения правил, автоматическое определение всех протоколов, предоставления оболочки для управления из командной строки, активное применение многопоточности с совместным доступом разных обработчиков к единой конфигурации. 

Основные обновления:

  • Осуществлён переход на новую систему конфигурации, предлагающую упрощённый синтаксис и позволяющую использовать скрипты для динамического формирования настроек. Для обработки файлов конфигурации используется LuaJIT. Предоставляются плагины на базе LuaJIT с реализацией дополнительных опций для правил и системы ведения логов;
  • Модернизирован движок определения атак, актуализированы правила, добавлена возможность привязки буферов в правилах (sticky buffers). Задействован поисковый движок Hyperscan, позволивший использовать в правилах быстрые и более точно срабатывающие шаблоны на основе регулярных выражений;
  • Добавлен новый режим интроспекции для HTTP, учитывающий состояние сеанса и охватывающий 99% ситуаций, поддерживаемых тестовым набором HTTP Evader. Добавлена система инспектирования трафика HTTP/2;
  • Существенно увеличена производительность режима глубокого инспектирования пакетов. Добавлена возможность многопоточной обработки пакетов, допускающая одновременное выполнение нескольких нитей с обработчиками пакетов и обеспечивающая линейную масштабируемость в зависимости от числа ядер CPU;
  • Реализовано общее хранилище конфигурации и таблицы атрибутов, которое совместно используется в разных подсистемах, что позволило заметно снизить потребления памяти благодаря исключению дублирования информации;
  • Новая система журналирования событий, использующая формат JSON и легко интегрируемая с внешними платформами, такими как Elastic Stack;
  • Переход на модульную архитектуру, возможность расширения функциональности через подключение плагинов и реализация ключевых подсистем в виде заменяемых плагинов. В настоящее время для Snort 3 уже реализовано более 200 плагинов, охватывающих различные области применения, например, позволяющие добавить собственные кодеки, режимы интроспекции, методы журналирования, действия и опции в правилах;
  • Автоматическое определение работающих служб, избавляющее от необходимости ручного указания активных сетевых портов.
  • Добавлена поддержка файлов для быстрого переопределения настроек, относительно конфигурации по умолчанию. Для упрощения настройки прекращено использование snort_config.lua и SNORT_LUA_PATH. Добавлена поддержка перезагрузки настроек на лету;
  • В коде обеспечена возможность использования конструкций C++, определённых в стандарте C++14 (для сборки требуется компилятор, поддерживающий C++14);
  • Добавлен новый обработчик VXLAN;
  • Улучшен поиск типов контента по содержимому с использованием обновлённых альтернативных реализаций алгоритмов Бойера-Мура и Hyperscan;
  • Ускорен запуск за счёт использования нескольких потоков для компиляции групп правил;
  • Добавлен новый механизм ведения логов;
  • Добавлена система инспектирования RNA (Real-time Network Awareness), собирающая сведения о доступных в сети ресурсах, хостах, приложениях и сервисах.

Код проекта написан на языке С++ и распространяется под лицензией GPLv2.