Установка и настройка snort на debian

Обновлено: 30.06.2024

В данной статье рассмотрим пример установки и первичной настройки Snort для ОС Debian. А также рассмотрим конфигурацию сетевого интерфейса, рекомендуой для Snort.

Установка и первичная настройка Snort для ОС Debian

Установка необходимых пререквизитов для Snort

В данной статье разберём подробно установку из исходных кодов и первичную настройку Snort в ОС Debian.

Для начала устанавливаем обновления для ОС:

  • apt-get update - обновление индекса пакетов
  • apt-get upgrade - обновление пакетов

Устанавливаем обязательные пререквизиты для Snort:

  • build-essential - предоставляет инструменты, необходимых для сборки пакетов Debian;
  • libpcap-dev - библиотека для захвата сетевого трафика, необходима для Snort;
  • libpcre3-dev - библиотека функций для поддержки регулярных выражений, необходима для Snort;
  • libdumbnet-dev - библиотека, ещё известная как libdnet-dev, предоставляющая упрощённый, портативный интерфейс для различных низкоуровневых (interface to several low-level networking routines);
  • zlib1g-dev - библиотека, реализующая метод сжатия deflate, необходима для Snort.

Устанавливаем необходимые для DAQ парсеры:

  • bison - генератор анализаторов синтаксиса (parser) выражений;
  • flex - инструмент для генерации программ, распознающих заданные образцы в тексте.

Устанавливаем дополнительные (рекомендуемые) программы:

Для сборки документации (не является обязательным) понадобиться установить следующие пакеты:

Устанавливаем её из исходного кода:

Сборка DAQ и Snort из исходного кода

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

/snort_src Snort использует библиотеку Data Acquisition library (DAQ), которую можно скачать с официального сайта Snort. Скачиваем архив с исходным кодом, создаём бинарный пакет с помощью checkinstall и устанавливаем его:

Обновляем пути для разделяемых библиотек:

Далее устанавливаем Snort из исходного кода:

В случае каких-либо ошибок во время сборки необходимо их устранить прежде чем двигаться дальше.

И создаём символьную ссылку

Следует проверить, правильно ли установился Snort. Для этого достаточно запустить команду snort -V . Если вывод команды будет примерно следующий (номер версии может отличаться), то это будет означать, что Snort успешно установлен:

Также с помощью команды snort --daq-list можно посмотреть список доступным DAQ-модулей.

Устранение возможных ошибок

Во время выполнения команды checkinstall могут возникнуть ошибки вида:

ranlib: could not create temporary file whilst writing archive: No more archived files

Установкой и удалением программы при помощи make:

Добавлением вручную каталогов, необходимых для сборки и установки пакета, которые не может создать checkinstall самостоятельно:

После чего вновь собираем и устанавливаем Snort:

Конфигурация сетевого интерфейса, рекомендуемая для Snort

Согласно рекомендациям из руководства Snort следует убедиться, что сетевая карта не обрезает слишком большие пакеты (в сетях Ethernet длина которых превышает 1518 байт). Для этого произведём оптимизацию сетевых интерфейсов с помощью утилиты ethtool. Если нужно, устанавливаем ethtool ( sudo apt-get -y install ethtool ) и для настройки параметров выполняет в терминале следующие команды:

  • ethtool -K eth0 rx off - освобождение ОС от расчёт контрольных суммы TCP/IP (rx-checksumming) для входящих пакетов;
  • ethtool -K eth0 tx off - освобождение ОС от расчёт контрольных суммы TCP/IP (tx-checksumming) для исходящих пакетов;
  • ethtool -K eth0 gso off - отключение функции (generic-segmentation-offload) фрагментации пакетов без участия CPU;
  • ethtool -K eth0 gro off - отключение функции (generic-receive-offload) сборки пакетов сетевым интерфейсом без участия CPU;
  • ethtool -K eth0 lro off - отключение функции (large-receive-offload) сборки пакетов сетевым интерфейсом без участия CPU.

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

Открываем файл /etc/network/interfaces ( sudo gedit /etc/network/interfaces ) с настройками конфигурации сети Ethernet и добавляем в конец файла следующие команды для сетевого интерфейса eth0, который Snort будет слушать:

Либо открываем файл /etc/rc.local ( sudo gedit /etc/rc.local ) с автозагрузками и добавляем следующие строчки до “exit 0”:

Текущие значения параметров можно посмотреть с помощью команды ethtool -k eth0 . Если параметр обозначен как [fixed], то это означает, что значение параметра нельзя изменить с помощью ethtool. Часто многие параметры обозначены [fixed], когда ОС запушена в виртуальной машине (например, VMWare или VirtualBox) и гостевая ОС не в состоянии изменить параметры хостовой ОС.

Конфигурация ниже не рабочая:

Установка Snort для для других ОС

На ОС Raspbian (Raspberry Pi 3) Snort устанавливается с помощью такой же последовательности команд.

Snort - это бесплатная система обнаружения вторжений в сеть (IDS). В менее официальных терминах, это позволяет вам отслеживать вашу сеть на предмет подозрительной активности в режиме реального времени . В настоящее время Snort имеет пакеты для систем на базе Fedora, CentOS, FreeBSD и Windows. Точный метод установки зависит от операционной системы. В этом уроке мы будем устанавливать напрямую из исходных файлов Snort. Это руководство было написано для Debian.

Обновление, обновление и перезагрузка

Прежде чем мы действительно получим в свои руки источники Snort, мы должны убедиться, что наша система обновлена. Мы можем сделать это, выполнив команды ниже.

Предварительная установка конфигурации

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

После того, как все пакеты установлены, вам нужно будет создать временный каталог для ваших исходных файлов - они могут быть где угодно. Я буду использовать /usr/src/snort_src . Чтобы создать эту папку, вам необходимо войти в систему как root пользователь или иметь sudo права доступа - root просто это упрощается.

Установка библиотеки сбора данных (DAQ)

Прежде чем мы сможем получить исходный код Snort, нам нужно установить DAQ. Это довольно просто установить.

Извлеките файлы из архива.

Перейдите в каталог DAQ.

Настройте и установите DAQ.

Эта последняя строка будет выполняться ./configure первой. Тогда это выполнится make . Наконец, он будет выполнен make install . Здесь мы используем более короткий синтаксис, чтобы немного сэкономить при наборе текста.

Установка Snort

Мы хотим убедиться, что мы снова в /usr/src/snort_src каталоге, поэтому обязательно перейдите в этот каталог с помощью:

Теперь, когда мы находимся в каталоге для источников, мы загрузим tar.gz файл для источника. На момент написания этой статьи самая последняя версия Snort 2.9.8.0 .

Команды для фактической установки snort очень похожи на те, которые используются для DAQ, но имеют разные параметры.

Распакуйте исходные файлы Snort.

Перейдите в исходный каталог.

Настройте и установите источники.

Пост-установка Snort

После установки Snort мы должны убедиться, что наши общие библиотеки обновлены. Мы можем сделать это с помощью команды:

После того, как мы это сделаем, проверьте вашу установку Snort:

Если эта команда не работает, вам нужно создать символическую ссылку. Вы можете сделать это, набрав:

Полученный результат будет выглядеть следующим образом:

Нерутинг Snort

Теперь, когда у нас установлен snort, мы не хотим, чтобы он работал как root , поэтому нам нужно создать snort пользователя и группу. Чтобы создать нового пользователя и группу, мы можем использовать эти две команды:

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

После того, как мы создадим каталоги и правила, теперь нам нужно создать каталог журналов.

И, наконец, прежде чем мы сможем добавить какие-либо правила, нам нужно место для хранения динамических правил.

Как только все предыдущие файлы будут созданы, установите для них соответствующие разрешения.

Настройка файлов конфигурации

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

Теперь, когда есть файлы конфигурации, вы можете сделать одну из двух вещей:

  • Вы можете включить Barnyard2
  • Или вы можете просто оставить конфигурационные файлы в покое и выборочно включить нужные правила.

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

конфигурация

В /etc/snort/snort.conf файле вам нужно будет изменить переменную HOME_NET . Он должен быть настроен на IP-блок вашей внутренней сети, чтобы не регистрировать попытки вашей собственной сети войти на сервер. Это может быть 10.0.0.0/24 или 192.168.0.0/16 . В строке 45 /etc/snort/snort.conf измените переменную HOME_NET на это значение IP-блока вашей сети.

В моей сети это выглядит так:

Затем вам нужно установить EXTERNAL_NET переменную на:

Который просто превращается EXERNAL_NET во что бы то ни HOME_NET было.

Установление правил

Теперь, когда большая часть системы настроена, нам нужно настроить наши правила для этого маленького поросенка. Где - то около линии 104 в вашем /etc/snort/snort.conf файле, вы должны увидеть «вар» декларации и переменные RULE_PATH , SO_RULE_PATH , PREPROC_RULE_PATH , WHITE_LIST_PATH , и BLACK_LIST_PATH . Их значения должны быть установлены на пути, которые мы использовали в Un-rooting Snort .

Как только эти значения установлены, удалите или закомментируйте текущие правила, начиная со строки 548.

Теперь давайте проверим правильность вашей конфигурации. Вы можете проверить это с snort .

Вы увидите вывод, похожий на следующий (сокращен для краткости).

Теперь, когда все настроено без ошибок, мы готовы начать тестирование Snort.

Тестирование Snort

Если вы заметили в snort.conf файле где-то около строки 546, эта строка существует:

Как только у вас есть это в вашем файле, сохраните его и продолжайте чтение.

Запустить тест

Следующая команда запустит Snort и напечатает оповещения «быстрого режима», как пользователь snort, в группе snort, используя config /etc/snort/snort.conf , и будет прослушивать сетевой интерфейс eno1 . Вам нужно будет переключиться eno1 на любой сетевой интерфейс, который прослушивает ваша система.

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

Вы можете нажать Ctrl + C, чтобы выйти из программы, и все. Snort все настроено. Теперь вы можете использовать любые правила, которые пожелаете.

Морда свиньи

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: 5 шагов для установки и настройки Snort в Linux


Snort — это бесплатная легкая система обнаружения вторжений в сеть для UNIX и Windows.

В этой статье мы рассмотрим, как установить snort из исходного кода, написать правила и выполнить базовое тестирование.

Загрузите последнюю бесплатную версию с веб-сайта snort . Извлеките исходный код snort в каталог /usr/src, как показано ниже.

2. Установите Snort

Перед установкой snort убедитесь, что у вас есть пакеты dev для libpcap и libpcre.

Следуйте инструкциям ниже, чтобы установить snort.

3. Проверьте установку Snort

Проверьте установку, как показано ниже.

4. Создайте необходимые файлы и каталог

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

Создайте следующие каталоги:

Приведенное выше основное правило предупреждает о наличии ICMP-пакета (ping).

Ниже приводится структура предупреждения:

StructureExample
Rule Actionsalert
Protocolicmp
Source IP Addressany
Source Portany
Direction Operator->
Destination IP Addressany
Destination Portany
(rule options)(msg:”ICMP Packet”; sid:477; rev:3;)

5. Выполните snort

Выполните snort из командной строки, как указано ниже.

Попробуйте пропинговать IP с вашего компьютера, чтобы проверить наше правило пинга. Ниже приведен пример предупреждения snort для этого правила ICMP.

Оповещение Объяснение
Пара строк добавляется для каждого предупреждения, которое включает в себя следующее:

Если у вас другой интерфейс для сетевого подключения, используйте опцию -dev -i. В этом примере мой сетевой интерфейс ppp0.


Установка и первичная настройка

Оптимизация сетевых интерфейсов

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

Подготовка БД

Вся информация об атаках, зафиксированных Snort, будет храниться в БД MySQL. Произведем ее первичную настройку:

Установка Snort

После первичной настройки БД приступим к установке Snort с поддержкой MySQL:

Создадим структуру БД Snort:

В завершении работ удалим файл:

и приступим к настройке веб-интерфейса.

Настройка веб-сервера

Используем связку nginx и php5-fpm в качестве веб-окружения. Для построения графиков также потребуется компонет php5-gd.

Установим в настройках php5-fpm TIMEZONE:

а также заменим строку:

Произведем настройку vhost:

Визуализация атак с использование BASE

Для визуализации детектированных атак установим BASE (Basic Analysis and Security Engine):

Подключимся к BASE и произведем первичную инициализацию:


На этом процесс установки и первичной настройки системы можно считать завершенным.

Расширенная настройка Snort

snort.conf

Конфигурационный файл состоит из секций:

    1) Set the network variables
    2) Configure the decoder
    3) Configure the base detection engine
    4) Configure dynamic loaded libraries
    5) Configure preprocessors
    6) Configure output plugins
    7) Customize your rule set
    8) Customize preprocessor and decoder rule set
    9) Customize shared object rule set

Рассмотрим основные секции.

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

Кроме этого, в секции указаны пути расположения каталога правил Snort, а также White- и Black- листов. К этому мы вернемся чуть позже.

Пример. Исключим из декодера пакеты с неверными IP-опциями:

и пакеты, адресованные DNS-серверу:

6. Настройка вывода
Snort имеет достаточно гибгий функционал вывода в формате syslog, unified2, prelude, tcpdump и т.д.
По умолчанию данные пишутся в формате tcpdump (pcap) в файл tcpdump.log. Закоментируем строку:

Не лишним будет настроить построчное логирование алертов в файл с использованием alert_fast:

Но, поскольку у нас настроено логирование в MySQL, эта секция для нас не очень актуальна.

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

Snort rules

Как мы поняли, правила располагаются в каталоге /etc/snort/rules. Рассмотрим на примере алерта рассылки мультикастовых запросов:


Раскрыв запись алерта, определим sid правила, сгенерировавшего алерт.


В данном случае sid равен 527. Произведем поиск правила:

Для того, чтобы исключить из правила хост, достаточно добавить ![HOST]. Исключим мультикаст адрес из правила:

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