Установка и настройка утилиты для обнаружения вторжений в сети – Snort

Snort - утилита для обнаружения вторжений в сети (IDS - Intrusion Detection System). Она совместима с ОС Windows и Linux. Все выявленные угрозы (список параметров подачи тревоги имеет тонкие настройки), записываются в лог-файл. Snort работает по принципу анализа пакетов транспортного уровня, поэтому для его использования, требуется перевод сетевой карты в специальный мониторный режим. Разработчики учитывали проблему потребления системных ресурсов системами класса IDS, поэтому Snort нетребовательна к железу и работает в фоновом режиме.

Snort не имеет графической оболочки (GUI), в связи с чем любая работа с программой возможна только посредством командной строки. Ничего сложного здесь нет, и в этой статье мы подробно рассмотрим процесс установки и настройки Snort на Windows и на Linux. На различных дистрибутивах она устанавливается примерно одинаково за небольшой разницей в указании путей папок в командах и других мелочах.


Пошаговая инструкция для Windows

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

Нажимаем Get Started.

Начало процесса установки Snort

Открывается окно с текстовыми командами, там выбираем в верхних вкладках нашу операционную систему (в данном случае Windows) и загружаем файл загрузчика (Installer.exe).

Загрузка инсталлера для нужной ОС

Устанавливаем его в режиме "прощелкивания", то есть, ни снимая никакие флажки, поставленные разработчиком по умолчанию.


Установка вспомогательных утилит

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

В завершающем окне Snort для Windows попросит вас установить хорошо известную сетевым администраторам утилиту Winpcap. Это драйвер, который позволит вашей сетевой карте перейти в мониторный режим, то есть передавать и получать пакеты, обходя стеки протоколов. Данная утилита тоже бесплатная, поэтому ее скачиваем с сайта разработчика www.winpcap.org и также устанавливаем в режиме "прощелкивания".

Скачиваем WinPcap

Вторая вспомогательная утилита - специальный архиватор с высокой степенью сжатия, который нужен, чтобы распаковать файлы. Скачиваем и устанавливаем архиватор 7-Zip с официального сайта 7-zip.org.

Итак, установщик загружен и установлен, вспомогательные утилиты тоже поставлены. Но поскольку, графической оболочки нет, нам надо загрузить специальные правила, по которым Snort будет работать. Возвращаемся на официальный сайт Snort.org и нажимаем на кнопку "Rules" (правила). Из открывшегося списка берем файл, список правил (rules), соответствующий нашей версии (они рассортированы по версиям Snort, а не по операционным системам). На начало 2020 г. для Windows актуальна версия 2.9.15.1, которую мы инсталлируем и настроим в качестве примера.

Версии Snort

Для Linux есть и более новая версия Snort 3.0.

Скачанный файл правил (называется community-rules.tar.gz) находим в папке и открываем с помощью только что установленного архиватора 7-zip. Интерфейс этого архиватора очень похож на WinRar или WinZip.

Все файлы разархивируем, копируем и переносим в папку Snort, которую создал наш установщик. В дальнейшем, это значительно упростит указание путей.

Теперь находим и открываем файл snort.conf (параметры конфигурации для запуска приложения) в NotePad++ или другом текстовом редакторе.

Где-то на 103 строчке (она может немного отличаться по мере того, как разработчик вносит изменения в обновления) находим, установленную разработчиком по умолчанию строчку, указатель пути: c:\snort\rules. Она совпадает с расположением файла на нашей машине. Если у вас путь другой, то припишите именно его. Там, где надо редактировать пути, разработчик ставит две точки.

Теперь нам надо указать путь для папки Log-файлов, куда наш Snort будет записывать все логи, доступные для просмотра и изучения. Редактируем пути к лог-файлам.

В папке C:/snort уже есть папка log, для этого предназначенная, поэтому мы прописываем путь C:\snort\log.

На строчке 182 прописываем в config logdir: c:\snort\log, причем первая часть config logdir уже есть и строку можно найти по ней. Незабываем удалить символ "#", который выбрасывает строки из исполняемого файла, превращая их в комментарий. Результат:

Пример отредактированного конфига

Дальнейшее редактирование файла конфигурации проводим по списку по ссылке. Ищем по первой части строк и прописываем правильные пути. Я просто заменил строки 242-249 на этот блок.

# path to dynamic preprocessor libraries
dynamicpreprocessor directory c:\Snort\lib\snort_dynamicpreprocessor
# path to base preprocessor engine
dynamicengine c:\Snort\lib\snort_dynamicengine\sf_engine.dll
# path to dynamic rules libraries
#dynamicdetection directory c:\Snort\lib\snort_dynamicrules

Продолжаем редактирование. Теперь комментируем, добавляя знаки комментария "#" к строкам 259-265. В отредактированном варианте это выглядит так:

# Inline packet normalization. For more information, see README.normalize
Does nothing in IDS mode
#preprocessor normalize_ip4
#preprocessor normalize_tcp: block, rsv, pad, urp, req_urg, req_pay, req_urp, ips, ecn stream
#preprocessor normalize_icmp4
#preprocessor normalize_ip6
#preprocessor

Инструкция:

1.Редактирум пути к правилам правил Snort

# such as: c:\snort\rules

var RULE_PATH c:\Snort\rules

var SO_RULE_PATH c:\Snort\so_rules

var PREPROC_RULE_PATH c:\Snort\preproc_rules

# If you are using reputation preprocessor set these

var WHITE_LIST_PATH c:\Snort\rules

var BLACK_LIST_PATH c:\Snort\rules

2.Прописываем путь к папке лог

config logdir: c:\Snort\log

3. Редактируем пути для libraries

# path to dynamic preprocessor libraries

dynamicpreprocessor directory c:\Snort\lib\snort_dynamicpreprocessor

# path to base preprocessor engine

dynamicengine c:\Snort\lib\snort_dynamicengine\sf_engine.dll

# path to dynamic rules libraries

#dynamicdetection directory c:\Snort\lib\snort_dynamicrules

4. Комментируем

# Inline packet normalization. For more information, see README.normalize

# Does nothing in IDS mode

# preprocessor normalize_ip4

# preprocessor normalize_tcp: block, rsv, pad, urp, req_urg, req_pay, req_urp, ips, ecn stream

# preprocessor normalize_icmp4

# preprocessor normalize_ip6

# preprocessor normalize_icmp6

# Back Orifice detection.

# preprocessor bo

# Portscan detection. For more information, see README.sfportscan

preprocessor sfportscan: proto { all } memcap { 10000000 } sense_level { low }

whitelist $WHITE_LIST_PATH\white.list, \

blacklist $BLACK_LIST_PATH\black.list

5. Иправляем пути правил

6.Определяем сетевую карту snort -W

7. Тестируем конфиг snort -T -c c:\snort\etc\snort.conf -l c:\snort\log -i 2

  • ключ -T указывает, что нужно протестировать текущую конфигурацию Snort
  • ключ означает, что включен режим IDS
  • далее следует путь к конфигурационному файлу snort.conf
  • ключ -l включает режим записи на жесткий диск с указанием пути к файлу
  • ключ -A показывает что все предупрежления(alerts) будут дублтроваться выводом на консоль
  • ключ -i указывает на порядковый номер(index) интересующего нас интерфейса

7. Чтобы узнать поддерживаемые интерфейсы необходимо выполнить команду:

snort -W

8. Добавляем нужные вам правила

9. Запускаем Режим IDS: snort -A console -c c:\snort\etc\snort.conf -l c:\snort\log -i 2


Краткое содержание данной инструкции:

  • исправление ошибок в файле конфигурации (в новых версиях почти не требуется, см инструкцию на сайте разработчика);
  • указание пути правил (rules);
  • указание нужных правил из каталога;
  • добавление корректных данных сетевой карты;
  • указание Log-папки на жестком диске;

Указание правил идет на собственном простом языке. Выучивать его не нужно, так как правила берутся из списка правил. Завершающий этап настройки - определение сетевой карты из командной строки. После этого Snort запустится (из папки Bin файл с расширением .exe). Пример запуска (выдается ошибка - не задан препроцессор):

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

Нормально установленный и запущенный Snort (IDS консоль) на Windows выглядит вот так (открыт с помощью Internet Explorer, но для примера указана очень старая версия 2004 года):

Очень старый Snort

Установка Snort на Linux дистрибутивах

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

wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz

wget https://www.snort.org/downloads/snort/snort-2.9.15.1.tar.gz

Поскольку файлы скачиваются в заархивированном виде, то используем команду "tar", чтобы запустить встроенный архиватор и разархивировать только что скаченные файлы с его помощью.

tar xvzf daq-2.0.6.tar.gz
cd daq-2.0.6
./configure make sudo make install
tar xvzf snort-2.9.15.1.tar.gz
cd snort-2.9.15.1
./configure --enable-sourcefire make sudo make install

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

Проверяем, где установился Snort командой:

whereis snort

Для управления Snort используются нетипичные символы в командах, но не стоит этого пугаться, так как самих команд немного. Сам Snort состоит из трех основных программных модулей.

  1. Дешифратор сетевых пакетов: после перевода сетевой карты в мониторный режим из общего трафика, который имеет весьма значительный объем, необходимо выкачать "транспортные" данные, то есть сведения об адресах. Именно за счет этих данных легко обнаруживаются вторжения.
  2. Система обнаружения вторжения: на основе дешифрованных пакетов в соответствии с rules (правилами).
  3. Logger/Alerter: конвертирует информацию с дешифрованных транспортных пакетов в удобный вид, для него указывается папка для хранения фалов регистрации :/var/log/Snort (логи сервера).

Мониторинг с помощью Snort

Итак, на Windows или на Linux сначала открываем окно (через терминал, или exe файл из папки GUI). Введем первую команду, чтобы получить справку, отобразить список всех основных команд (имя компьютера, Someone, замените на ваше):

@someone snort -?

На экране отобразится список:

-* Snort! *-

Version 1.7

By Martin Roesch (roesch@clark.net, www.snort.org)

USAGE: snort [-options]

Options:

-A Set alert mode: fast, full, or none (alert file alerts only)

'unsock' enables UNIX socket logging (experimental).

-a Display ARP packets

-b Log packets in tcpdump format (much faster!)

-c Use Rules File

-C Print out payloads with character data only (no hex)

-d Dump the Application Layer

-D Run Snort in background (daemon) mode

-e Display the second layer header info

-F Read BPF filters from file

-g Run snort gid as 'gname' user or uid after initialization

-h Home network =

-i Listen on interface

-l Log to directory

-n Exit after receiving packets

-N Turn off logging (alerts still work)

-o Change the rule testing order to Pass|Alert|Log

-O Obfuscate the logged IP addresses

-p Disable promiscuous mode sniffing

-P set explicit snaplen [sp? -ed.] of packet (default: 1514)

-q Quiet. Don't show banner and status report

-r Read and process tcpdump file

-s Log alert messages to syslog

-S

С помощью команд из этого списка программу можно перевести в один из трех режимов работы, рассмотренных ниже.


Сниффер пакетов

Функция аналогичная многим известным снифферам, например WireShark. Пакеты дешифруются и выводятся на экран (заголовки пакетов). Режим очень удобно использовать для проверки правильности указания IP-адресов и всех настроек программы. Для запуска сниффера введите:

root @someone# ./snort -v

Сниффер с записью

На экране отображаются не только заголовки пакетов, но и происходит запись содержимого на диск. Для сетей со значительным трафиком такой режим использовать невозможно ввиду огромного объема данных. Пакеты сохраняются на диске в ASCII формате. Путь папки для записи прописывается в команде.


Режим обнаружения вторжения

Основной режим работы Snort. Он не потребляет много ресурсов, и запускается на машине в фоновом режиме для постоянного мониторинга. Для того чтобы Snort понял, что нужно регистрировать, ему предварительно указывают допустимые и недопустимые адреса. Дополнительная информация (на английском языке) представлена на официальном сайте www.snort.org.

Who's online

There are currently 1 user and 3 guests online.