Контакты
Подписка 2022
МЕНЮ
Контакты
Подписка

Использование Snort в режиме NIDS

Ростислав Кокарев, 26/10/21

Данная статья описывает возможности, предоставляемые системой Snort в режиме NIDS (Network Intrusion Detection System, система обнаружения сетевых вторжений), включая дополнительные программные компоненты для улучшения базовой функциональности.

Автор: Ростислав Кокарев, главный специалист по внутреннему аудиту информационной безопасности департамента информационной безопасности компании Трансмашхолдинг

Архитектура Snort

Snort является сервисом с открытым исходным кодом, распространяемым под лицензией GPL. Он был создан в 1998 г. Мартином Рошем, одним из известнейших людей в мире информационной безопасности, автором многих книг. Основной причиной создания системы Snort было отсутствие достаточно эффективного, тем более бесплатного, инструмента оповещения об атаках. Система Snort способна выявлять:

  • атаки на протоколы SNMP, Net-BIOS, ICMP;
  • атаки на веб-сервер (php, iss и т.д.);
  • атаки на протоколы SMTP, IMAP, POP3;
  • использование эксплойтов;
  • атаки на Telnet, DNS, FTP и т.д;
  • атаки DoS/DDoS;
  • атаки на базы данных SQL, Oracle и т.д.

Архитектура Snort включает в себя несколько основных компонентов: библиотеку libpcap, декодер пакетов, препроцессор, детектор, базу правил и модули вывода информации.

Так, библиотека libpcap позволяет перехватывать пакеты, поступающие на сетевую карту, до того, как они передаются в стек протоколов операционной системы. Можно отметить, что на основе данной библиотеки созданы и другие системы для мониторинга сети (например, снифер Wireshark). После перехвата пакет направляется в декодер, где из протоколов канального уровня, таких как Ethernet или 802.11, декапсулируются данные сетевого и транспортного уровня. Далее препроцессор подготавливает обработанные декодером данные для детектора.

В Snort существует возможность настройки препроцессора и правил для увеличения быстродействия системы. Впоследствии детектор анализирует поступившие данные, ища в пакетах определенные правила или сигнатуры, находящиеся в базе. Правила состоят из описания угрозы и реакции при ее обнаружении. После завершения процедуры анализа Snort выводит необходимую информацию в требуемых форматах в log-/alert-файлы.

ris1-Oct-26-2021-11-36-20-40-AMРис. 1. Архитектура Snort

Snort может работать в трех режимах:

  1. Режим системы обнаружения вторжений (перехват данных и анализ, автоматическая регистрация пакетов, если в правилах не указано иного).
  2. Режим снифера (перехват и вывод данных).
  3. Режим регистрации пакетов (перехват и регистрация данных в соответствующих файлах).

Из дополнительных инструментов работы со Snort следует упомянуть Barnyard2, PulledPork, BASE и Snorby.

Barnyard2 является интерпретатором с открытым исходным кодом для обработки двоичных данных, предоставляемых Snort. Стандартные способы записи регистрируемых событий в Snort являются довольно ресурсоемкими, потому наилучший сценарий – использование для хранения базы данных MySQL с возможностью поиска и просмотра требуемых событий. Barnyard2 как раз и используется для загрузки событий в СУБД. Принципиальная схема взаимодействия выглядит так: производится настройка компонентов Snort для записи событий в двоичной форме и последующего перенаправления в Barnyard2 для дальнейшей чтения и записи в базу данных MySQL.

PulledPork является скриптом, который загружает, устанавливает и обновляет правила для Snort из различных источников. Существует несколько наборов данных, которые может загружать данный скрипт. Его также можно использовать для загрузки бесплатного набора правил сообщества Snort.

Правила Snort

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

  • бесконтекстные правила, создаются для каждого пакета отдельно;
  • контекстные правила препроцессоров.

Правила состоят также из заголовка и опций. Заголовок включает в себя действие, протокол передачи, IP-адрес, а также сетевые маски и порты. Опции же включают в себя дополнительные критерии обработки правил и реагирующих действий. Данные параметры применяются для описания фильтрации сетевого трафика. Общая структура правил представлена в табл. 1.

Снимок экрана 2021-10-26 в 14.36.51

Заголовок правила должен содержать так называемое ключевое слово, определяющее действие, которое выполняется при совпадении всех заданных условий. Основные действия правил представлены в табл. 2.

Существует возможность создания собственных типов правил (Ruletype), с помощью которых можно связать один или несколько модулей (Plugin). Данные типы впоследствии возможно будет применять как действия в правилах Snort.

Следующее поле заголовка определяет протокол передачи данных. В настоящее время Snort способен различать и анализировать всего несколько типов протоколов: TCP, UDP, ICMP, IP. Однако уже в ближайшем будущем разработчики постараются включить также протоколы ARP, IGRP, GRE, OSPF, RIP и др.

После протокола указываются соответствующие IP-адреса и порты. Здесь стоит отметить, что Snort не умеет определять адреса хостов по именам, а потому в правилах целесообразно указывать конкретные адреса или их диапазон.

Заголовок "оператор" определяет направление трафика для данного правила с указанием IP-адреса и порта источника и получателя трафика. Помимо этого можно использовать оператор двунаправленности, который определяет необходимость детектирования трафика от обеих сторон.

Опции правил

Опции правил являются ключевой частью правил Snort. Все опции можно условно разделить на несколько категорий:

  • General/meta-data – информация о правиле, не влияющая на детектирование;
  • Payload – опция, позволяющая просматривать поле данных пакета;
  • Non-payload – опция для наблюдения за служебными полями пакета;
  • Post-detection – опция-триггер, указывающая на то, что требуется совершить после срабатывания правила.

Более подробные инструкции по формированию правил стоит смотреть в официальной документации сообщества Snort [1].

Вспомогательные компоненты

Barnyard2

По причине требований больших ресурсов для записи событий в консоль или в текстовый файл необходимо использование базы данных MySQL для просмотра, поиска и фильтрования событий. Для того чтобы эффективно импортировать события Snort в базу данных MySQL, удобно использовать Barnyard2. После настройки Snort для вывода событий в двоичной форме Barnyard2 будет синхронно читать события и импортировать их в базу данных MySQL.

PulledPork

PulledPork – скрипт, помогающий Snort c загрузкой, установкой и обновлением наборов правил из различных источников.

PulledPork способен загружать несколько наборов правил, потому вы можете настроить его для загрузки бесплатного черного списка или же бесплатного набора от сообщества Snort. Для этого необходимо создать учетную запись на ресурсе snort.org и получить после регистрации уникальный код Oinkcode, который позволит загружать новые наборы правил.

Веб-интерфейс BASE

Для удобного просмотра огромного количества оповещений и алертов существует масса веб-интерфейсов. Однако самым лучшим вариантом, на мой взгляд, является BASE, поскольку он имеет гораздо более простой интерфейс и попрежнему пользуется большой популярностью.

BASE (Basic Analysis and Security Engine) – веб-интерфейс, который предназначен для анализа и визуализации событий, обнаруженных с помощью СОВ Snort. BASE был основан на проекте ACID (Analysis Console for Intrusion Databases). 


  1. https://snort-org-site.s3.amazonaws.com/production/document_files 

 

Темы:Защита сетейЖурнал "Информационная безопасность" №1, 2021

Хотите участвовать?

Выберите вариант!

КАЛЕНДАРЬ МЕРОПРИЯТИЙ 2021
ПОСЕТИТЬ МЕРОПРИЯТИЯ
ВЫСТУПИТЬ НА КОНФЕРЕНЦИЯХ
СТАТЬ АВТОРОМ

More...