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

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

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

Основным его плюсом является доступность, и возможность редактировать его работу под свою конкретную рабочую сеть. Программа предназначена для работы как в малых, так и больших организациях. Так же не маловажна возможность редактирования собственных уникальных правил исходя из требований безопасности конкретной организации (например, запрет на доступ персонала к социальным сетям).

Из минусов можно выделить неудобность настройки и установки на некоторых ОС (например, Windows), отсутствие единого достаточно полного и подробного описания настройки и разработки собственного набора правил.

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

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

1. Установка и настройка IDS Snort

1.1 Snort: Установка на ОС Windows XP

При установке Snort на операционную систему Windows могут возникнуть некоторые сложности. Поэтому в этой работе уделяется достаточно подробная часть установки и возможностей настройки. Для начала нужно скачать требуемые программы на рабочий компьютер.

Правила для Snort.

Все вышеуказанное скачивается с официальных сайтов этих приложений.

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

var RULE_PATH c:\snort\rules

var SO_RULE_PATH c:\snort\so_rules

var PREPROC_RULE_PATH c:\snort\preproc_rules

dynamicpreprocessor directory c:\snort\lib\snort_dynamicpreprocessor

dynamicengine c:\snort\lib\snort_dynamicengine\sf_engine.dll

#dynamicdetection directory /usr/local/lib/snort_dynamicrules

Находим подобные строчки в конфигурационном файле и заменяем теми которые предоставлены выше. После этого пробуем протестировать приложение. Запускаем командную строку и переходим к каталогу приложения в раздел "bin". Введем команду "snort -W"

Рис. 1.1. Проверка работы

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

С:\Snort\bin\snort -i 3 -c C:\snort\etc\snort.conf -l C:\snort\log -A console

Разберем теперь команду которую мы ввели. "- i 3" означает что мы будем просматривать интерфейс который имеет ID= 3 в списке наших интерфейсов. Затем мы указали путь до файла конфигурации и путь до каталога куда следует записывать "log" перехваченных пакетов. "-A console" обозначает что тревожные пакеты будут выявляться у нас в консоли. Если во время обработки возникают какие либо неполадки устраняем их по ходу выявления. Snort указывает строку и вид ошибки при сборке. Если все сработало, то мы ничего не увидим до тех пор пока не сработает одно из запущенных правил. Что бы задействовать одно из них попробуем имитировать сетевую атаку и запустим подозрительный пакет по нашей локальной сети. Для этого к примеру откроем командную строку и введем следующее: "Ping 192.168.1.16". Snort перехватит попытку прослушать хост под адресом 192.168.1.16\24 и выведет сообщение и информацию об подозрительном действии в сети. К сожалению у подобных IDS систем есть сильный недостаток -это ложные срабатывания. В связи с этим для того что бы Snort был полезным и не вводил в заблуждение, нужно достаточно емко и четко прописывать правила и разграничивать просматриваемые сети, что бы избежать этих ложных срабатываний.

Рис. 1.2. Вывод Alert сообщений

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

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

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

Таблица.1.1. Опции режима анализа пакетов

Рассмотрим пример использования этого режима на практике и введем команду:

"Snort -vde -i3", где -i3 -номер интерфейса с которого следует считывать пакеты. Snort начинает быстро передавать на командную строку множество пакетов, что бы отключить режим нажмите "ctrl+x".

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

На рисунке изображена достаточно подробная информация заложенная в пакете, а именно информация канального и прикладного уровня.

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

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

snort -vde -l /snort/log/

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

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

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

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

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

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

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

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

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

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

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

Таблица 1.2. Опции режима сигнализации Snort

Эти опции следует конфигурировать во время компиляции при помощи ключей инструкции configure. К примеру, попробуем прописать создание файла в который будут заноситься враждебные пакеты или подозрительные. В файле конфигурации создадим строку в месте где прописывается "Step 6: Output", и дописываем строчку "output alert_fast: alert.ids", сохраняем и запускаем в режиме обнаружения или сигнализации, в папке \snort\log\alert.ids теперь будут записываться данные о подозрительных пакетах. Можно также вписать ключ "-A console " тогда подозрительные пакеты будут дублироваться в консоли, так сказать нагляднее продемонстрированы администратору. Информация о режимах работы Snort предоставлена на сайте: http://www.uchi-it.ru/2/1/7.html.

1.6 Взаимодействие с БД и Mysql

Snort напрямую поддерживает четыре вида вывода в базу даных посредством своих модулей вывода. К числу поддерживаемых форматов принадлежат MySQL, PostgreSQL, Oracle и unixODBC. Это должно удовлетворить потребности большинства пользователей баз данных. И, естественно, если база данных не поддерживается, можно взяться за проект по написанию нужного модуля расширения. Модуль вывода в базу данных требует как параметров времени компиляции, так и настроек в конфигурационном файле.

2. Причины ложных срабатываний и способы их устранения. Формирование правил

2.1 Типичные причины ложных срабатываний

Работа системы мониторинга сети

Многие организации используют системы мониторинга сети, такие как HP OpenView или WhatsUp Gold, чтобы следить за системами в своей сети. Они характеризуются высокой сетевой активностью опроса и обнаружения. Для опроса состояния эти системы обычно применяют SNMP или аналогичный протокол, но они могут также использовать эхо-тестирование и другие, более назойливые проверки. По умолчанию большинство систем обнаружения вторжений рассматривают эту активность как вредоносную или, по крайней мере, подозрительную. В большой сети мониторинг может порождать тысячи сигналов тревоги в час, если система обнаружения вторжений настроена для отслеживания такой деятельности. Этого можно избежать, игнорируя активность с участием IP-адреса системы мониторинга. Можно также исключить из базы данных соответствующие сигналы тревоги, если их отслеживание не представляет для вас особой важности.

Пользовательская активность

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

2.2 Поведение, напоминающее "троянскую" программу или "червя"

Вирусы и вирусоподобные программы и программное обеспечение ("черви ", "Троянские кони" и подобные программы), нередко используют сетевые интерфейсы и другие средства, для получения доступа и совершения каких либо вредоносных действий (получение доступа к управлению, изменению, удалению, копированию информацией атакуемого пользователя). Подобную активность помогают пресечь IDS системы, однако подобные сигнатуры могут содержать и обычные безвредные приложения, и поэтому следует отслеживать источники сигнатур для более точного установления вредным ли является пакет или нет. Это поможет избежать чрезмерного количества ложных срабатываний.

Длинные базовые цепочки аутентификации

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

Аутентификационная активность базы данных

Некоторые сетевые системы обнаружения вторжений следят за деятельностью по администрированию баз данных. Теоретически в производственных базах данных не должно наблюдаться высокой административной активности, а ее наличие может служить признаком того, что некто пытается произвести какие либо действия. Однако во многих базах данных использование идет параллельно с разработкой, отсюда и большой объем администрирования. Эта деятельность, хотя и вполне законная, будет порождать множество сигналов тревоги. Если ваша база данных находится в состоянии непрерывного развития, то вам, вероятно, следует отключить эти сигналы, по крайней мере, пока база не стабилизируется и не перейдет в режим производственной эксплуатации.

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

2.3 Примеры сигнатур сетевых систем обнаружения вторжений

snort операционный сетевой вторжение

Основной принцип по которому действуют сетевые IDS это проверка сигнатур и сравнение их с известными, если произошло совпадение значит сигнатура определяется как подозрительная. Как пример можно рассмотреть атаку которая четко будет идентифицироваться IDS -это атака cmd.exe направленная против Информационного сервера Интернет -Web сервера корпорации Microsoft. Эта атака применяется Интернет - "червями" и вирусами, такими как Nimda и Code Red. Атакующий "червь" или человек пытается выполнить в каталоге с правом на запись копию программы cmd.exe - командного интерпретатора Windows, используя переполнение буфера в модуле IIS, называемом Internet Server API (ISAPI). В случае успеха хакер или червь получает доступ к командной строке на этой машине и может произвести значительные разрушения. Однако команда для копирования этого файла является очевидной, и нет причины для ее легального выполнения пользователями через сеть с помощью IIS. Поэтому, если вы видите подобную активность, то весьма вероятно, что это попытка вторжения. Проверяя полезную нагрузку пакета и разыскивая слова cmd.exe, сетевая система обнаружения вторжений может идентифицировать данную атаку. На листинге показан один из таких пакетов. Шестнадцатеричное представление содержимого находится слева, а перевод в текст - справа.

000: 47 45 54 20 2F 73 63 72 69 70 74 73 2F 2E 2E 25 GET / scripts/..%

010: 35 63 25 35 63 2E 2E 2F 77 69 6E 6E 74 2F 73 79 5c%5c../winnt/sy

020: 73 74 65 6D 33 32 2F 63 6D 64 2E 65 78 65 3F 2F stem32/cmd.exe?/

030: 63 2B 64 69 72 0D 0A c+dir..

2.4 Синтаксис формирования правил в Snort

Перед тем как начать писать правила для отслеживания трафика, следует научиться правильно их составлять и ознакомиться с синтаксическими особенностями. Лучше всего будет разобрать как формируется правило на примере.

alert tcp any any>192.168.0.0/24 80

(content:"|11 01 b6 a2|"; msg:"example rule";)

Alert - генерировать сигнал с использованием выбранного метода и записать информацию о пакеты в журнальный файл;

Tcp - протокол, который следует проверять на наличие условий.

Далее по порядку вводится IP адрес и порт отправителя через стрелочку адрес и порт получателя, то есть кому направлен пакет. В скобочках указываются модули которые следует учитывать при фильтрации пакета. В нашем примере будут помечаться пакеты в которых будет найдено совпадение в 16-ричном коде "00 01 86 a5" , и при совпадении с условиями пакет будет помечаться сообщением "mount access".

Заголовок правила имеет вид

<действие> <протокол> <отправитель> <порт> <направление> <получатель> <порт>

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

Попробуем написать правило, которое может отследить посещение пользователем какой-нибудь социальной сети, например "vkontakte.ru". Для этого откроем любой из файлов папки \snort\rules\ и впишем туда правило

alert tcp any any > any any (msg:"ACCESS in Social web";content:"vkontakte";sid:1;)

Разберем это правило по командам. Это правило гласит что если в пакете передается параметр "vkontakte", то пакет фиксируется как тип alert и заносится в соответствующий файл отчета. Просматривается протокол tcp адреса сетей любые. В отчете такие пакеты будут помечаться сообщением "ACCESS in social web", что говорит нам о попытке доступа в социальную сеть. Теперь администратор при рассмотрения отчетов может подметить откуда и когда происходил выход, на не согласованный политикой безопасности сайт. Так же следует отметить наличие опции "sid1", она требуется для присвоения правилу определенного порядкового номера.

Рис. 2.1. Результат работы правила на vkontakte

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

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

2.5 Написание plug-in для Snort

Для того что бы написать plug -in для Snort потребуется скачать исходный код с официального сайта www.snort.org, затем нужно разархивировать полученный пакет и попасть в каталог \templates , где содержится четыре файла: sp_template.c, sp_template.h, spp_template.c, spp_template.h. Первые два файла используются для составления дополнения, а следующие два файла для препроцессоров. После создания дополнения нужно его интегрировать в Snort, чтобы он использовал его после компиляции. Интеграция состоит из трех шагов.

1)Изменить plugbase.h и вставить строку

#include

2)Изменить plugbase.c файл и в функции InitPlugins() добавить название функции после остальных.

3)Открыть файл Makefile.am и добавить имена файлов в список имен в строку "snort_sources". После этого выполняем "Automake".

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

2.6 Дополнительные утилиты для системы Snort

Analysis Console for Intrusion Databases (ACID) - аналитическая система, предоставляющая Web-интерфейс (используется PHP) для просмотра результатов анализа лог-файлов брандмауэров, NIDS, сетевых диагностирующих программ. Версия 0.9.6. работает в среде всех ОС, поддерживающих PHP (Linux, *BSD, Windows, Solaris). Лицензия - GNU GPL.

Рис. 2.2. Интерфейс программы ACID

Intrusion Detection Exchange Architecture (IDEA) - система распределенного контроля безопасности сети. Текущая версия - 1.0.2. Используя архитектуру клиент-сервер, она связывает множество NIDS-систем, объединяя их данные в информационный базис и обеспечивая анализ в режиме реального времени. IDEA реализована как системонезависимая программа, применяющая технологию Java. Распространяется по лицензии GNU GPL.

Рис. 2.3. Интерфейс программы IDEA

RazorBack - программа, работающая совместно со Snort и обеспечивающая при обнаружении вторжения предупреждение в режиме реального времени. Текущая версия - 1.0.3. Операционные системы: Unix, Windows NT. Лицензия - GNU GPL.

Рис. 2.4. Интерфейс программы RazorBack

SnortConf - графическая оболочка для Snort. Разработанная на основе библиотеки Curses, программа SnortConf предоставляет простой и интуитивно понятный интерфейс - меню по администрированию Snort. Версия - 0.4.2-1. Предназначена для POSIX-совместимых систем (Solaris, *BSD, Linux и т.д.). Лицензия - GNU GPL.

Рис. 2.5. Интерфейс программы SnortConf

IDScenter - графическая оболочка Snort-Win32 (рекомендуется использовать Windows NT4/2000/XP). Текущая версия - 1.1. IDScenter значительно облегчает задачи управления, контроля и мониторинга Snort IDS. Включает функции диагностики конфигурации, поддерживает сигналы тревоги Snort. При определении атаки можно запустить внешнее приложение. Распространяется по лицензии Freeware.

Рис. 2.6. Интерфейс программы IDScenter

IDS Policy Manager - инструмент изменения конфигурации и правил Snort. Легко добавляются новые сигнатуры. Может использовать популярные базы данных сигнатур: CVE, BugTraq, Mcafee. Версия -1.3.1. Операционные системы -Windows 2000/XP. Лицензия - Freeware.

Рис. 2.7. IDS Policy Manager

Информация об утилитах была получена с интернет ресурса: http://www.compdoc.ru/network/local/snort/.

Заключение

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

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

Литература

1. Обнаружение сетевых атак - Snort [Электронный ресурс]. - Режим доступа: URL: http://www.compdoc.ru/network/local/snort/ (дата обращения 25.05.11)

2. Энциклопедия сетевых протоколов [Электронный ресурс]. - Режим доступа: URL: http://www.protocols.ru/ (дата обращения 15.04.11)

3. Атаки на сеть [Электронный ресурс]. - Режим доступа: URL: http://big-bro.info/ataki-na-set/ (дата обращения 22.05.11)

4. Русская группа Snort [Электронный ресурс]. - Режим доступа: URL: http://www.snortgroup.ru/node/25 (дата обращения 27.05.11)

5. Ищейка по имени Snort [Электронный ресурс]. - Режим доступа: URL: http://www.osp.ru/win2000/2004/05/177049/ (дата обращения 29.05.11)

6. Snort установка и минимальная настройка [Электронный ресурс]. - Режим доступа: http://www.kanava.biz.nf/mod/pub/article.php?art=710 (дата обращения 25.05.11)

7. Учи IT [Электронный ресурс] - Режим доступа: URL: http://www.uchi-it.ru/2/1/7.html (дата обращения 10.04.11)

Размещено на Allbest.ru

Подобные документы

    Общие сведения о системах обнаружения вторжений и их назначение. Ключевые принципы функционирования и архитектура СОВ Snort. Моделирование и конфигурирование корпоративной сети и вторжений для проверки работоспособности системы обнаружения вторжений.

    дипломная работа , добавлен 20.10.2011

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

    контрольная работа , добавлен 17.01.2015

    Модели нарушителей глобальной информационной системы Интернет. Классификация угроз в соответствии с IT-Baseline Protection Manual. Реализация DoS/DDos атак. Программная реализация Snort: установка, препроцессоры и структура модулей обнаружения и вывода.

    дипломная работа , добавлен 05.06.2011

    Исследование и оценка возможности работы сетевой карты netFPGA как IPS системы. Установка программного обеспечения, обеспечивающего взаимодействие карты и пользователя. Система обнаружения вторжений Snort. Основные достоинства Microsoft Forefront TMG.

    курсовая работа , добавлен 11.11.2012

    Установка и настройка локального web–сервера и его компонентов. Конфигурационные файлы сервера Apache и их натройка. Настройка PHP, MySQL и Sendmail. Проверка работоспособности виртуальных серверов. Создание виртуальных хостов. Тест Server Side Includes.

    учебное пособие , добавлен 27.04.2009

    Способы применения технологий нейронных сетей в системах обнаружения вторжений. Экспертные системы обнаружения сетевых атак. Искусственные сети, генетические алгоритмы. Преимущества и недостатки систем обнаружения вторжений на основе нейронных сетей.

    контрольная работа , добавлен 30.11.2015

    Методическое обеспечение теоретических занятий по теме "Установка и настройка Windows XP на рабочей станции". Настройка системы безопасности Windows XP. Методическое обеспечение лабораторных занятий по данной теме. Порядок устранения возможных проблем.

    методичка , добавлен 07.02.2011

    Виды серверов баз данных. MySQL как наиболее приспособленная для применения в среде СУБД. Хранимые и присоединенные процедуры. Операционная среда серверов. Согласованность чтения и тупиковые ситуации. Установка и настройка MySQL Server 5.6 на Windows 7.

    курсовая работа , добавлен 28.12.2015

    Функции, позволяющие работать с базой данных MySQL средствами РНР. Соединение с сервером и его разрыв. Создание и выбор базы данных. Доступ к отдельному полю записи. Комплексное использование информационных функций. Запросы, отправляемые серверу MySQL.

    лекция , добавлен 27.04.2009

    Основные технологии веб-программирования. Методы отправки данных на сервер с помощью HTML-формы. PHP - Препроцессор Гипертекста. Сохранение данных в базе данных MySQL. Клиент-Сервер и технология CGI. Примеры использования PHP совместно с MySQL.

Открыты и используются во многих сетевых системах обнаружения вторжений . Также используется во многих гибридных IDS (Prelude , OSSIM) и поддерживается многими системами мониторинга безопасности (Cisco Secutity MARS).

Snort был создан Мартиным Рошем (Martin Roesch), затем основавшим компанию , которая продолжает его разработку и подерживает коммерческую аппаратную IPS на базе Snort. Sourcefire интегрирована с комплексной системой защиты Sourcefire 3D System – корпоративной системой управления угрозами, которая содержит также систему контроля доступа и различные инструменты мониторинга и анализа. Snort можно использовать бесплатно. Система работает в нескольких режимах:

  • режим сниффера – пакеты считываются из сети, информация о них выводится в потоковом режиме на консоль,
  • режим журналирования – пакеты записываются на диск,
  • режим NIDS – пакеты анализируются в соответствии с правилами, определенными пользователем,
  • режим встраивания – пакеты принимаются не через библиотеку libpcap (позволяет осуществлять низкоуровневое наблюдение за пакетами), а через iptables и могут быть отброшены в соответствии с правилами.

Дополнительные функциональные модули Snort:

  • Basic Analysis and Security Engine, BASE – веб-интерфейс для анлиза и просмотра логов
  • Sguil – TCL/TK интерфейс для мониторинга сетевой безопасности
  • RazorBack – реализация оповещения об обнаруженных сигнатур в реальном времени
  • ClamAV – потоковый антивирусный сканер
  • IDS Policy Manager – управление правилами Snort

Плюсы Snort – широкие возможности от использованных дополнительных модулей и открытость сигнатур. Минусы – сложность настройки при отсутствии удобной документации.

Snort – это фактический стандарт для предотвращения вторжений, разработанный Sourcefire, который насчитывает более 3,7 миллионов загрузок и более 225 000 зарегистрированных пользователей. Snort используют по всему миру чаще, чем любую другую технологию предотвращения вторжений. За последние десять лет сообщество Snort выросло в целую экосистему, пройдя путь от групп пользователей до разработки учебников и курсов, которые изучают в сотнях колледжей и университетов. Snort лучше известен специалистам по ИТ-безопасности, чем любая другая IPS-технология на рынке. Заказчики Sourcefire используют преимущества расширенной экосистемы Snort.

Snort 2.9.0

Наиболее важные улучшения:

  • Режим предотвращения атак (IPS) включает расширение возможностей подсистемы Stream (обработчик/сборщик TCP-потоков для контроля за отдельными сессиями) для работы в активном inline-режиме (snort выступает в роли шлюза и позволяет принимать решения о дальнейшем прохождении пакетов в момент их получения, а не на основе пассивного анализа трафика). Реакция для всех пакетов теперь задается через единый API, поддерживающий модули Stream, Respond и React. Добавлен новый модуль реакции - respond3, поддерживающий синтаксис как модуля resp, так и resp2, включая возможность блокирования и в конфигурациях с пассивным анализом трафика. В случае, когда Snort запущен в активном inline-режиме, теперь используется новый препроцессор для нормализации пакетов, позволяя интерпретировать пакеты тем же способом, что и получающий эти пакеты хост;
  • Задействование модуля DAQ (API для сбора данных, Data Acquisition API), который определяет множество разных методов доступа к получению пакетов, таких как libpcap, netfilterq, IPFW и afpacket. При использовании libpcap теперь требуется как минимум версия 1.0 данной библиотеки. Код DAQ может быть обновлен независимо от Snort, так как теперь является независимым модулем.
  • Обновлен код инспектирования HTTP-трафика (HTTP Inspect), который теперь может извлекать и использовать IP-адреса из HTTP-заголовков X-Forward-For и True-Client-IP;
  • Новая опция "byte_extract" позволяет использовать извлеченные в текущем правиле значения внутри следом идущих опций isdataat и byte_test, byte_jump, а также в содержимом distance/within/depth/offset;
  • В SMTP-препроцессоре реализована поддержка декодирования больших MIME-вложений, требующим передачи более одного сетевого пакета;
  • Возможность тестирования правил блокирования пакетов. В режиме Inline Test Mode пакеты не отбрасываются, а только отражаются в логе как подлежащие блокировке;
  • Новые опции правил для декодирования и инспектирования base64-блоков данных;
  • Улучшена работа кода по декодированию IPv6-пакетов с целью улучшения определения аномалий;
  • Добавлен пример создания приложений для обработки данных формате unified2, используемом для компактного хранения логов Snort;
  • Добавлен новый обработчик шаблонов, поддерживающий задействования аппаратных акселераторов, совместимых с Intel Quick Assist Technology, для ускорения сопоставления масок.

Snort версии 2.9.1 RC.

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

1. Что такое IDS.

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

Для того, чтобы узнать про атаки, ну или просто быть в курсе всех событий, происходящих на сервере, многие админы ежедневно просматривают журналы регистрации – логи. Но когда лог файл, например веб-сервера Apache, за день вырастает на 10 Mb, то приходиться автоматизировать процесс контроля безопасности сервера. Одним из решений являются IDS – системы обнаружения вторжения, эффективность которых за последние несколько лет значительно возросла, и теперь они являются неотъемлемой частью любой сетевой защиты.

Из многих разновидностей IDS (Intrusion Detection System), можно выделить две: основанные на анализе протокола (выявляющие пакеты несоответствующие стандартам), и основанные на анализе сигнатур (в пакетах ищется сигнатура атаки – строка (образец) указывающая на принадлежность данного пакета к вредному трафику. Такие IDS называют NIDS (Network Intrusion Detection System). В общем принцип действия NIDS можно описать так: весь трафик анализируется на наличие пакетов содержащих вредоносные данные, и если такой пакет находиться, то выполняются различные сигнализирующие действия (выводится сообщение на консоль, посылается почта, пишется в лог, отправляется Winpopup сообщение и.т.д.). Оба типа IDS имеют свои достоинства и недостатки, например анализ протоколов работает более медленно из-за преобразования пакета в вид доступный для анализа. Зато ложных тревог намного меньше, так как регистрируются действительно реальные отклонения от стандартов. IDS на основе анализа сигнатур более быстры, и к тому же легко настраиваются и обновляются (увидел новую уязвимость, добавил ее в базу, и твой IDS ее обнаружит). Но лучше все таки использовать IDS на основе двух методов анализа, это даст действительно прекрасный результат.

2. Краткий обзор IDS

На данный момент существует огромное количество IDS, каждая из которых обладает своими качествами и недостатками. Приведу краткое описание некоторых из них (данные сведения о программах взяты с сайта www.opennet.ru , там же вы можете и найти все эти IDS):

PortSentry

Программа позволяющая в реальном режиме времени определить и блокировать попытки сканирования UDP и TCP портов сервера. Определяются также скрытые попытки сканирования портов (SYN/half-open, FIN, NULL, X-MAS, oddball).

Система анализа и слежения (ведения логов) за проходящими пакетами, распознаются такие атаки как "buffer overflows, stealth port scans, CGI attacks, SMB probes, OS fingerprinting attempts". Присутствует возможность real-time извещения администратора при обнаружении атаки

Nidsbench

Система тестирования сети на предмет типовых уязвимостей и выяснения реакции установленной системы обнаружения попыток несанкционированного доступа. Присутствует неплохая подборка документации по NIDS.

Монитор TCP/IP трафика, способен вести логи о проходящем трафике, обнаруживать сканирования портов, флуд и некоторые виды атак.

Библиотека для построения NIDS систем, эмулирует TCP/IP стэк Linux 2.0.x, что позволяет не только перехватывать пакеты (хаотично идущий набор пакетов), как делает большинство снифферов (например, libpcap, tcpdump), но и отслеживать отдельные сессии (например, перехватывать SMTP трафик и разделять каждую SMTP сессию) с учетом дефрагментации и сборки TCP кусков пакетов. Работает под Linux, *BSD и Solaris.

Программа позволяет отследить и поместить в лог файл все данные проходящие через последовательный порт.

Это далеко не все IDS, и даже не самые известные, но эти легко найти.

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

3. Установка и настройка Snort

Для начала скачаем Snort с сайта www.snort.org .Вот прямая ссылка на последнюю версию на данный момент http://www.snort.org/dl/binaries/linux/snort-1.9.1-1snort.i386.rpm . Также существуют различные модификации Snort, например с поддержкой MySQL, postgresql, snmp, все это вы можете скачать с этого же сайта, а наш вариант программы я выбрал, как самый легкий в установке.

Установка достаточна проста:

rpm –i snort-1.9.1-1snort.i386.rpm

После этого все необходимые файлы будут скопированы в систему.

Теперь необходимо настроить программу под себя, чем мы сейчас и займемся... Перейдем в директорию /etc/snort , здесь вы можете найти базы сигнатур (точнее их можно назвать правилами, по которым Snort определяет вредный трафик) и несколько файлов конфигурации, нам нужен snort.conf. Тут настраиваем переменные переменные типа HOME_NET, EXTERNAL_NET и другие... Разобраться будет нетяжело, так как каждая опция сопровождается довольно внятными комментариями, хоть и на английском. В самом конце конфигурационного файла идут подключаемые сигнатуры, ненужные можно закомментировать, для повышения производительности.

Приведу пример своего конфига:


# Шаг #1: Установка переменных касающихся сети
# Измените IP, на адреса вашей локальной сети
# Можно указать несколько диапазонов, разделяя их запятыми
var HOME_NET 192.168.168.0/24
var EXTERNAL_NET !$HOME_NET
var DNS_SERVERS $HOME_NET
var SMTP_SERVERS $HOME_NET
var HTTP_SERVERS $HOME_NET
var SQL_SERVERS $HOME_NET
var TELNET_SERVERS $HOME_NET
var ORACLE_PORTS 1521
var HTTP_PORTS 80
var SHELLCODE_PORTS !80

# Путь к сигнатурам
var RULE_PATH /etc/snort

#Подключаем необходимые файлы содержащие классификацию обнаруженной атаки и ссылки на
# багтраки

Include classification.config
include reference.config

###################################################

# Шаг #2: Настройка механизма обнаружения атак

Preprocessor frag2
preprocessor stream4: detect_scans, disable_evasion_alerts
preprocessor stream4_reassemble
preprocessor http_decode: 80 unicode iis_alt_unicode double_encode iis_flip_slash full_whitespace
preprocessor rpc_decode: 111 32771
preprocessor portscan: $HOME_NET 4 3 portscan.log
# Мне пришлось добавить эту опцию, из за некоторых специфических программ, используемых в моей
# сети, из за которых часто случались ложные срабатывания
preprocessor portscan-ignorehosts: 192.168.168.0/24
preprocessor arpspoof
preprocessor conversation: allowed_ip_protocols all, timeout 60, max_conversations 32000
preprocessor portscan2: scanners_max 3200, targets_max 5000, target_limit 5, port_limit 20, timeout 60

####################################################################

# Шаг #3: Указываем какие сигнатуры нам нужны

Include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/scan.rules
include $RULE_PATH/finger.rules
include $RULE_PATH/ftp.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
include $RULE_PATH/web-cgi.rules
# Следующую опцию я оставил для статистики – мой сервер регулярно сканят на предмет IIS багов,
# Точнее не мой сервер а диапазон адресов, в котрый попадаю и я:)
include $RULE_PATH/web-iis.rules
include $RULE_PATH/web-client.rules
include $RULE_PATH/web-php.rules
include $RULE_PATH/sql.rules
include $RULE_PATH/icmp.rules
include $RULE_PATH/netbios.rules
include $RULE_PATH/misc.rules
include $RULE_PATH/attack-responses.rules
include $RULE_PATH/mysql.rules

Include $RULE_PATH/pop3.rules
include $RULE_PATH/pop2.rules
include $RULE_PATH/other-ids.rules
include $RULE_PATH/web-attacks.rules
include $RULE_PATH/backdoor.rules
include $RULE_PATH/shellcode.rules

Теперь все готово для для запуска Snort. Пропишите его в inittab и он будет запускаться вместе с системой.

4. Добавление собственных сигнатур

Snort – это очень гибкий и удобный в настоке IDS. Одно из его качеств позволяет нам самим добавлять сигнатуры атак (или как я уже говорил, это больше похоже на правила). Такие правила у нас лежат в файлах *.rules. Синтаксис правил довольно прост:

ACTION PROTO IP_ADDR1 PORT1 DIRECTION IP_ADDR2 PORT2 [ (OPTIONS) ]

Рассмотрим поля правил более детально:

Поле Action имеет три основных директивы, которые определяют действия, при обнаружении сетевого пакета, соответствующего некоторому правилу: pass, log и alert.

pass - игнорировать пакет

log - пакет должен быть передан процедуре журналирования, для записи в файл журнала

alert генерирует уведомление об обнаружении пакета, удовлетворяющего правилу

Протокол пакета, может иметь значения tcp,udp,icmp

Как это понятно из названия опции, это поле означает IP адрес. any позволяет задать все возможные адреса. Символ! инвертирует условие, т.е. !192.168.168.0/24 означает любой не принадлежащий подсети 192.168.168.0/24. Можно перечислять несколько IP адресов через запятую

Кроме единственного номера порта можно задать диапазон портов через двоеточие, например, 6000:6010, символ ! инвертирует условие, а any обозначает все порты

DIRECTION

Определяет направление движения пакета:

-> (одностороннее) - правило будет применяться только к пакетам, идущим с IP_ADDR1 на IP_ADDR2;

(двустороннее) - направление движения пакета роли не играет

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

Параметры, задающие дополнительные условия на соответствие правилу:

ttl - задает значение поля TTL в заголовке IP-пакета;

tos - задает значение поля TOS в заголовке IP-пакета;

id - задает значение поля номера фрагмента в заголовке IP-пакета;

ipopts - задает значение поля параметров IP-пакета;

fragbits - задает биты фрагментации IP-пакета;

dsize - задает условия на размер IP-пакета;

flags - задает условия на наличие или отсутствие определенных TCP-флагов;

seq - задает номер сегмента TCP-пакета в последовательности;

ack - задает значение поля подтверждения в TCP-пакете;

itype - задает значение поля типа ICMP-пакета;

icode - задает значение поля кода ICMP-пакета;

icmp_id - задает значение поля ICMP ECHO ID в ICMP-пакете;

icmp_seq - задает номер ICMP ECHO пакета в последовательности;

content - задает искомый шаблон в содержимом пакета, а не в заголовке (шаблон можно задавать как в текстовом виде, так и в шестнадцатеричном);

content-list - этот параметр аналогичен параметру content за исключением того, что список искомых шаблонов берется из заданного файла;

offset - работает совместно с опцией content для определения смещения в пакете, с которого будет производиться анализ содержимого;

depth - аналогичен параметру offset и определяет положение в пакете, до которого будет производиться анализ содержимого;

nocase - отключает чувствительность к регистру при анализе содержимого пакета;

rpc - этот параметр позволяет более точно задать характеристики программных или процедурных вызовов RPC-сервисов.

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

Параметры, значения которых имеют смысл при соответствии анализируемого пакета всем условиям:

msg - содержит текст сообщения;

logto - задает альтернативный файл для записи в него содержимого пакета;

session - этот параметр позволяет включить очень интересную возможность Snort - извлечение пользовательских данных из TCP-сессии, например, для последующего анализа того, какие команды вводил пользователь во время telnet-сессии;

resp - если пакет соответствует правилу, то Snort выполнит одно из указанных действий - например, закроет соединение, отправив TCP-RST-пакет одному из хостов.

react - блокирует заданные в правиле web-сайты, закрывая соединение с ними и/или отправляя заданное сообщение браузеру, с которого была предпринята попытка зайти на сайт.

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

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

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

Для тестирования работоспособности Snort, возьмем простейший пример. В коммандной строке наберите ping –s 65507 . Теперь идем в /var/log/snort, здесь по умолчанию хранятся логи. Открываем файл alert и видим такие строки:

[**] ICMP Large ICMP Packet [**]
01/06-07:37:37.119752 192.168.168.99 -> 192.168.168.9
ICMP TTL:255 TOS:0x0 ID:18479 IpLen:20 DgmLen:63028
Type:0 Code:0 ID:512 Seq:19456 ECHO REPLY

Первая строка говорит нам, какое действие вызвало тревогу, в данном случае - слишком большой ICMP пакет. Вторая строка показывает класс атаки и ее приоритет (эта информация определяется из файла classification.config). Третья строка содержит время атаки, а также IP адреса хоста пославшего пакет, и хоста которому пакет был предназначен. Далее идут остальные поля пакета, как например TTL, TOS – по которому, кстати, можно определить OS нападающего, и другие...

6. Заключение

Из всего, сказанного выше, как мне кажется, можно сделать вывод о чрезвычайной полезности Snort. В любом случае, применение этой программы сделает жизнь хакеров немного сложнее. А разве не эту цель преследует любой системный администратор?

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

Snort – относится к свободному программному обеспечению и является мощным инструментом предотвращения вторжений (IPS) с открытым исходным кодом. На данный момент последней версией утилиты является 2.8.6.1 от 22.07.2010.

Режимы работы snort

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

  • режим снифера;
  • режим регистратора пакетов;
  • режим сетевой системы выявления атак.

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

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

Режим снифера

Указателем режима снифера является наличие в командной строке snort опций -v, -d или -e. Опция -v разрешает вывести IP-, TCP-, UDP- и ICMP-заголовки пакетов. Опция -d – данные пакетов. Опция -e – Ethernet-заголовки.

Выводит заголовки и данные TCP-пакетов.

#snort -v -d icmp

То же самое, но для ICMP-пакетов.

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

Указателем режима регистратора пакетов является наличие в командной строке опции -l.

#snort -v -l log

Регистрирует IP-, TCP-, UDP- и ICMP-заголовки всех пакетов в каталоге log (причем для каждого пакета создается отдельный текстовый файл).

Заметим, что каталог регистрации (в данном случае – log) должен существовать.

#snort -l log -b icmp

Регистрирует ICMP-пакеты в каталоге log в двоичном (binary) формате, совместимым с форматом регистрации tcpdump.

Двоичный файл регистрации позднее может быть прочитан с помощью snort (или любого другого средства, которое поддерживает формат регистрации tcpdump, например, windump или Analyzer).

#snort -vd -r log\packet.log udp

Выводит на дисплей заголовки и данные UDP-пакетов, которые были предварительно зарегистрированы в файле log\packet.log.

Режим сетевой системы выявления атак

Указателем режима сетевой системы выявления атак является наличие в командной строке опции -c.

#snort -c snort.conf

Запускает snort в режиме сетевой системы выявления атак в соответствии с правилами, определенными в файле snort.conf.

Заметим, что работа snort в режиме сетевой системы выявления атак нуждается в, как правило, регистрации пакетов. Поэтому командная строка рядом с опцией -c часто также включает опцию -l (при отсутствии этой опции пакеты регистрируются в каталоге /var/log/snort). Запретить регистрацию пакетов в режиме сетевой системы выявления атак можно с помощью опции -N.

Конфигурация режима (способа) вывода сигналов тревоги

Режим по умолчанию: вывод в текстовый файл alerts.ids в каталоге регистрации. Формат вывода включает пометку времени, объясняющее сообщение и содержание (частично) заголовков пакета, который послужил причиной сигнала тревоги.

Получение справки о синтаксисе командной строки snort

Краткую справку о синтаксисе командной строки snort можно получить, запустив snort с опцией -?:

Исчерпывающая справка содержится в man-странице snort.

Написание правил выявления атак

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

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

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

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

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

header (options)

Опции являются необязательной частью правил. В более конкретном плане:

action proto IP1/mask1 port1 ->|< > IP2/mask2 port2 (keyword1: value; \

keyword2: value2; …;)

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

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».

Заголовки правил

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

Предусмотрено 5 стандартных вариантов действий snort в случае, если пакет отвечает одному из правил (соответственно, 5 возможных значений action):

  • alert: выдать сигнал тревоги и зарегистрировать пакет;
  • log: зарегистрировать пакет;
  • pass: проигнорировать пакет (т.е. не выполнять никаких действий);
  • activate: выдать сигнал тревоги и активизировать соответствующее динамическое (dynamic) правило;
  • dynamic: не выполнять никаких действий, пока правило не будет активизировано некоторым activate-правилом; после активизации правила действовать так, как и в случае log-правила.

Конструкция с activate и dynamic применяется для того, чтобы в случае выявления начала атаки получить более подробный протокол дальнейших действий атакующего.

Обозначение протоколов

На данный момент поддерживаются 4 протокола (соответственно, 4 значения proto): ip, tcp, udp и icmp.

Обозначение IP-адреса

Ключевое слово “any” применяется в значении “любой адрес”. Конкретные адреса задаются в формате: IP/mask, где IP – IP-адрес сети или узла, mask – маска сети. Маска сети задается как десятичное число, которое равняется числу единиц в двоичной маске. Например, обозначение 192.168.1.0/24 означает IP-сеть класса C с адресом 192.168.1.0 (число 24 эквивалентное шестнадцатиричной маске FF.FF.FF.0); обозначение 192.168.5.151/32 означает отдельный узел с IP-адресом 192.168.5.151. К IP-адресу может быть применен оператор возражения «!». Например, если приведенный выше пример правила модифицировать таким образом:

alert tcp !192.168.1.0/24 any -> 192.168.1.0/24 111 \

(content: «|00 01 86 a5|»; msg: «external mountd access»;)

сигнал тревоги будет выдаваться только в том случае, если TCP-пакеты будут поступать на 111 порт узлов сети 192.168.1.0/24 извне.

Можно указать также список IP-адресов. Такой список оформляется следующим образом:

alert tcp ! any -> \

111 (content: «|00 01 86 a5|»; \

msg: «external mountd access»;)

Обозначение портов

Ключевое слово “any” применяется в значении “любой порт”. Конкретные порты задаются десятичными числами. С помощью оператора «:» можно задавать диапазоны портов:

log udp any any -> 192.168.1.0/24 1:1024

означает, что будут регистрироваться UDP-пакеты любого происхождения, направленные на порты от 1 до 1024 сети 192.168.1.0/24.

log tcp any any -> 192.168.1.0/24:6000

означает, что будут регистрироваться TCP-пакеты любого происхождения, направленные на порты с номерами, которые меньше или равняют 6000, узлов сети 192.168.1.0/24.

log tcp any:1024 -> 192.168.1.0/24 500:

означает, что будут регистрироваться TCP-пакеты, которые поступают из портов с номерами, которые меньше или равняют 1024, любых узлов на порты с номерами, которые больше или равняют 500, узлов сети 192.168.1.0/24.

К номерам или диапазонам портов может быть применен оператор возражения «!».

Опции правил

Опции отделяются одна от одной с помощью символа «;» (последняя опция в списке тоже должна заканчиваться этим символом). Ключевые слова (keywords) опций отделяются от их аргументов (values) символом «:».

Стандартные ключевые слова

Ниже приведено краткое описание некоторых стандартных ключевых слов.

msg — выводить сообщение вместе с сигналом тревоги или протоколом пакета. Формат:

msg: «»;

ttl — проверять значение поля TTL IP-заголовка. Формат:

ttl: ;

content — проверять, не содержит ли пакет определенных данных. Формат:

content: [!] «»;

Здесь “!” – оператор возражения. Примеры:

content: «|90C8 C0FF FFFF|/bin/sh»;

Данные пакета должны содержать фрагмент, который состоит из байтов 90 C8 C0 FF FF FF (в шестнадцатиричном формате) и текста /bin/sh.

content: !»GET»;

Данные пакета не должны содержать текст GET.

session — регистрировать данные прикладного уровня. Формат:

session: ;

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

log tcp any any < > 192.168.1.0/24 23 (session: printable;)

разрешает зарегистрировать все telnet-сессии пользователей сети 192.168.1.0/24.

resp — применить определенные активные реагирующие действия, которые разрешают прервать нежелательное соединение. Формат:

resp: ;

где resp_modifier может принимать такие значения:

  • rst_snd – прислать на сокет источника пакета пакет TCP RST;
  • rst_rcv – прислать на сокет назначения пакета пакет TCP RST;
  • rst_all – прислать пакеты TCP RST в обоих направлениях;
  • icmp_net – прислать источнику пакета сообщение ICMP «Network Unreachable»;
  • icmp_host – прислать источнику пакета сообщение ICMP «Host Unreachable»;
  • icmp_port — прислать источнику пакета сообщение ICMP «Port Unreachable»;
  • icmp_all – прислать источнику пакета все указанные ICMP-сообщения.

Эту опцию нужно применять с большой осторожностью, поскольку, во-первых, можно помешать нормальному трафику, во-вторых, ввести snort в бесконченый цикл.

Написание контекстных правил (подключение препроцессоров)

Контекстная обработка пакетов осуществляется специальными модулями snort, которые имеют название препроцессоры (preprocessors). Специфика функционирования препроцессоров заключается, прежде всего, в том, что они имеют возможность запоминать предыдущий трафик (в определенном аспекте и объеме). Другой важной особенностью препроцессоров является возможность модифицировать данные, которые поступают на модуль бесконтекстного анализа пакетов (например, выполнять дефрагментацию пакетов). Каждое контекстное правило, в сущности, является директивой подключения того или иного препроцессора. Общий формат этих директив:

preprocessor :

где name — имя препроцессора.

Формат options для каждого препроцессора определяется отдельно

Подключение препроцессора Portscan

Препроцессор Portscan обнаруживает и регистрирует сеансы сканирования портов. TCP-сканирование с полным или неполным установлениям соединений и UDP-сканирования определяются по критерию, который можно сформулировать как “поступление с одного узла попыток подключения к n или более портов объекта защиты за T секунд”. Параметры n и T задаются в секции options директивы препроцессора Portscan. TCP stealth-сканирования определяется по поступлению хотя бы одного TCP-пакета соответствующего формата. Формат директивы:

preprocessor portscan:

Где monitor network – это IP-адрес сети, которая рассматривается как возможный объект сканирования, number of ports – указанный выше параметр n, detection period – указанный выше параметр T, file path – имя файла для регистрации. Пример.

Snort для Windows требует Windows 2000 или XP; на NT, 98 или 95 выполнение невозможно. Необходимы также установленные библиотеки WinPcap. Если они были установлены для программ, описанных ранее в этой книге, таких как Ethereal или WinDump, тогда все готово. В противном случае можно взять их по адресу

netgroup-serv.polito.it/winpcap

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

Для того чтобы Snort для Windows демонстрировал ту же производительность, что и UNIX-версия, понадобится более мощная аппаратура,. Машина с процессором 700 МГц - это минимум, но лучше использовать процессор с частотой 1 ГГц и выше. Необходимо также убедиться, что сервер Windows хорошо защищен, на нем выполняется минимум сервисов и удалены программы, активно использующие процессор, такие как IIS. Воспользуйтесь окном Services из Administrative tools Панели управления, чтобы проверить, не запускается ли что-нибудь лишнее.

Установка Snort для Windows

Чтобы установить Snort для Windows, возьмите бинарный файл с прилагаемого к книге компакт-диска или с сайта http://www.snort.org . Сделайте на нем двойной щелчок мышью, и он автоматически установится. Вас спросят, нужна ли вам определенная база данных или дополнительные модули, такие как модуль гибкого реагирования.

Настройка Snort для Windows

Процесс настройки версии Snort для Windows весьма схож с настройкой для UNIX. Все файлы конфигурации и правил находятся в тех же относительных подкаталогах. Войдите в файл snort.conf в подкаталоге etc установки Snort. Измените и отредактируйте его, как предложено в разделе о UNIX-версии. Затем перейдите в файлы правил и произведите изменения там. После этого все будет готово к запуску Snort. Обратитесь к разделу "Запуск Snort" для UNIX, чтобы получить дополнительную информацию о применении Snort для Windows, так как все команды такие же. Дополнительные настройки и рекомендации по размещению - те же, что и для исходной UNIX-версии.

Уголок кодировщиков Флэми Теха

Написание индивидуальных правил Snort

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

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

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

Если нужно, чтобы Snort обнаруживал некое особое поведение, которое в вашей сети будет считаться подозрительным, можно быстро закодировать правило и тут же протестировать это поведение. Правила Snort по сути представляют собой одиночные текстовые строки, начинающиеся с действия (как правило, alert), за которым следует несколько аргументов. В новейшей версии (2.0 и выше) можно добавить несколько строк, просто помещая \ (обратную косую черту) в конце каждой строки, кроме последней. В более сложных случаях можно также вызывать другие программы, используя инструкцию включения. Но в своей базовой форме правило Snort имеет две части: заголовок и параметры. Ниже представлен пример правила.

alert tcp any any 192.168.0.0/24 \ (content:"|00 05 A4 6F 2E|";msg: "Test Alert")

Заголовок является частью перед первой скобкой. Данная инструкция содержит действие (в нашем случае - alert), протокол, а также адреса и порты отправителя и получателя. Действие будет выполняться, если заданное правилом условие истинно. В данном случае будет порождаться сигнал тревоги (alert). Другими вариантами действий служат Log, Pass , Activate и Dynamic.

Протоколами могут быть tcp, udp , icmp или ip, что означает любой IP-протокол. (В будущем могут поддерживаться протоколы не на основе IP, такие как IPX ). Исходный и целевой порты самоочевидны. Исходный адрес идет первым и задается в стандартной нотации с косой чертой для IP-диапазона. Можно также перечислить несколько индивидуальных адресов и сетей, разделяя их запятой без пробелов и заключая в квадратные скобки, например: alert tcp any < 80 \ (content: "|00 05 A4 6F 2E|"; msg : "Test Alert";)

Эта инструкция ориентирована на трафик, приходящий из любых адресов, направляющийся на машины с адресами 192.168.1.1, 192.168.1.5 и 192.168.1.10 в порт 80. При условии, что это ваши web-серверы, приведенное правило будет искать идущий туда трафик, который содержит указанные шестнадцатеричные данные в разделе содержимого.

Второй частью правила Snort служат опции, задающие дополнительные детали выявляемого трафика. Можно искать по набору полей в заголовке TCP/IP (см. описания в "Сетевые анализаторы") или по полезной нагрузке пакета. За каждой опцией должны следовать кавычки и разыскиваемое значение. Можно добавить несколько опций, разделяя их с помощью точки с запятой. Ниже приведены допустимые опции.

msg Предоставляет текстовое описание сигнала тревоги
logto Записывает пакет в заданный пользователем файл вместо стандартного выходного файла
ttl Проверяет значение поля TTL в заголовке IP
tos Проверяет значение поля TOS в заголовке IP
id Сравнивает значение поля идентификатора фрагмента в заголовке IP с указанной величиной
ipoption Ищет поля опций IP с определенными кодами
fragbits Проверяет биты фрагментации в заголовке IP
dsize Сравнивает размер полезной нагрузки пакета с указанным значением
flags Проверяет флаги TCP на соответствие определенным значениям
seq Сравнивает поле порядкового номера TCP с определенным значением
ack Проверяет поле подтверждения TCP на соответствие определенному значению
itype Проверяет поле типа ICMP на соответствие определенному значению
icode Проверяет поле кода ICMP на соответствие определенному значению
icmp_id Проверяет поле ECHO ID ICMP на соответствие определенному значению.
icmp_seq Проверяет порядковый номер ECHO ICMP на соответствие определенному значению
content Ищет определенный шаблон в полезной нагрузке пакета
content-list Ищет определенный набор шаблонов в полезной нагрузке пакета
offset Модификатор для опции содержимого. Задает смещение для начала сопоставления с образцом
depth Модификатор для опции содержимого. Устанавливает максимальную глубину поиска при сопоставлении с образцом
nocase Сравнивает предыдущую цепочку содержимого без учета регистра символов
session Вывод информации прикладного уровня для данного сеанса
rpc Следит за сервисами RPC для выявления определенных вызовов приложений/процедур
resp Активный ответ. Закрывает соединение (например, разрывая его)
react Активный ответ. Отвечает запрограммированным поведением (например, блокированием определенных Web-сайтов)
reference Идентификаторы ссылок на внешние атаки
sid Идентификатор правила Snort
rev Номер версии правила
classtype Классификационный идентификатор правила
priority Идентификатор уровня серьезности правила
uricontent Сопоставление с образцом в части URI пакета
tag Дополнительные действия по протоколированию для правил
ip_proto Значение протокола в заголовке IP
sameip Определяет, не равны ли исходный и целевой IP-адреса
stateless Применимо независимо от состояния потока
regex Сопоставление с образцом с применением метасимволов
byte_test Числовое сравнение
distance Заставляет при относительном сопоставлении с образцом пропустить в пакете определенное число байт
byte_test Числовое сопоставление с образцом
byte_jump Числовое сопоставление с образцом и корректировка смещения

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

Пример 2 индивидуального правила

Опираясь на сценарий из примера 1, предположим, что следует разрешить некоторый внешний доступ к бухгалтерским серверам, но, тем не менее, гарантировать, что никто не скопирует определенные файлы. Предположим, что имеется файл с именем payroll.xls, который содержит все данные о зарплате (совершенно секретный файл, как внутри, так и вне организации). Можно написать правило, которое проследит за любым трафиком, внутренним или внешним, направленным на эти серверы и содержащим имя секретного файла. Это можно сделать с помощью опции content, осуществляющей поиск в реальном содержимом пакетов. Правило будет выглядеть примерно так:

alert tcp ! any < any (content: "payroll.xls";msg: "Попытка доступа к файлу зарплат")

Отметим, что знак операции! снова означает, что нас интересует трафик, направленный на бухгалтерские серверы из любого места, кроме этих серверов. Тем самым устраняется сигнализация о межсерверном трафике. Отметим также, что символ \ позволяет писать многострочные правила, а опция content - осуществлять поиск текста payroll.xls в пакетах. В результате серверные машины могут иметь доступ в Интернет, но если этот конкретный файл будет когда-либо выгружаться с них, вы будете об этом оповещены.

С помощью других опций можно писать правила для выявления трафика практически любого вида. Если ваши правила могут представлять интерес для других организаций, стоит послать их разработчикам Snort для вставки в официальный набор распространяемых правил. Если вы решите это сделать, постарайтесь использовать все средства документирования , такие как msg , sid , rev , classtype и priority . Также тщательно протестируйте свои правила, чтобы гарантировать, что они действительно охватывают все виды активности, которую вы пытаетесь поймать, и не дают ложных срабатываний.

© 2024 staren.ru
Портал о ремонте