Бреславец А. С.

Государственное высшее учебное заведение "Национальный горный университет", Украина

Snort: мощный инструмент обнаружения сетевых атак

 

Защита компьютерных сетей, как обычных, так и беспроводных, – тема острая и злободневная. Сегодня информацию с описаниями взломов, а также готовых программ, реализующих их, найти легко, и любой может испытать на своём сопернике весь доступный арсенал. Чтобы обезопасить себя от неожиданных сюрпризов, следует реализовать защиту в комплексе: межсетевой экран, фильтрация MAC-адресов и шифрование трафика. Особое место в этом списке занимают системы обнаружения атак, своевременно сигнализирующие о появлении хакера. К таким средствам относится сетевая система обнаружения атак Snort – мощный инструмент с открытым исходным кодом.

Snort является сетевой системой обнаружения атак (IDS) с открытым исходным кодом, которая способна выполнить в реальном времени анализ IP-пакетов, передаваемых на контролируемых интерфейсах. Snort обнаруживает атаки, комбинируя два метода: сигнатурный и анализ протоколов.
Всю собранную информацию детектор Snort позволяет сохранить в файлах журналов, которые могут иметь различный формат: обычный текстовый ASCII или бинарный формат, совместимый с tcpdump. Кроме того, для удобства анализа информацию можно занести в базу данных: Postgresql, MySQL, unixODBC и другие. Система, построенная на Snort, способна собирать и обрабатывать информацию с нескольких разнесенных датчиков. Все дело в производительности компьютеров, используемых в качестве сенсоров. Для того чтобы улучшить производительность, разделяя быструю работу IDS по захвату пакетов и относительно медленную по занесению информации, необходимо использовать приложение Barnyard. В этом случае Snort создает специальный двоичный выходной «унифицированный» формат, с которым в дальнейшем и работает Barnyard.

Snort непосредственно не умеет работать с беспроводными сетями 802.11, но подключенный к такому устройству сможет интерпретировать полученную информацию. Сегодняшний Snort в принципе не делает различия в том, с каким типом сети он имеет дело, никаких специфических опций при установке также задавать не надо. Как обычно, указывается интерфейс ‘-i’, и Snort начинает анализ пакетов в режиме raw monitoring (RFMON), без привязки к специфической сети, собирая все пакеты, попадающиеся в радиоэфире. Чтобы контролировать только свою сеть, необходимо соответствующим образом настроить Wi-Fi устройство или систему фильтров. Сети IEEE 802.11 используют три вида пакетов: управления, контроля и данных. Чтобы отслеживать первые два типа, необходимо добавить в строку запуска параметр ‘-w’. Для более эффективной защиты можно использовать орудие нападения – Kismet, который умеет отлично сканировать эфир, а значит, его можно применять для поиска посторонних устройств. Анализируя данные с различных точек доступа и Wi-Fi карт в связке с Snort, можно дать отпор даже опытному хакеру. Существует специальное ответвление Snort – Snort-Wireless, как раз предназначенное для обнаружения атак, направленных на сети стандарта 802.11. Snort-Wireless обратно совместим с Snort 2.0, при этом содержит некоторые специфические правила обработки пакетов, настроенных на уязвимости и типичные атаки беспроводных сетей. Функционально Snort-Wireless мало отличается от Snort, дополнительно в его состав включен набор правил wifi.rules, содержащий описание специфических уязвимостей и ряд препроцессоров. В настоящее время реализовано пять препроцессоров:
1. AntiStumbler (spp_antistumbler) – распознает рассылку большого количества нулевых SSID с одного MAC-адреса, что используют NetStumbler и MacStumbler для обнаружения точек доступа;

2. DeauthFlood (spp_deauth_flood) – подсчитывает количество кадров деаутентификации и при превышении порога поднимает тревогу;
3.   AuthFlood (spp_auth_flood) – определяет количество попыток аутентификации, что может свидетельствовать о возможной DOS-атаке;

4. MacSpoof (spp_macspoof) – отслеживает попытки подмены МАС-адреса;
5.  RogueAP (spp_rogue_ap) – его задача сообщать о присутствии других точек доступа. В Snort таких препроцессоров нет, поэтому для защиты беспроводной сети имеет смысл использовать именно Snort-Wireless.

Разработчики выделяют три режима работы snort:

·   режим снифера;

·   режим регистратора пакетов;

·   режим сетевой системы выявления атак.

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

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

Snort использует два вида правил: бесконтекстные (обычные) и контекстные (правила препроцессоров). Бесконтекстные правила применяются для каждого пакета отдельно, без связи с другими пакетами. Контекстные могут применяться к той или иной совокупности (последовательности) пакетов. Большинство правил пишутся в единой строке, хотя могут занимать и несколько строк (в этом случае каждая строка, кроме последней, должна заканчиваться символом \).

Написание бесконтекстных правил:

Каждое правило делится на две логических секции: заголовок и опции. Заголовок включает:

1) обозначение действия, которое должно выполняться в случае выполнения правила;

2) обозначение протокола;

3) IP-адрес источника и назначения;

4) порты источника и назначения.

Опции включают определение дополнительных критериев выполнения правила и определение дополнительных реагирующих действий.

Пример правила:

alert tcp any any -> 192.168.1.0/24 111 (content:”|00 01 86 a5|”; \

msg: “mountd access”;)

Здесь заголовком является: alert tcp any any -> 192.168.1.0/24 111.

Опциями: content:”|00 01 86 a5|”; msg: “mountd access”;.

Это правило можно растолковать таким образом:

- выдавать сигнал тревоги, если из любого места на 111 порт любого узла сети 192.168.1.0/24 поступит TCP-пакет, который содержит в своих данных последовательность 00 01 86 a5 (в шестнадцатеричном представлении);

- сигнал тревоги сопровождать сообщением “mountd access”.

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

 

Литература:

·         Snort Cookbook. Angela D. Orebaugh, Simon Biles, Jacob Babbin; первое издание, март 2005

·         Nessus, Snort, & Ethereal Power Tools: Customizing Open Source Security Applications. Brian Caswell, Gilbert Ramirez, CISSP, Jay Beale, Noam Rathaus. Издатель: Syngress, сентябрь 2005