Snort centos 7 настройка установка

Обновлено: 05.07.2024

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

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

ПОШАГОВАЯ ИНСТРУКЦИЯ ДЛЯ WINDOWS

Нажимаем Get Started.

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

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

УСТАНОВКА ВСПОМОГАТЕЛЬНЫХ УТИЛИТ

После установки 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.

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

dynamicpreprocessor directory c:\Snort\lib\snort_dynamicpreprocessor

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

preprocessor sfportscan: proto < all >memcap < 10000000 >sense_level

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 НА LINUX ДИСТРИБУТИВАХ

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

Поскольку файлы скачиваются в заархивированном виде, то используем команду "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 командой:

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

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

МОНИТОРИНГ С ПОМОЩЬЮ SNORT

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

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

USAGE: snort [-options]

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

-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

-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)

-r Read and process tcpdump file

-s Log alert messages to syslog

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

СНИФФЕР ПАКЕТОВ

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

СНИФФЕР С ЗАПИСЬЮ

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

Морда свиньи

Shutterstock / RussieseO

Что такое Snort?

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

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

Правила Snort

Установка Snort

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

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

Для исследования этой статьи мы установили Snort на Ubuntu 20.04, Fedora 32 и Manjaro 20.0.1.

Чтобы установить Snort в Ubuntu, используйте эту команду:

sudo apt-get install snort в окне терминала

В процессе установки вам зададут несколько вопросов. Вы можете найти ответы на эти вопросы, используя ip addr перед началом установки или в отдельном окне терминала.

ip addr в окне терминала

Обратите внимание на имя вашего сетевого интерфейса. На этом исследовательском компьютере enp0s3.

Нажмите «Tab», чтобы выделить кнопку «ОК», и нажмите «Enter».

Введите имя сетевого интерфейса и нажмите «Tab», чтобы выделить кнопку «ОК», и нажмите «Enter».

Установка имени интерфейса в окне терминала

Введите диапазон сетевых адресов в формате CIDR, нажмите «Tab», чтобы выделить кнопку «OK», и нажмите «Enter».

предоставление сведений о сети в нотации CIDR в терминале windwo

Чтобы установить Snort в Fedora, вам нужно использовать две команды:

rpm -Uvh https://forensics.cert.org/cert-forensics-tools-release-32.rpm в окне терминала

sudo dnf установить snort в окне терминала

На Manjaro нужная нам команда не совсем обычная pacman , это pamac . И нам не нужно использовать sudo :

pamac установить snort в окне терминала

Когда вас спросят, хотите ли вы собрать Snort из AUR (Репозиторий пользователей Arch) нажмите «Y» и нажмите «Enter». Мы не хотим редактировать файлы сборки, поэтому ответьте на этот вопрос, нажав «N» и нажав «Enter». Нажмите «Y», а затем «Enter», когда вас спросят, следует ли применять транзакцию.

Вам будет предложено ввести пароль.

Были установлены следующие версии Snort:

Вы можете проверить свою версию, используя:

snort --version в окне терминала

Настройка Snort

Прежде чем мы сможем запустить Snort, необходимо выполнить несколько шагов. Нам нужно отредактировать файл «snort.conf».

sudo gedit /etc/snort/snort.conf в окне терминала

Найдите строку с надписью « ipvar HOME_NET any »И отредактируйте его, заменив« любой »диапазоном адресов в нотации CIDR вашей сети.

файл конфигурации snort.conf в редакторе gedit

Сохраните изменения и закройте файл.

Обновление правил Snort

Чтобы убедиться, что ваша копия Snort обеспечивает максимальный уровень защиты, обновите правила до самой последней версии. Это гарантирует, что Snort имеет доступ к новейшему набору определений атак и действий защиты.

Загрузите набор правил для установленной вами версии Snort. Мы загружаем версию 2.9.8.3, которая ближе всего к версии 2.9.7.0 Snort, которая была в репозитории Ubuntu.

sudo tar -xvzf snortrules-snapshot-2983.tar.gc -C / etc / snort / rules в окне терминала

Беспорядочный режим

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

Чтобы сетевой интерфейс компьютера Snort прослушивал весь сетевой трафик, нам нужно установить его в неразборчивый режим. Следующая команда вызовет сетевой интерфейс enp0s3 действовать в беспорядочном режиме. Замена enp0s3 с именем сетевого интерфейса, который вы используете на своем компьютере.

sudo ip link установить enp0s3 promisc в окне терминала

Если вы запускаете Snort на виртуальной машине, не забудьте также изменить настройки в гипервизоре для виртуальной сетевой карты, используемой вашей виртуальной машиной. Например, в VirtualBox вам нужно перейти в Settings > Network > Advanced и в раскрывающемся списке «Беспорядочный режим» выберите «Разрешить все».

Вкладка настроек сетевого адаптера VirtualBox

Запуск Snort

Теперь вы можете запустить Snort. Формат команды:

sudo snort -d -l / var / log / snort -h 192.168.1.0/24 -A console -c /etc/snort/snort.conf в окне терминала

Замените диапазон IP-адресов своей сети вместо 192.168.1.0/24 .

В этой команде используются следующие параметры командной строки:

  • -d: Отфильтровывает пакеты прикладного уровня.
  • -l / var / журнал / snort /: Устанавливает каталог регистрации.
  • -h 192.168.1.0/24: Это не устанавливает домашнюю сеть, которая была установлена ​​в файле «snort.conf». Если для этого значения установлено то же значение, что и для домашней сети, журналы структурированы таким образом, что содержимое подозрительных удаленных компьютеров записывается в каталоги, названные в честь каждого удаленного компьютера.
  • -Консоль: Отправляет предупреждения в окно консоли.
  • -c /etc/snort/snort.conf: Указывает, какой файл конфигурации Snort использовать.

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

Snort работает в окне терминала

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

Подозрительная и вредоносная активность обнаружена и помечена Snort в окне терминала

Snort определяет сетевой трафик как потенциально вредоносный, отправляет предупреждения в окно консоли и записывает записи в журналы.

Атаки, классифицируемые как «утечки информации», указывают на то, что на вашем компьютере была предпринята попытка получить некоторую информацию, которая могла бы помочь злоумышленнику. Это, вероятно, указывает на то, что кто-то проводит разведку вашей системы.

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

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

Подозрительная и вредоносная активность обнаружена и помечена Snort в окне терминала

Активность обнаруживается и сообщается, и мы видим, что эта атака была направлена ​​против другого компьютера с IP-адресом 192.168.1.26 . Snort отслеживает весь диапазон адресов этой сети.

Следующие шаги

Snort не имеет внешнего интерфейса или графического пользовательского интерфейса. Сторонние проекты создали несколько, и вы, возможно, захотите изучить некоторые из них, например Snorby и Squil.


Snort — это опенсорсная система обнаружения вторжений, IDS. Она может работать как сниффер или логгер, но нас интересует именно NIDS (Network Intrusion Detection System). В таком режиме Snort проверяет все входящие пакеты на признаки известных видов сетевых атак (DDoS, сканирование портов, попытки авторизации брутфорсом и так далее).

Аналогия здесь следующая: владельцы магазинов ставят камеры, чтобы обезопасить себя от кражи. Они не помешают вскрыть замки, но зафиксируют действия воришек и помогут их поймать. Примерно так же обстоит дело с системами обнаружения вторжений, которые существуют в виде отдельных решений или компонентов систем класса Internet Security. Они не могут отразить нападение, но оповещают об атаке и помогают в расследовании инцидентов.

Долго останавливаться на описании этого продукта я не буду, так как на страницах журнала можно найти много информации о ней. Например, в статье Даниила Светлова Snort рассматривается как часть опенсорсной SIEM. Скажу лишь, почему я выбрал Snort. Этому способствовали три фактора:

  • простота в написании своих правил;
  • хорошая поддержка с информативной почтовой рассылкой; .

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

Установка Snort

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

Помимо собственно Snort, нам понадобится:

  • Barnyard2;
  • PulledPork;
  • Basic Analysis and Security Engine (BASE).

Устанавливать я буду октябрьский релиз Snort 2.9.12, так как Snort 3 представлен лишь бета-версией. В качестве ОС выбрана Ubuntu 16.04.1, установка на Ubuntu 16 и 18 ничем не отличаются. Есть разница в установке на Ubuntu 14, но об этом в статье говорить не будем.

Сначала настраиваем сетевой интерфейс.

Важное замечание для пользователей Ubuntu. С версии 15.10 сетевые интерфейсы уже не следуют стандарту ethХ. Поэтому корректно указывай имя своего интерфейса. Именно тут и возникает большинство проблем с конфигами.

Выбираем тот сетевой интерфейс, который будет мониторить Snort, и в конце настроек interfaces прописываем две строки для отключения Large Receive Offload и Generic Receive Offload. Это желательно сделать для уменьшения нагрузки на процессор:

Перезагружаем настроенный сетевой интерфейс:

Затем по стандарту — update && upgrade и ставим необходимые компоненты:

Далее создаем папку, в которой будем намешивать исходники, солить и перчить их по вкусу. Скачиваем туда систему сбора данных (DAQ — Data AcQuisition). Это библиотека, которая заменяет прямые вызовы на функции libpcap, что облегчает работу на различных аппаратных и программных интерфейсах без необходимости вносить изменения в сам Snort.

Теперь можно поставить сам Snort.

Пробуем вывести версию Snort для того, чтобы убедиться, что все взлетело и работает.

Вывод должен иметь вид, как на скриншоте.

Установка закончена, погнали дальше!

Настройка в режим IDS

О безопасности необходимо помнить всегда, но мы-то не постоянно за компьютером. Поэтому создадим пользователя для Snort.

Теперь создаем необходимые папки и раздаем права:

Распихаем конфигурационные файлы и файлы настроек по нужным папкам:

В итоге должна получиться вот такая структура папок и файлов.

Дерево папок и файлов /etc/snort

Дерево папок и файлов /etc/snort

Комментируем все строки с 457-й по 651-ю в файле /etc/snort/snort.conf . Делается это для того, чтобы Snort при запуске не скачивал правила, поскольку для обработки правил у нас будет настройка PulledPork.

Вносим несколько правок в этот же конфигурационный файл вручную:

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

Если видишь заветные слова Snort successfully validated the configuration! Snort exiting , значит, все в порядке и ничего пока не сломано.

Установка Barnyard2

Barnyard2 — это спулер, который поможет снизить нагрузку на сервер. Для его установки сперва ставим необходимые компоненты:

Обрати внимание, что во время установки MySQL попросит ввести пароль для root . Поэтому не отходи от компа надолго.

Затем ставим сам Barnyard2:

Проверяем, не отвернулась ли от нас фортуна:

Снова копируем файлы из исходного пакета, создаем файлы и раздаем права:

Теперь придется поработать с MySQL:

Добавляем в конец файла /etc/snort/barnyard2.conf строку output database: log, mysql, user=snort password=snortpass dbname=snort host=localhost sensor name=sensor01 . И снова манипуляция с правами:

Это будет наше правило на проверку пинга (ICMP-пакеты). Дописываем две строки в файл /etc/snort/sid-msg.map :

В описании релиза Barnyard можно прочесть подробнее, что и как.

Запустим Snort в режиме демона (он так и будет работать всегда).

Потом запустим Barnyard2:

Пингуем наш Snort-server и (если все в порядке) получаем предупреждения.

Работа Snort + Barnyard2

Работа Snort + Barnyard2

Установка PulledPork

Пришло время загрузить правила для Snort. Этим займется скрипт под названием PulledPork. Давай его поставим.

Теперь нам необходимо зайти на сайт Snort. Регистрируемся и в своем аккаунте отыскиваем идентификатор oinkcode .

Переходим к настройкам PulledPork. В файл /etc/snort/pulledpork.conf вносим следующие изменения:

Наблюдаем, как скачиваются правила. Проверяем, как отработает наш Snort после изменения конфига.

Наш PulledPork сам будет проверять наличие обновлений и скачивать правила. Необходимо только добавить команду на его запуск в планировщик:

Обращу внимание, что команда разработчиков Snort просит рандомно указывать время обращения загрузчика, чтобы распределить нагрузку на канал.

Установка Basic Analysis and Security Engine

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

Загружаем библиотеку ADODB:

Копируем конфигурационный файл:

И приводим некоторые строки в файле /var/www/html/base/base_conf.php к образцам:

Естественно, необходимо изменить права, чтобы никто не увидел пароль в файле:

Создаем службы

Вишенкой на нашем торте будет создание служб из Snort и Barnyard2 с добавлением их в автозапуск. Для Snort необходимо создать файл /lib/systemd/system/snort.service с таким содержимым:

Скажем системе, что службу надо запускать при загрузке:

И запустим службу:

Введем команду для проверки статуса службы:

Для второй будущей службы необходимо создать файл /lib/systemd/system/barnyard2.service и прописать в нем следующие строки:

Затем повторим команды:

Перезагружаем нашу систему и убеждаемся, что все запущено.

Отслеживаем действия в сети

Оповещение о посещении сайта

Оповещение о посещении сайта

В результате мы увидели несколько оповещений — столько, сколько раз я подключался к данному домену. Если неверно написать правило, Snort не запустится, выдав ошибку и описание, почему он не сможет запуститься.

Ошибка запуска Snort

Ошибка запуска Snort

Тестируем Snort и пишем свои правила

Установить и проверить на работоспособность — этого мало. Необходимо его еще и просматривать. Вот давай и проверим, на что способна эта IDS с заводскими правилами. У нас есть SSH, Apache и FTP. Значит, минимальный набор правил, которые надо иметь, — это обнаруживать сканирование портов, атаку на учетные записи (brute force), DoS и SQL-инъекции.

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

Действия подозрительного IP

Действия подозрительного IP

Невооруженным глазом видно сканирование портов, или, как разработчики это назвали, «разведывательную деятельность». Смотрим дальше.

Атака на 22-й порт

Атака на 22-й порт

Виден брутфорс SSH-сервиса на 22-м порте. Так же дела обстояли и с FTP-портом (21-м).

Далее ведется расследование, просматриваем логи самой ОС, выявляем слабое звено защиты, откуда он пришел и так далее. Главное, что оповещения сработали и причастность данного IP к противоправным действиям установлена.

DoS Slowloris на Kali Linux

DoS Slowloris на Kali Linux

Через 15–30 секунд наш BASE перестает отвечать. И даже после остановки атаки пришлось перезапустить веб-сервер. Сам он за короткий промежуток времени не смог подняться. Упал только BASE. Snort, естественно, продолжал работать и записывать оповещения в базу.

Лог Snort после DoS

Лог Snort после DoS

Вот так выглядит наш лог после атаки. Следом я попробовал зафлудить SYN-пакетами свой Snort-сервер. Проделано это было при помощи программы hping3.

Флуд сервера SYN-пакетами

Флуд сервера SYN-пакетами

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

Теперь зайдем на web-интерфейс с компьютера атакующего и попробуем проэксплуатировать данный метод, добавив в конце запроса and 1=1 . В логе отобразилось оповещение с номером правила.

Оповещение Snort об SQL injection

Оповещение Snort об SQL injection

Заключение

С моей точки зрения, NIDS необходима на предприятии. Мне встречались крупные компании, которые не утруждали себя установкой подобного звена защиты. На вопрос: «Как вы хакера обнаружите?» — я получал невнятные ответы вроде «Мне DLP скажет…».

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

Зато после всех донастроек и написания своих правил она становится довольно мощным инструментом.

Если верить статистике, объем сетевого трафика увеличивается примерно на 50% каждый год. Это приводит к росту нагрузки на оборудование и, в частности, повышает требования к производительности IDS/IPS. Можно покупать дорогостоящее специализированное железо, но есть вариант подешевле — внедрение одной из систем с открытым исходным кодом. Многие начинающие администраторы считают, будто установить и сконфигурировать бесплатную IPS довольно сложно. В случае с Suricata это не совсем верно — поставить и ее и начать отражать типовые атаки с набором бесплатных правил можно за несколько минут.


Зачем нужна еще одна открытая IPS?

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

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

Проблема была решена в третьей версии системы, но ее готовили так долго, что на рынке успела появиться написанная с нуля Suricata. В 2009 году ее начали разрабатывать именно как многопоточную альтернативу Snort, обладающую из коробки функциями IPS. Код распространяется под лицензией GPLv2, но финансовые партнеры проекта имеют доступ к закрытой версии движка. Некоторые проблемы с масштабируемостью в первых версиях системы возникали, но они довольно быстро были решены.

Почему Suricata?

Важная фишка Suricata — возможность использования наработок для Snort. Администратору доступны, в частности, наборы правил Sourcefire VRT и OpenSource Emerging Threats, а также коммерческие Emerging Threats Pro. Унифицированный вывод можно анализировать с помощью популярных бэкендов, также поддерживается вывод в PCAP и Syslog. Настройки системы и правила хранятся в файлах формата YAML, который легко читается и может обрабатываться автоматически. Движок Suricata распознает множество протоколов, поэтому в правилах нет необходимости привязываться к номеру порта. Кроме того в правилах Suricata активно практикуется концепция flowbits. Для отслеживания срабатывания используются переменные сессии, позволяющие создавать и применять различные счетчики и флаги. Многие IDS рассматривают разные TCP-соединения как отдельные сущности и могут не увидеть связи между ними, свидетельствующей о начале атаки. Suricata старается видеть картину целиком и во многих случаях распознает распределенный по разным соединениям вредоносный трафик. О ее преимуществах можно рассуждать долго, мы лучше перейдем к установке и настройке.

Как установить?

Мы будем устанавливать Suricata на виртуальный сервер, работающий под управлением Ubuntu 18.04 LTS. Все команды необходимо выполнять от имени суперпользователя (root). Наиболее безопасный вариант — подключиться к серверу по SSH с правами обычного пользователя, а затем применить утилиту sudo для повышения привилегий. Для начала необходимо установить пакеты, которые нам понадобятся:


Подключаем внешний репозиторий:


Устанавливаем последнюю стабильную версию Suricata:


При необходимости правим конфигурационные файлы имя, заменив использующийся по умолчанию eth0 на фактическое имя внешнего интерфейса сервера. Настройки по умолчанию хранятся в файле /etc/default/suricata, а пользовательские — в /etc/suricata/suricata.yaml. Настройка IDS по большей части ограничивается правкой этого конфигурационного файла. В нем множество параметров, которые по названию и назначению совпадают с аналогами из Snort. Синтаксис тем не менее совершенно другой, но файл читать намного проще чем конфиги Snort, к тому же он хорошо прокомментирован.





Внимание! Перед запуском стоит проверить значения переменных из раздела vars.

Чтобы завершить настройку потребуется установить suricata-update для обновления и загрузки правил. Сделать это довольно просто:


Дальше нам нужно запустить команду suricata-update для установки набора правил Emerging Threats Open:



Для просмотра списка источников правил выполняем следующую команду:



Обновляем источники правил:



Повторно просматриваем обновленные источники:


При необходимости можно включить доступные бесплатные источники:


После этого необходимо еще раз обновить правила:


На этом установку и первичную настройку Suricata в Ubuntu 18.04 LTS можно считать законченной. Дальше начинается самое интересное: в следующей статье мы подключим виртуальный сервер к офисной сети через VPN и начнем анализировать весь входящий и исходящий трафик. Особое внимание уделим блокированию атак DDoS, активности вредоносного ПО и попыткам эксплуатации уязвимостей в доступных из сетей общего пользования сервисов. Для наглядности будут смоделированы атаки наиболее распространенных типов.

Читайте также: