Введение

Добро пожаловать в лабораторную работу «Введение в Snort IDS».

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

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

В этой лабораторной работе вы изучите основы Snort. Вы исследуете его конфигурационный файл, научитесь проверять синтаксис конфигурации и запустите Snort в двух основных режимах работы: режиме анализатора (Sniffer mode) и режиме регистратора пакетов (Packet Logger mode).

Изучение конфигурационного файла Snort

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

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

Основной конфигурационный файл Snort находится по адресу /etc/snort/snort.conf. Этот файл содержит различные параметры, включая сетевые переменные, пути к файлам правил и настройки препроцессоров.

Начнем с перехода в ваш рабочий каталог.

cd ~/project

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

Вы можете использовать команду grep для поиска переменной HOME_NET внутри конфигурационного файла. Команда grep — это мощный инструмент в Linux, используемый для поиска определенных текстовых шаблонов в файлах. Поскольку конфигурационный файл защищен, нам нужно использовать sudo для выполнения команды с правами администратора.

sudo grep "ipvar HOME_NET" /etc/snort/snort.conf

Вы должны увидеть вывод, похожий на этот:

ipvar HOME_NET any

Этот вывод подтверждает, что переменная HOME_NET в данный момент установлена в any. В реальной производственной среде вы обычно меняете это значение на свою конкретную подсеть внутренних IP-адресов (например, 192.168.1.0/24), чтобы уменьшить количество ложных срабатываний и повысить производительность.

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

Проверка синтаксиса конфигурации

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

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

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

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

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

sudo snort -T -c /etc/snort/snort.conf

Поскольку Snort должен иметь доступ к сетевым интерфейсам и системным файлам, вы должны запускать его с sudo, чтобы предоставить ему права администратора.

Во время выполнения команды Snort выведет много информации в терминал. Он инициализирует препроцессоры, загружает правила и проверяет синтаксис.

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

        --== Initialization Complete ==--

   ,,_     -*> Snort! <*-
  o"  )~   Version 2.9.15.1 GRE (Build 68)
   ''''    By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
           Copyright (C) 2014-2019 Cisco and/or its affiliates. All rights reserved.
           Copyright (C) 1998-2013 Sourcefire, Inc., et al.
           Using libpcap version 1.10.1 (with TPACKET_V3)
           Using PCRE version: 8.39 2016-06-14
           Using ZLIB version: 1.2.11

           Rules Engine: SF_SNORT_DETECTION_ENGINE  Version 3.0  <Build 1>
           Preprocessor Object: SF_GTP  Version 1.1  <Build 4>
           Preprocessor Object: SF_CORVUS  Version 1.1  <Build 4>
           ...

Snort successfully validated the configuration!
Snort exiting

Ключевая фраза здесь — Snort successfully validated the configuration!. Это означает, что ваш файл snort.conf синтаксически корректен и готов к использованию.

Запуск Snort в режиме анализатора

На этом этапе вы запустите Snort в режиме анализатора (Sniffer mode).

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

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

Для запуска Snort в режиме анализатора используйте флаг -v (verbose). Это говорит Snort выводить заголовки TCP/IP пакетов на экран.

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

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

sudo snort -v -n 5

Вы увидите вывод, похожий на следующий, отображающий заголовки пакетов:

Running in packet dump mode

        --== Initializing Snort ==--
Initializing Output Plugins!
pcap DAQ configured to passive.
Acquiring network traffic from "eth0".
...
05/18-14:32:10.123456 192.168.1.10:54321 -> 8.8.8.8:53
UDP TTL:64 TOS:0x0 ID:12345 IpLen:20 DgmLen:63
Len: 35
...
===============================================================================
Snort exiting

Если вы хотите увидеть еще больше деталей, вы можете комбинировать флаги. Например, добавление -d отображает данные приложения (полезную нагрузку) пакета, а -e отображает заголовки канального уровня (MAC-адреса).

Давайте попробуем захватить 2 пакета с полными деталями (заголовки, данные и информация канального уровня):

sudo snort -vde -n 2

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

Запуск Snort в режиме регистратора пакетов

На этом этапе вы узнаете, как запустить Snort в режиме регистратора пакетов (Packet Logger mode).

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

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

Сначала вам нужно создать каталог для хранения файлов журналов. Давайте создадим каталог с именем snort_logs внутри вашей папки проекта.

mkdir -p ~/project/snort_logs

Для запуска Snort в режиме регистратора пакетов используйте флаг -l, за которым следует путь к вашему каталогу журналов. Мы также будем использовать -dev для захвата полных деталей пакета и -n 10 для захвата ровно 10 пакетов перед выходом.

Выполните следующую команду:

sudo snort -dev -l ~/project/snort_logs -n 10

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

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

ls -l ~/project/snort_logs

Вы должны увидеть файл с именем snort.log. и временной меткой, похожий на этот:

total 4
-rw------- 1 root root 1234 May 18 14:45 snort.log.1684421100

Этот файл сохранен в бинарном формате (pcap). Вы не можете прочитать его напрямую с помощью текстового редактора, такого как nano или cat. Вместо этого вы обычно используете инструмент вроде tcpdump или считываете его обратно в Snort с помощью флага -r (read) для дальнейшего анализа.

Резюме

Поздравляем! Вы успешно завершили лабораторную работу «Введение в Snort IDS».

В этой лабораторной работе вы изучили фундаментальные концепции Snort. Вы исследовали основной конфигурационный файл (snort.conf) и научились проверять его синтаксис с помощью флага -T, чтобы предотвратить ошибки при запуске. Вы также попрактиковались в запуске Snort в режиме анализатора для просмотра сетевого трафика в реальном времени в терминале и в режиме регистратора пакетов для сохранения захваченных пакетов в каталог для последующего анализа. Эти базовые навыки необходимы каждому, кто хочет использовать Snort для мониторинга сетевой безопасности и обнаружения вторжений.