Введение
Snort — это мощная система обнаружения вторжений (IDS) с открытым исходным кодом, которая отслеживает сетевой трафик в режиме реального времени и сравнивает его с набором предопределенных правил. Когда подозрительная активность соответствует правилу, Snort генерирует оповещение. Умение читать и интерпретировать эти оповещения является фундаментальным навыком для любого специалиста по кибербезопасности.
Генерация оповещения — это лишь начало процесса реагирования. Аналитикам необходимо определить, является ли событие значимым, что именно произошло в сети и требуются ли дальнейшие действия. Именно поэтому интерпретация оповещений так же важна, как и создание самих правил. Надежная система обнаружения бесполезна, если специалисты не могут точно прочитать и классифицировать ее выходные данные.
В этой лабораторной работе вы научитесь работать с оповещениями Snort. Вы запустите Snort с пользовательской конфигурацией, сгенерируете сетевой трафик для срабатывания определенных правил обнаружения, а затем проанализируете полученные файлы журналов. Snort может выводить журналы в различных форматах; мы сосредоточимся на журнале fast (который предоставляет краткую сводку события в одну строку) и журнале full (который включает подробную информацию о заголовках пакетов).
Активация нескольких правил
На этом этапе вы запустите систему обнаружения вторжений Snort и сгенерируете сетевой трафик, чтобы активировать пользовательские правила, которые были предварительно настроены для вас.
Создание заведомо известного тестового трафика — стандартная практика в разработке систем обнаружения. Если вы точно знаете, какие пакеты должны вызывать определенные правила, у вас есть четкая база для проверки того, что конвейер мониторинга работает корректно.
Среда была настроена с двумя простыми правилами Snort: одно обнаруживает трафик ICMP (Ping), а другое — трафик HTTP (веб) на порту 80. Мы также создали пользовательский файл конфигурации /etc/snort/custom.conf, который указывает Snort сохранять оповещения в двух разных форматах: «fast» (быстрый) и «full» (полный).
Сначала запустите Snort в режиме демона (фоновом режиме), используя файл пользовательской конфигурации. Флаг -D указывает Snort работать в фоновом режиме, -c задает файл конфигурации, -l указывает каталог для журналов, а -i eth0 предписывает Snort прослушивать сетевой интерфейс по умолчанию.
sudo snort -c /etc/snort/custom.conf -l /var/log/snort -i eth0 -D
Вы должны увидеть сообщение о том, что Snort успешно инициализирован и запущен как демон.
Затем сгенерируйте сетевой трафик для срабатывания правил. Мы отправим три ICMP-пакета (ping) на общедоступный DNS-сервер (8.8.8.8), чтобы активировать правило ICMP.
ping -c 3 8.8.8.8
Теперь сгенерируйте HTTP-трафик с помощью команды curl для загрузки веб-страницы. Это активирует правило HTTP. Мы используем > /dev/null, чтобы скрыть вывод HTML и не загромождать терминал.
curl -s http://example.com > /dev/null
Наконец, подождите немного, пока Snort обработает пакеты и запишет их в файлы журналов. Вы можете убедиться, что файлы журналов созданы, просмотрев содержимое каталога журналов Snort.
sleep 2
ls -l /var/log/snort
В выводе вы должны увидеть fast_alert.log и full_alert.log, что означает, что Snort успешно обнаружил трафик и сгенерировал оповещения.
total 8
-rw-r--r-- 1 root root 345 Sep 15 10:00 fast_alert.log
-rw-r--r-- 1 root root 1250 Sep 15 10:00 full_alert.log
Анализ журнала fast
На этом этапе вы изучите файл fast_alert.log. Формат оповещений «fast» разработан так, чтобы быть легко читаемым и лаконичным. Он записывает наиболее важную информацию об оповещении в одну строку, что делает его идеальным для быстрого просмотра или обработки автоматизированными скриптами.
Это формат, с которым аналитики сталкиваются в первую очередь, поскольку сортировка событий обычно начинается с общего обзора. Вам нужно знать, что сработало, когда это произошло и какие конечные точки были задействованы, прежде чем решать, нужны ли более глубокие детали пакетов.
Используйте команду cat для отображения содержимого файла журнала fast.
cat /var/log/snort/fast_alert.log
Ваш вывод будет выглядеть примерно так:
09/15-10:00:01.123456 [**] [1:1000001:1] ICMP Ping Detected [**] {ICMP} 192.168.1.10 -> 8.8.8.8
09/15-10:00:01.123456 [**] [1:1000001:1] ICMP Ping Detected [**] {ICMP} 8.8.8.8 -> 192.168.1.10
09/15-10:00:05.654321 [**] [1:1000002:1] HTTP Traffic Detected [**] {TCP} 192.168.1.10:45678 -> 93.184.216.34:80
Разберем компоненты строки оповещения в формате fast:
- Метка времени (Timestamp):
09/15-10:00:01.123456показывает точную дату и время захвата пакета. - Генератор, SID и версия:
[1:1000001:1]представляет идентификатор генератора (1 означает стандартное правило Snort), идентификатор Snort (SID), который уникально идентифицирует правило (1000001), и номер версии правила (1). - Сообщение:
ICMP Ping Detected— это понятное человеку сообщение, определенное в правиле. - Протокол:
{ICMP}или{TCP}указывает на используемый сетевой протокол. - Источник и назначение:
192.168.1.10:45678 -> 93.184.216.34:80показывает IP-адрес и порт источника, стрелку, указывающую направление трафика, а также IP-адрес и порт назначения.
Читая этот журнал, аналитик по безопасности может быстро определить, кто атакует (IP источника), какова цель (IP и порт назначения) и какой тип атаки подозревается (сообщение).
Изучение дампов полных пакетов
Хотя журнал fast отлично подходит для быстрого обзора, в нем отсутствуют глубокие технические детали, необходимые для тщательного расследования. На этом этапе вы изучите файл full_alert.log.
Полный журнал помогает ответить на другой вопрос: не просто «какое оповещение сработало?», а «как на самом деле выглядел пакет, вызвавший срабатывание?». Этот более глубокий контекст помогает аналитикам проверять оповещения, понимать поведение протоколов и расследовать потенциальные ложные срабатывания или попытки обхода системы.
Формат оповещений «full» включает полную информацию о заголовке пакета. Это позволяет аналитикам изучать такие детали, как время жизни (TTL), тип обслуживания (TOS), длина пакета и флаги TCP, что может быть критически важно для понимания характера атаки или выявления ложных срабатываний.
Поскольку полный журнал содержит несколько строк на каждое оповещение, он может быть довольно длинным. Используйте команду head для просмотра первых 30 строк файла, где будут показаны детали первых нескольких оповещений.
head -n 30 /var/log/snort/full_alert.log
Ваш вывод будет выглядеть примерно так:
[**] [1:1000001:1] ICMP Ping Detected [**]
09/15-10:00:01.123456 192.168.1.10 -> 8.8.8.8
ICMP TTL:64 TOS:0x0 ID:12345 IpLen:20 DgmLen:84 DF
Type:8 Code:0 ID:15 Seq:1 ECHO
...
[**] [1:1000002:1] HTTP Traffic Detected [**]
09/15-10:00:05.654321 192.168.1.10:45678 -> 93.184.216.34:80
TCP TTL:64 TOS:0x0 ID:54321 IpLen:20 DgmLen:60 DF
******S* Seq: 0x1A2B3C4D Ack: 0x0 Win: 0xFAF0 TcpLen: 40
Обратите внимание на дополнительные детали, представленные в полном журнале:
- Информация заголовка IP:
TTL:64(Time to Live),TOS:0x0(Type of Service),ID:12345(IP Identification) иDgmLen:84(Datagram Length). - Специфика ICMP:
Type:8 Code:0указывает на запрос ICMP Echo Request (стандартный ping). - Специфика TCP:
******S*представляет флаги TCP, установленные в пакете (в данном случае установлен флаг SYN, указывающий на начало соединения). Также отображаются порядковые номера (Seq), номера подтверждения (Ack) и размер окна (Win).
Анализируя эти полные дампы пакетов, вы можете получить гораздо более глубокое понимание сетевого трафика, который вызвал оповещение IDS.
Резюме
В этой лабораторной работе вы успешно настроили и запустили систему обнаружения вторжений Snort для мониторинга сетевого трафика. Вы научились активировать пользовательские правила обнаружения, генерируя определенные типы сетевого трафика, такие как ICMP-пинг и HTTP-запросы. Кроме того, вы изучили различия между журналами оповещений Snort в форматах fast и full, получив практический опыт чтения и интерпретации критически важной информации, которую они содержат — от базовых IP-адресов источника и назначения до подробных флагов заголовков пакетов. Эти навыки необходимы для эффективного мониторинга сетевой безопасности и реагирования на потенциальные угрозы.



