Snort системные требования. Установка и настройка IDS Snort. Разбивка параметров правила

Система обнаружения вторжения для Чайников. Установка и Конфигурирование SNORT.

Alexander Antipov


Snort – облегченная система обнаружения вторжения. Snort обычно называют “обгегченным” NIDS, - потому что это он разработан прежде всего для маленьких сетей. Программа может исполнять анализ протокола и может использоваться, чтобы обнаружить разнообразные нападения и исследовать проблемы, типа переполнения буфера, скрытых просмотров порта, CGI нападения, попыток определения OS и т.п. Snort использует "правила" (указанные в файлах "правила"), чтобы знать какой трафик пропустить а какой задержать. Инструмент гибок, позволяя вам записывать новые правила и соблюдать их. Программа также имеет " механизм обнаружения ", который использует модульную сменную архитектуру, посредством чего определенные дополнения к программе могут быть добавлены или удалены из " механизма обнаружения".

Snort может работать в трех режимах:
1. Как пакетный снифер, подобно tcpdump
2. Как регистратор пакета
3. Как развитая система обнаружения вторжения
В этой статье мы подробно расскажем о инсталляции Snort, его архитектуре, научимся создавать правила и управлять ими.

Платформа:
Linux 2.2.* ,
Snort 1.7(http://www.snort.org/)
Sparc: SunOS 4.1.x, Solaris, Linux, and OpenBSD
x86: Linux, OpenBSD, FreeBSD, NetBSD, and Solaris
M68k/PPC: Linux, OpenBSD, NetBSD, Mac OS X Server

Требования:
Tcpdump (www.tcpdump.org)
Libpcap (Snort основан на библиотеке libpcap, обычно используемой в большинстве TCP/IP сниферов и анализаторов) – скачать можно отсюда:

SNORT представляет собой систему IDS (Intrusion Detection System) с открытым исходным кодом, которая позволяет обнаружить любую подозрительную сетевую активность, сравнивая встроенные правила обнаружения вредоносного траффика с данными, проходящими по локальной сети организации. Фактически, так работает любой антивирус, но сходство на этом заканчивается, потому что предназначение у этих систем совершенно разное, очень важно правильно понимать цели и задачи систем IDS и не путать их с другими средствами защиты.

Система IDS предназначена для того, чтобы блокировать действия злоумышленника на стадии изучения вашей сети :

  • обнаружить подозрительную сетевую активность,
  • выявить известные инструменты для анализа и взлома сетей, используемые злоумышленником
  • и при возможности воспрепятствовать противоправной деятельности.

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

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

Настройка

Технология IDS бесплатна, но относительно сложна в установке и поддержке, скорее всего, вам не удастся просто установить IDS SNORT (как мы это делаем с брандмауэром и антивирусом) и забыть о нем. Программа и базовый набор правил обнаружения скачиваются с сайта snort.org . Если оставить все настройки системы по умолчанию, то вы получите множество уведомлений о потенциально небезопасных действиях в локальной сети, даже команда ping будет вызывать соответствующую тревогу. Придется потратить время, чтобы изучить систему, разобраться в том, как работают правила обнаружения и произвести соответствующие настройки, но это позволит избежать многих сотен или даже тысяч избыточных уведомлений и избавит системного администратора от головной боли.

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

IDS работает под Linux, Windows, SunOS и с другими операционными системами.

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

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

Сегодня о безопасности беспроводных сетей говорят часто и много, но взлом сети воспринимается как что-то очень далёкое. Мы уже публиковали материал о том, как взломать защиту WEP. Кроме того, через некоторое время вышло продолжение о том, как защитить сеть. Сегодня же наше внимание будет посвящено инструментам проверки защиты беспроводной сети. А также системам обнаружения атак - своеобразной "пожарной сигнализации" вашей WLAN.

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

Однако, не всё так печально, как кажется. В природе существуют способы для оценки защищённости беспроводной сети, несмотря на кажущуюся абсурдность сочетания слов "безопасность" и "беспроводная сеть". Системы распознавания атак (Intrusion Detection Systems - IDS) позволяют обнаружить возможные способы вторжения ещё до того, как они произойдут, пока враг ищет лазейку. Конечно, такие системы не могут гарантировать полную защищённость (а что, кстати, может?), но в сочетании с брандмауэрами и другими средствами защиты они могут оказаться весьма полезными. Принято считать, что IDS это своего рода охранная сигнализация: то есть она лишь оповещает об атаке, оставляя работу с атакующим на другие системы и средства (вплоть до физических).

Рис. 1. Snort IDS.


Рис. 3. Linksys WRT54G.

Ниже мы будем приводить примеры на основе WRT54G с прошивкой OpenWRT RC 2 (с кодовым названием "White Russian"). На самом деле существует множество дистрибутивов Linux для беспроводных маршрутизаторов, но мы остановились именно на прошивке OpenWRT, поскольку она простая, "лёгкая" и поставляется в пакетном виде наподобие Debian Linux.


Рис. 4. OpenWRT в работе.

Предупреждение. Загрузка OpenWRT, Snort Wireless или других альтернативных версий прошивки в WRT54G лишает гарантии. Перед тем, как начать прошивку альтернативной версии, рекомендуем скачать копию текущей версии прошивки

Мы не будем детально рассматривать установку OpenWRT, так как на сайте OpenWRT можно найти прекрасное руководство по инсталляции . После завершения установки можно подключиться к маршрутизатору при помощи Telnet () и насладиться результатом.

После установки OpenWRT на маршрутизатор, можно скачивать и устанавливать программу Snort Wireless . Всё это можно сделать через упомянутую пакетную систему OpenWRT - выполнить команду ipkg со следующими параметрами.

ipkg install http://nthill.free.fr/openwrt/ipkg/testing/20041204/snort-wireless_2.1.1-1_mipsel.ipk

Некоторым может не понравиться, что этому пакету уже больше года. Но ничего страшного в этом нет, поскольку все необходимые функции IDS здесь присутствуют, а все более поздние правила Snort можно тоже скачать через ipkg (подробнее: OpenWRT tracker page ). Если вы решили организовать точку доступа на ПК, то можете скачать исходный код Snort Wireless и скомпилировать его прямо на компьютере. Отметим, что при этом следует добавить флаг --enable-wireless , иначе предпроцессоры Wi-Fi не будут работать.

Snort Wireless работает подобно обычному Snort, однако специально предназначен для беспроводных точек доступа, позволяя эффективно защитить их от атак. В частности, он содержит новый протокол правил, названный wifi и позволяющий IDS правильно выделять беспроводной трафик, типичный для распространённых атак на WLAN. Например, тех же атак при помощи Netstumbler или попыток взлома WEP. Использование протокола wifi в Snort Wireless очень похоже на настройку обычных правил для Snort, но с одним исключением: вместо ввода IP-адресов и портов первого и второго узлов, следует использовать их МАС-адреса.

На этом этапе у нас есть работающий Snort Wireless. Переходим к его настройке для использования в выбранной сети. При запуске ipkg Snort устанавливается в каталог /etc/snort на маршрутизаторе. Как и другие программы для Unix, Snort использует редактируемый конфигурационный файл, где можно указать информацию о сетевом окружении и шаблонах различных атак, которые нужно отслеживать. Файл носит название snort.conf (Рис. 5 ) и располагается в каталоге /etc/snort . Его нужно открыть в любом текстовом редакторе (если такового на маршрутизаторе нет, скачайте с помощью ipkg).


Рис. 5. Конфигурационный файл snort.conf.

Теперь можно настроить все необходимые параметры сети, включая имя точки доступа, на которой работает IDS, и MAC-адреса тех клиентов, которых нужно отслеживать. Здесь можно настроить множество параметров, так что внимательно просмотрите все из них, чтобы ничего не пропустить.

В частности, обратите внимание на предпроцессоры, специфичные для Wi-Fi в Snort Wireless. Они включают предпроцессоры для определения пассивного сканирования сети с помощью программ вроде NetStumbler и попытки подмены MAC-адресов. Мы решили рассмотреть важные предпроцессоры отдельно.


Рис. 6. Предпроцессор AntiStumbler позволяет оповещать об атаке recon.

  • AntiStumbler . Такие программы, как NetStumbler и MacStumbler (Рис. 6 ), используют для обнаружения точек доступа нулевые SSID. Эти SSID работают как широковещательные и заставляют другие точки доступа прислать свои SSID на запросивший узел. Подобная функция полезна при поиске доступных беспроводных сетей. Предпроцессор AntiStumbler распознаёт рассылку слишком большого количества нулевых SSID с одного MAC-адреса и может поднять тревогу.
    Примечание. Этот предпроцессор не позволяет определять такие программы, как Kismet , поскольку те всего лишь пассивно прослушивают кадры 802.11, а не посылают запросы.
  • DeauthFlood . Эта атака была подробно описана в нашем материале о взломе WEP . Используется для отключения хостов от точек доступа и принудительной активации попытки повторного подключения, что даёт дополнительные пакеты для анализа во время взлома WEP. Кроме того, атаку можно использовать для "отказа в обслуживании" (Denial of Service, DoS) точки доступа. Предпроцессор DeauthFlood распознаёт этот тип атаки, подсчитывая количество кадров деаутентификации в единицу времени и, в случае необходимости, поднимает тревогу.
  • AuthFlood . Атака похожа на предыдущую, но предпроцессор AuthFlood определяет слишком частое число попыток аутентификации, то есть попыток подключения клиентов к беспроводной сети, что может использоваться в качестве DoS-атаки на точку доступа.
  • MacSpoof . Один из наиболее эффективных способов ограничения доступа к точке доступа - это создание списка MAC-адресов разрешённых клиентов. К сожалению, атакующий может подделать MAC-адрес своей машины и подключиться к точке доступа. Препроцессор MacSpoof проверяет номера пакетов и при обнаружении каких-либо несоответствий, указывающих на возможную подмену MAC-адреса, поднимает тревогу.
  • RogueAP . Чужие ("вражеские") точки доступа маскируются под обычные для того, чтобы пользователь ошибочно подключался к ним и передавал какие-либо личные данные. Этот предпроцессор пока не реализован , однако в будущих выпусках он сможет сообщать о близости чужих точек доступа.

Кроме того, Snort Wireless включает множество предопределённых правил для огромного количества ситуаций. В зависимости от конфигурации сети, некоторые из правил могут оказаться очень удобными. Например, все правила web, если в вашей сети работает web-сервер. Для активации правила достаточно просто убрать комментарий с соответствующей строки в конфигурационном файле Snort. Отдельные наборы правил по умолчанию сохраняются в каталоге /etc/snort/rules , причём любые из них можно просмотреть при помощи текстового редактора. Правила в наборах заданы точно так же, как и в самом Snort. Кстати, следуя примерам, можно легко написать правило самостоятельно.


Рис. 7. Правило Snort обнаружило машину, сканирующую порты.

В работе

Когда файл snort.conf готов, можно запускать Snort. При запуске можно указать множество параметров, которые определяют всё, начиная от вывода и заканчивая режимом работы. Для начала давайте запустим Snort со следующими параметрами (в строек Telnet).

snort -D -A full

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

Теперь, когда Snort работает, можно подумать над дополнительными способами защиты беспроводной сети. Скажем, можно обратиться к Kismet - утилите, подобной Snort, которую можно развернуть в качестве дополнительной системы обнаружения атак. Snort работает лишь на третьем уровне модели OSI - сетевом, отвечающем за IP и другой трафик. А Kismet работает на втором уровне - канальном, ответственном за кадры Ethernet. Таким образом, развёртывание обеих систем в паре позволит существенно повысить общую защищённость.


Рис. 8. Kismet в работе.

Можно настроить Snort на запись журналов в базу данных, что упрощает дальнейший анализ. Дэниэл Уолтер (Daniel Walther) написал руководство о том, как настроить запись в базы MySQL и PostgreSQL. Если вы используете Gentoo Linux на машине, работающей в качестве точки доступа, то можно пойти дальше: установить Apache и настроить отображение журналов через web. На сайте Gentoo Wiki можно найти подробное описание подобной настройки.


Рис. 9. Просмотр журналов Snort через MySQL, ACID и Apache.

Заключение

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

Наконец, не забывайте, что для эффективной защиты беспроводной сети необходимо постоянно обновлять как Snort, так и правила. Не забывайте регулярно посещать Snort Wireless , а также ipkg package tracker (для инсталляций OpenWRT) или Snort rules page (для остальных).

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

В статье будет рассмотрен пример реализации системы IDS на базе OS Debian и Snort для мониторинга внутреннего сетевого периметра, включающей подсистемы:
— сервис обнаружения вторжений Snort ;
— сервер БД MySQL для хранения записей событий атак, полученный от Snort;
— интерфейс анализа, обработки и визуализации событий Snort (nginx, php5-fpm, BASE).

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

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

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

# apt-get install ethtool
# nano /etc/rc.local

Ethtool --offload eth1 rx off tx off ethtool -K eth1 gso off ethtool -K eth1 gro off ...

где «—offload eth1 rx off tx off» — отключение определения checksum для входящих и исходящих пакетов; а «gso (generic segmentation offload) off» и «gro (generic receive offload) off» — отключение функции передачи и приема пакета без участия ЦП.

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

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

# mysql -u"root" -h"MYSQL_SERVER_IP" -p"ROOT_PASSWORD"

Mysql> create database snort; mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@"SNORT_SERVER_IP_ADDRESS"; mysql> SET PASSWORD FOR snort@"SNORT_SERVER_IP_ADDRESS"=PASSWORD("SNORT_USER_PASSWORD"); mysql> exit;

Установка Snort

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

# apt-get install snort-mysql

В процессе установки необходимо указать режим запуска Snort (по-умолчанию «boot»), а также интерфейсы и сетевые адреса внутренней сети. В случае необходимости можно указать несколько интерфейсов или адресов через пробел. Например:

Eth1 eth2 eth3 192.168.1.0/24 192.168.2.0/24 192.168.3.1/32

Активируем режим «promiscuous mode», позволяя Snort просматривать содержимое пакетов, проходящих через интерфейсы, а также указываем параметры подключения к БД.

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

# cd /usr/share/doc/snort-mysql
# zcat create_mysql.gz | mysql -u"snort" -h"MYSQL_SERVER_IP" -p"SNORT_USER_PASSWORD" snort

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

# rm /etc/snort/db-pending-config

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

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

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

# apt-get install nginx-light php5-fpm libphp-adodb php5-gd php-pear
# pear install --alldeps Image_Canvas channel://pear.php.net/Image_Canvas-0.3.5
# pear install --alldeps Image_Graph channel://pear.php.net/Image_Graph-0.8.0

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

# nano /etc/php5/fpm/php.ini

Date.timezone = Europe/Moscow

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

Error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

Error_reporting = E_ALL & ~E_NOTICE

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

# cd /etc/nginx/sites-enabled
# mv default snort
# nano snort

Server { listen 8080; server_name snort; root /var/www/snort-base; index index.php; location @rewrite { rewrite ^/(.*)$ /index.php?_url=/$1; } location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } }

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

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

# wget http://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base-1.4.5.tar.gz -qO- | tar xvzpf - -C /var/www/ && mv /var/www/base-1.4.5 /var/www/snort-base
# chmod -R 0770 /var/www/snort-base && chown -hR www-data:www-data /var/www/snort-base

Перезапустим веб-сервисы:

# /etc/init.d/php5-fpm restart
# /etc/init.d/nginx restart

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

    Path to adodb: /usr/share/php/adodb;
    Укажем параметры подключения к БД Snort;
    Установим пользователя для авторизации в BASE;
    Процесс настройки BASE завершается созданием таблицы BASE AG — «Create BASE AG» и переходом по ссылке ‘step 5’.

Запустим snort:

# service snort start

Теперь зафиксированные Snort’ом атаки будут сохраняться в БД и доступны через веб-интерфейс BASE.

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

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

Начну с цитаты: «Основная проблема информационной безопасности, как правило, связана не с наличием систем обеспечения ИБ, а с обработкой и анализом результатов их работы». Попробуем разобраться с тем, как и по каким критериям Snort генерирует события и оптимизировать их вывод и обработку, исключив все лишнее.

Конфигурационные файлы Snort расположены в каталоге /etc/snort. Информация об интерфейсах, которые «слушает» Snort, а также данные о сетевой адресации, указанные при устаноквки утилиты, хранятся в файле snort.debian.conf. Данные для подключения в БД — в файле database.conf. Информация о правилах Snort — в файле snort.conf. Рассмотрим его подробнее.

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- листов. К этому мы вернемся чуть позже.

Var RULE_PATH /etc/snort/rules ... var WHITE_LIST_PATH /etc/snort/rules var BLACK_LIST_PATH /etc/snort/rules

2. Декодеры
Одним из первых процессов, которые выполняет Snort над пакетом — обработка декодерами, задачей которых является определение базового протокола в пакете (ETHERNET, IP, TCP и т.д.), однако содержимое пакета не обрабатывается, а передается для последующей обработки preprocessor’ам и detection engines.

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

Config disable_ipopt_alerts

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

Config ignore_ports: 53

3. Настройка detection engine
В работе detection engine может быть использована PCRE — Perl-совметсимая библиотека поиска по шаблону. В данном разделе можно оптимизировать параметры поиска, а также его метода.

5. Настройка preprocessors
Надо было это сообщить еще в самом начале, но сообщу сейчас — Snort может работать в 2-х режимах — inline (IPS) и promiscuous mode (IDS). В первом случае Snort может управлять проходящими через него пакетами (изменять, блокировать), во втором — только мониторить и алертовать в случае подозрительной активности. В настройках препроцессора некоторые опции работают только в режиме inline, например опция preprocessor normalize_ip4 нормализует (если можно так выразиться) пакеты — исправляет TTL, TOS и т.д. Поскольку в контексте данной статьи речь идет про IDS — то мы опустим такие опции.

Препроцессинц работает непосредственно с содержимым пакета, используя наборы правил, такие как http_inspect_server, в котором определен http-метод, порты, необходимость анализа cookie, допустимые спец.символы и прочее, также доступны профили для веб-серверов.

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

Output log_tcpdump: tcpdump.log

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

Output alert_fast: snort.log 10M

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

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

Snort rules

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

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

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

# grep "sid:527" -R /etc/snort/rules/

/etc/snort/rules/bad-traffic.rules:alert ip any any -> any any (msg:"BAD-TRAFFIC same SRC/DST"; sameip; reference:bugtraq,2666; reference:cve,1999-0016; reference:url,www.cert.org/advisories/CA-1997-28.html; classtype:bad-unknown; sid:527; rev:8;

Разберем правило:

    ip — протокол;
    первые «any any» — SRCIP и SRCPort, вторые — DSTIP и DSTPort соответственно;
    "->" — указывает направление пакета, также можно использовать "";
    msg:"BAD-TRAFFIC same SRC/DST" — сообщение, геренируемое при срабатываении алерта;
    параметр sameip сообщает о том, что правило должно срабатывать в случае, если SRCIP и DSTIP идентичны;
    далее идут ссылки на внешние источники идетификации атаки;
    параметр classtype определяет классификацию атаки;
    sid — уникальный идетификатор правила;
    параметр rev указывает ревизию данного правила.

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

Alert ip any any -> ! any (msg:"BAD-TRAFFIC same SRC/DST"; sameip; reference:bugtraq,2666; reference:cve,1999-0016; reference:url,www.cert.org/advisories/CA-1997-28.html; classtype:bad-unknown; sid:527; rev:8;

Перезапустим Snort:

# service snort restart

Рассмотрим еще один пример — попытку получить доступ к директории backup на web-сервере:

Правило имеет следующий вид:

Alert tcp $EXTERNAL_NET any ->

Добавим в исключение хосты администраторов:

Alert tcp ! $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WEB-MISC backup access"; flow:to_server,established; uricontent:"/backup"; nocase; classtype:attempted-recon; sid:1213; rev:5;)

Также можно указать IP-адреса администраторов в качестве переменной в snort.conf и использовать такую переменную для исключения из правил. Кроме этого, Snort использует white\black листы, в которых можно указывать IP-адреса хостов и сетей. Пример:

Preprocessor reputation: \ blacklist /etc/snort/default.blacklist whitelist /etc/snort/default.whitelist

P.S.
Станадртный набор правил Snort (community-rules) распространяется бесплатно, расширенный, содержащий наиболее актуальные сигнатуры известных атак -по платной подписке.
Подробный мануал по Snort на английском языке можно найти по ссылке .
На этом все! Если есть дополнения, замечания, с удовольствием готов обсудить в комментариях.

  • Открытые исходные тексты. Исходные тексты Snort открыты, он переносим практически на любую разновидность операционной системы UNIX. Доступны также версии для Windows и других операционных систем.
  • Легковесность. В силу эффективной реализации Snort не требует мощного оборудования (см. врезку "Оборудование"). Это позволяет анализировать трафик в сети 100 Мбит/с практически в реальном масштабе времени, что кажется невероятным, если представить, что делается с каждым пакетом.
  • Индивидуальные правила Snort. Snort предлагает простой способ расширения и индивидуализации программы путем написания собственных правил или сигнатур. Обширная документация помогает научиться этому, не говоря уже о сетевых форумах и справочных списках.

Установка Snort

Snort устанавливается довольно просто.

  1. В качестве предварительного условия требуется установить пакет libpcap. Если вы загрузили любой из пакетов из лекций с 4 по 6, то libpcap уже установлен. В противном случае его можно загрузить с http://www.tcpdump.org .
  2. После загрузки этих библиотек просто возьмите файл с компакт-диска, прилагаемого к книге, или загрузите самую свежую версию с web-сайта.
  3. Когда файл окажется в вашей машине, распакуйте его и выполните команды компиляции:

    ./configure make make install

Запуск Snort

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

Режим анализа пакетов

В этом режиме Snort действует просто как анализатор, показывая нефильтрованное содержимое среды передачи . Конечно, если вам требуется только анализатор, можно применить Tcpdump или Ethereal, однако данный режим позволяет убедиться, что все работает правильно и Snort видит пакеты. В табл. 7.1 перечислены ключи, которые можно использовать при выполнении Snort в режиме анализа. Необходимо включить как минимум команду -v , поскольку иначе Snort по умолчанию будет выполняться в одном из двух других режимов ( протоколирования или обнаружения вторжений ), ожидая других опций.

Испробовать этот режим можно, просто набрав в командной строке

Выдача будет практически такой же, как от анализаторов, описанных в предыдущей лекции. Для выхода нажмите Ctrl+C, и вы увидите сводные данные сеанса анализа пакетов.

Требования к оборудованию для сетевых систем обнаружения вторжений

Есть ряд моментов, которые нужно учитывать при выборе оборудования для работы сетевых систем обнаружения вторжений . Поскольку системы обнаружения, как правило, активно используют процессор и дисковое пространство, настоятельно рекомендуется, чтобы сетевая система обнаружения вторжений выполнялась на специально выделенном компьютере. Однако, поскольку система функционирует на платформе Linux, она все равно потребует меньше оборудования, чем эквивалентная машина Windows. При этом предполагается, что не используется графическая среда X-Window, которая для Snort не нужна, но существенно увеличивает нагрузку на процессор.

Для работы Snort желательно иметь процессор Intel 500 МГц, хотя можно обойтись и ПК с 266 МГц. Если вы храните файлы журналов локально, вам потребуется также по крайней мере несколько гигабайт доступного дискового пространства. Должна применяться сетевая плата 100 Мбит/с, чтобы исключить возможность заторов, если вы будете анализировать сеть 100 Мбит/с. Авторы Snort утверждают, что программа будет работать в активно используемом сегменте сети 100 Мбит/с без потери пакетов. Однако, если ваша сеть перегружена, то, возможно, придется несколько повысить требования к оборудованию - до процессора 1 ГГц. Так или иначе, необходимым требованиям легко удовлетворит любая машина, кроме разве что самых старых.

Режим протоколирования пакетов

Этот режим аналогичен предыдущему, но позволяет записывать пакеты на диск для последующего анализа, аналогично функциям протоколирования в описанных выше анализаторах. Чтобы запустить Snort в режиме протоколирования , воспользуйтесь той же командой, что и для режима анализа (-v , -d и/или -e ), но с добавлением ключа -l каталог_журналов , задающего маршрутное имя каталога журналов, в которые Snort будет записывать пакеты. Пример:

snort -vde -l /var/log/snort

Эта команда создаст файлы журналов в каталоге /var/log/snort. Убедитесь, что указанный каталог существует, иначе программа не будет загружаться правильно. Snort протоколирует пакеты по IP-адресам, создавая отдельный каталог для каждого из них. Если вы протоколируете трафик в большой локальной сети с множеством адресов, ситуация может быстро выйти из-под контроля. Поэтому можно применить другую настройку, чтобы Snort протоколировал пакеты относительно вашей домашней сети, в которой вы находитесь. Это делается с помощью команды -h домашняя_сеть , где домашняя_сеть - диапазон IP-адресов локальной сети в нотации с косой чертой. В этом случае Snort будет помещать пакеты в каталоги на основе нелокального IP-адреса в пакете, что позволяет легко распознавать "неместный" трафик. Если оба хоста, целевой и исходный, являются локальными, Snort помещает пакет в каталог, соответствующий стороне с большим номером порта , как бы отдавая предпочтение подключающемуся хосту перед серверным. В случае равенства номеров портов Snort по умолчанию использует исходный адрес в качестве каталога для размещения данных пакета. Сейчас это может показаться несущественным, но если вы протоколируете сигналы о вторжении, важно быстро определить, откуда исходит подозрительный трафик.

Учитывая приведенные соображения, командной строке для режима протоколирования пакетов целесообразно придать следующий вид:

snort -vde -l /var/log/snort -h 192.168.1.0/24

Тем самым внутренняя сеть задается диапазоном 192.168.1.1-254.

Можно также применить опцию -b для протоколирования всех данных в одном бинарном файле , пригодном для последующего чтения с помощью анализатора пакетов, такого как Ethereal или Tcpdump. При протоколировании с опцией -b нет необходимости определять домашнюю сеть, так как данные будут записываться последовательно в один большой файл. Этот метод намного быстрее для протоколирования работы активно используемых сетей или на медленных машинах. Он также облегчает анализ с помощью более развитых средств, которые приходится применять при просмотре больших объемов перехваченных сетевых данных.

Режим обнаружения вторжений

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

snort -de -l /var/log/snort -h 192.168.1.0/24 -c /etc/snort/snort.conf

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

Обратите внимание, что я не использовал ключ -v для запуска Snort в режиме обнаружения вторжений . Если, помимо сопоставления всех пакетов с сигнатурами, заставлять Snort еще и выдавать на экран сигналы тревоги, это может привести к потере пакетов, особенно в загруженных сетях. Можно также не задавать ключ -e , чтобы повысить производительность, если не требуется протоколировать работу канального уровня. Если убрать ключ -l , то Snort будет использовать подразумеваемый каталог протоколов /var/log/snort. Опять-таки убедитесь, что этот каталог существует, иначе Snort не запустится. Можно также задать ключ -b , если вы хотите направить протокол в бинарный файл для последующего анализа отдельной программой. Команда для запуска Snort в режиме обнаружения вторжений в результате будет выглядеть следующим образом:

snort -h 192.168.1.0/24 -c /etc/snort/snort.conf

Режимы сигнализации Snort

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

Таблица 7.2. Опции режима сигнализации Snort
Опция Описание
-A full Полная информация о сигнале, включая прикладные данные. Это подразумеваемый режим сигнализации. Он будет использоваться при отсутствии спецификаций
-A fast Быстрый режим. Протоколируются только заголовки пакетов и тип сигналов. Это полезно в очень быстрых сетях, но если требуется дополнительная судебная информация, необходимо использовать опцию full
-A unsock Посылает сигнал в UNIX- сокет с указанным номером, на котором может слушать другая программа
-A none Отключает сигналы тревоги

Имеются также опции вывода syslog , smb и database , но они используют не ключ -A , а отдельные модули вывода и предлагают более широкое разнообразие выходных форматов. Эти опции следует конфигурировать во время компиляции при помощи ключей инструкции configure.

  • SMB посылает сигналы тревоги службе всплывающих окон Windows, поэтому вы увидите сигналы всплывающими на вашем экране или экране машины, осуществляющей мониторинг. Однако, прежде чем использовать эту опцию, желательно тщательно настроить систему обнаружения вторжений , иначе вы не сможете ничего делать, кроме как наблюдать всплывающие то и дело окна! Для того чтобы включить этот метод сигнализации, при установке Snort задайте в инструкции configure опцию enable-smbalerts . Затем нужно запустить snort со следующими аргументами

    snort -c /etc/snort.conf -M рабочие_станции

    задав после -M имена хостов Windows, на которые отправляются сигналы.

  • Syslog посылает сигналы тревоги Syslog-серверу UNIX. Syslog - это служба, выполняющаяся на машине (обычно UNIX), которая может подхватывать и сохранять различные файлы журналов. Это помогает консолидировать журналы вашей сети в одном месте, а также затрудняет хакеру удаление протоколов вторжений . В данной книге не рассматриваются особенности настройки сервера Syslog, но если он у вас есть, то при наличии в командной строке ключа -s Snort будет посылать сигналы туда. Можно также определить в конфигурационном файле различные форматы Syslog, которые рассматриваются в следующем разделе.
  • Snort напрямую поддерживает четыре вида вывода в базу данных посредством своих модулей вывода. К числу поддерживаемых форматов принадлежат MySQL , PostgreSQL, Oracle и unixODBC. Это должно удовлетворить потребности большинства пользователей баз данных . И, естественно, если ваша база данных не поддерживается, можно взяться за проект по написанию нужного модуля расширения. Модуль вывода в базу данных требует как параметров времени компиляции, так и настроек в конфигурационном файле. Более подробные сведения - в следующем разделе.