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.

5 мин на чтение

Содержание

Snort является сетевой системой обнаружения (IDS) и предотвращения вторжений (IPS) с открытым исходным кодом, способная выполнять регистрацию пакетов и в реальном времени осуществлять анализ трафика в IP-сетях, комбинируя возможности сопоставления по сигнатурам, средства для инспекции протоколов и механизмы обнаружения аномалий. Snort был создан Мартином Решем в 1998-м году и очень быстро завоевал популярность, как бесплатная система обнаружения вторжений, позволяющая самостоятельно и без особых усилий писать правила для обнаружения атак. По сути язык описания сигнатур Snort стал стандартом де-факто для многих систем обнаружения вторжений, которые стали его использовать в своих движках.

Структура и функционирование Snort

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

  • Плохой трафик
  • Использование эксплойтов (выявление Shellcode)
  • Сканирование системы (порты, ОС, пользователи и т.д.)
  • Атаки на такие службы как Telnet, FTP, DNS, и т.д.
  • Атаки DoS/DDoS
  • Атаки связанные с Web серверами (cgi, php, frontpage, iss и т.д.)
  • Атаки на базы данных SQL, Oracle и т.д.
  • Атаки по протоколам SNMP, NetBios, ICMP
  • Атаки на SMTP, imap, pop2, pop3
  • Различные Backdoors
  • Web-фильтры (чаще используетя для блокировки порно контента)
  • Вирусы

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

Режиме анализа пакетов (Sniffer mode)

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

Опции Snort:

Режиме журналирования (протоколирования) пакетов (Packet Logger mode)

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

snort -vde -l /var/log/snort

Эта команда создаст файлы журналов в каталоге /var/log/snort.

Режиме обнаружения сетевых вторжений (Network Intrusion Detection System (NIDS) mode)

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

Встраиваемым режим (inline mode)

Режим работы совместно с файерволом iptables. Для того, чтобы запустить в этом режиме, необходимо добавить дополнительный ключ Q: ./snort -GDc ../etc/drop.conf -l /var/log/snort Перед запуском в этом режиме необходимо убедиться, что программа установлена с поддержкой данного режими. После этого следует настроить файервол для взаимодействия со Snort.

Архитектура Snort

Основу Snort составляет движок, состоящий из пяти модулей:

    Снифер пакетов: данный модуль отвечает за захват передаваемых по сети данных для последующей их передаче на декодер. Делает он это с помощью библиотеки DAQ (Data AcQuisition). Работать данный снифер может “в разрыв” (inline), в пассивном режиме (passive) или читать сетевые данные из заранее подготовленного файла.

    Декодер пакетов: данный модуль занимается разбором заголовков захваченных пакетов, их разбором, поиском аномалий и отклонений от RFC, анализом TCP-флагов, исключением отдельных протоколов из дальнейшего анализа и другой аналогичной работой. Фокусируется данный декодер на стеке TCP/IP.

    Препроцессоры: если декодер разбирал трафик на 2-м и 3-м уровне эталонной модели, то препроцессоры предназначены для более детального анализа и нормализации протоколов на 3-м, 4-м и 7-м уровнях. Среди самых популярных препроцессоров можно назвать frag3 (работа с фрагментированным трафиком), stream5 (реконструкция TCP-потоков), http_inspect_ (нормализация HTTP-трафика), DCE/RPC2, sfPortscan (применяется для обнаружения сканирования портов) и различные декодеры для протоколов Telnet, FTP, SMTP, SIP, SSL, SSH, IMAP и т.п. Некоторые российские разработчики пишут свои препроцессоры (например, для промышленных протоколов) и добавляют в собственные системы обнаружения вторжений (IDS), построенные на базе Snort.

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

    Модуль вывода: по факту обнаружения атаки Snort может выдать (записать или отобразить) соответствующее сообщение в различных форматах - файл, syslog, ASCII, PCAP, Unified2 (двоичный формат для ускоренной и облегченный обработки).

Рассмотрим простое графическое представление прохождения данных через 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.

Ежедневно по корпоративным сетям передаются миллиарды пакетов данных. Некоторые из них опасны; авторы таких пакетов приняли специальные меры, чтобы обойти брандмауэры и пробиться через линии обороны по периметру сетей, нарушая работу всех встреченных на пути систем. Разрушительное действие таких проведенных с использованием пакетов атак, как Code Red, Nimda, SQL Slammer и MSBlaster, хорошо известно. Все эти вредоносные программы используют в своих целях доверенные протоколы (например, HTTP) или сетевой трафик систем Microsoft. Такие протоколы нельзя просто взять и блокировать, поэтому администраторы обычно стараются как можно быстрее зафиксировать опасный трафик с помощью систем обнаружения несанкционированного доступа, Network Intrusion Detection System (NIDS), чтобы вовремя среагировать на угрозу.

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

Знакомство с Snort

Первый разработчик Snort Мартин Реш предоставил программу открытому сообществу на условиях лицензии GNU General Public License (GPL). История этого пакета началась в 1998 г., и с тех пор он не раз доказал свою надежность. Благодаря вкладу членов открытого сообщества и сетевых администраторов во всем мире Snort превратился в очень мощный продукт. Текущая версия обеспечивает анализ сетевого трафика в реальном времени и регистрацию IP-трафика со скоростями Fast Ethernet и Gigabit Ethernet.

Майкл Дэвис перенес Snort 1.7 на платформу Win32, сделав его доступным для сообщества Windows. Затем Крис Рейд взял на себя задачу компиляции новых версий Snort в готовые исполняемые файлы, которые можно без труда развернуть в среде Windows.

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

Требования Snort

Для работы Snort необходим компьютер Windows, оснащенный по крайней мере одним сетевым адаптером. Лучше иметь два сетевых адаптера, один из которых подключен к контролируемой сети, а другой - к производственной сети; последний пересылает отчеты. Snort совместим не только с Windows 2000 Server и более поздними версиями, но и с Windows XP Professional Edition, XP Home Edition и Windows 2000 Professional. Лицензии для сервера не требуется. Ежедневно я подключаю ноутбук XP Pro ко многим сетям клиентов и обычно запускаю Snort в качестве службы. Таким образом, программа работает в фоновом режиме, обнаруживая любые атаки на мою систему, исходящие из данной клиентской сети. Я использую Snort как переносной сенсор - программа играет роль NIDS для любого порта, к которому подключается ноутбук.

В небольших сетях развернуть Snort можно на сервере начального уровня. Для обнаружения попыток несанкционированного доступа выделенная машина большой мощности не нужна. Например, мне приходилось слышать об узлах Snort на платформе FreeBSD с процессорами на 1 ГГц и оперативной памятью объемом 1 Гбайт, которые успешно обслуживали сети с 15 000 пользователей и несколькими соединениями T-3 каналов WAN. Благодаря эффективности исходного текста Snort для работы программы очень мощная машина не требуется.

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

Однако если пользователи подключаются к сети через соединение VPN (по Internet или беспроводной линии связи), имеет смысл разместить NIDS еще дальше за брандмауэром, например за VPN-сервером или концентратором, где пакеты расшифровываются на выходе из туннеля VPN. В противном случае NIDS не сможет противостоять вредоносным программам, встроенным в трафик VPN, так как анализируемые пакеты будут зашифрованы. То же относится и к зашифрованному SMTP-трафику, зашифрованным.zip-файлам, вложенным в сообщения электронной почты, и зашифрованным данным других типов.

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

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

  1. Установка WinPcap
  2. Установка Snort
  3. Тестирование Snort
  4. Настройка Snort
  5. Задание правил
  6. Настройка предупреждений и журналов
  7. Запуск в качестве службы

Этап 1. Установка WinPcap

В сущности, Snort представляет собой сетевой анализатор, работающий в режиме приема всех пакетов (promiscuous-mode), поэтому ему необходима поддержка на уровне драйверов. Эту поддержку обеспечивает WinPcap. Лорис Диджиоанни создал WinPcap, перенеся в среду Windows широко распространенный среди пользователей Unix драйвер перехвата пакетов libpcap. В состав WinPcap входят фильтр пакетов на уровне ядра, низкоуровневая DLL (packet.dll) и высокоуровневая системно-независимая библиотека (wpcap.dll, на базе libpcap 0.6.2).

WinPcap можно загрузить по адресу http://winpcap.polito.it . Драйвер совместим с Windows Server 2003, XP, Windows 2000, Windows NT, Windows Me и Windows 9x. WinPcap также поддерживает открытый анализатор пакетов Ethereal, который можно получить по адресу . С помощью Ethereal можно убедиться в корректности установки Snort.

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

Этап 2. Установка Snort

Следующий шаг - установка Snort. Новейшую версию можно найти на Web-узлах CodeCraft Consultants (http://www.codecraftconsultants.com/snort.aspx ) или Snort.org (http://www.snort.org ). Я рекомендую загрузить Snort из CodeCraft Consultants, так как с этого сайта можно получить саморазворачивающийся исполняемый файл. Программа даже проводит пользователя по элементарным операциям установки Snort на компьютере. При подготовке данной статьи использовалась последняя версия Snort 2.1.1, сборка 18. С тех пор были выпущены обновленные версии.

При запуске программы установки в первом диалоговом окне необходимо выбрать режим настройки базы данных для хранения результатов. Если используется MySQL или ODBC-совместимая база данных, можно согласиться на режим, выбираемый по умолчанию (экран 1). Но если предстоит хранить протоколы в базе данных Microsoft SQL Server или Oracle, то необходимо выбрать соответствующий режим и убедиться, что на машине имеется нужная клиентская программа. При подготовке данной статьи использовался режим по умолчанию.

На следующем шаге следует определить компоненты Snort, которые требуется установить. Стандартный набор (экран 2) вполне приемлем, поэтому я рекомендую принять его и щелкнуть на кнопке Next. В диалоговом окне Choose Install Location необходимо указать каталог, в котором будет развернут Snort. Введя имя каталога, следует щелкнуть на кнопке Next, чтобы завершить процесс установки.

Экран 2. Выбор компонентов установки

Этап 3. Тестирование установки Snort

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

Snort -l F:snortlog -c F:snortetcsnort.conf -A console

указывает программе, что журналы следует записывать в каталог F:snortlog, а snort.conf находится в каталоге F:snortetc. Ключ -A задает способ передачи генерируемых программой предупреждений. В данном примере предупреждения выводятся на экран консоли, и администратор может убедиться, что Snort работает корректно. Обратите внимание, что в статье команда напечатана на нескольких строках, но в командном окне ее необходимо вводить в одной строке. То же самое относится и к другим многострочным командам в данной статье. Многие ключи командной строки Snort чувствительны к регистру символов, поэтому вводить команды следует именно так, как они напечатаны.

Если система располагает несколькими сетевыми интерфейсами, то по умолчанию Snort прослушивает первый обнаруженный интерфейс. Если порядок сетевых интерфейсов на машине неизвестен, можно выполнить команду Snort с одним ключом -W. Snort выдает список имен и номеров сетевых интерфейсов в том порядке, в котором их обнаруживает программа. Чтобы заставить Snort использовать определенный сетевой интерфейс, необходимо ввести ключ -i с номером интерфейса при запуске Snort. После выполнения Snort на экране появится информация, подобная приведенной на экране 3 .

Запустив Snort, можно проверить его чувствительность, направив в NIDS специально подготовленный трафик. Один из самых простых способов вызвать предупреждение об опасности - обратиться к командному интерпретатору (cmd.exe) на удаленной машине в рамках запроса HTTP URL (типичный прием «червей» Code Red и Nimda). Чтобы имитировать эту фазу нападения, следует обратиться к любому URL и добавить в конце запроса символы /cmd.exe. Например, в ответ на обращение к http://www.a-website-that-I-can-trust.com/cmd.exe Snort должен вывести предупреждение в командном окне, по виду напоминающее первые три предупреждения на экране 4 . Эти сообщения и записываются в журнал F:snortlog.

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

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

Ping -l 32767 ip_address

где ip_address - IP-адрес целевого сервера или Snort-компьютера. Данная команда должна послать очень длинный пакет (точная длина - 32 Кбайт), что явно необычно для команды Ping. Snort должен обнаружить этот пакет, как видно на примере нижних восьми предупреждений на экране 4 .

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

Этап 4. Настройка Snort

Основные данные о конфигурации Snort хранятся в файле snort.conf, который по умолчанию располагается в каталоге %systemdrive%snortetc. Файл можно оставить в этой папке или переместить в другую, если указать программе путь в командной строке.

Детальное описание всех параметров, представленных в snort.conf, может заполнить весь номер журнала, так как Snort - удивительно мощная программа. Мы пока рассмотрим лишь основные ее параметры.

Чтобы отличить входящий трафик от исходящего, необходимо сообщить Snort узлы и IP-адреса сети предприятия. Для ввода этой информации в файле snort.conf должна быть задана переменная HOME_NET. Следует отыскать строку

Var HOME_NET any

и заменить ее диапазоном IP-адресов. Можно задать один диапазон, например

Var HOME_NET 192.168.0.1/24

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

Var HOME_NET

указывает Snort, что подсети 10.0.1.0/24, 10.0.2.0/24 и 10.0.3.0/24 относятся к сети предприятия. По умолчанию Snort воспринимает все остальные адреса как внешние. Можно явно указать сети, которые следует считать внешними, задав переменную EXTERNAL_NET. В файле snort.config необходимо отыскать строку

Var EXTERNAL_NET any

и заменить ее IP-адресом сети, которую следует считать внешней. Однако, как правило, для начала лучше оставить переменную EXTERNAL_NET со значением any.

Потратив некоторое время, можно указать типы серверов, имеющиеся на предприятии, и их местоположение. Эта информация содержится в переменных DNS_SERVERS, SMTP_SERVERS, HTTP_SERVERS, SQL_SERVERS и TELNET_SERVERS в следующих строках файла snort.conf:

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 SNMP_SERVERS $HOME_NET

По умолчанию всем шести серверным переменным присвоено значение $HOME_NET; это означает, что Snort будет контролировать все типы нападений на все системы в диапазоне HOME_NET. Такая конфигурация вполне приемлема для небольшой сети, администраторы которой допускают некоторое число ложных предупреждений. Но для мониторинга интенсивного трафика желательно выполнить более тонкую настройку Snort для проверки только части сигнатур для определенных узлов. Не имеет смысла защищать Web-сервер, работающий только с Microsoft IIS, от атак с переполнением буфера SQL. Чтобы определить особый класс узлов, необходимо заменить $HOME_NET диапазоном IP-адресов целевых серверов в соответствии с форматом, использованным для переменной HOME_NET. Например, для переменной DNS_SERVERS вместо $HOME_NET следует подставить диапазон IP-адресов DNS-серверов.

Точность настройки можно повысить, если определить порты, используемые серверами для конкретных приложений. Например, если Web-серверы задействуют специальный порт 8080 для трафика HTTP вместо порта 80 (этот порт обычно применяется для Web-серверов и браузеров), то можно настроить Snort на отслеживание порта 8080, изменив переменную HTTP_PORTS. В snort.conf следует отыскать строку

Var HTTP_PORTS 80

и заменить ее строкой

Var HTTP_PORTS 8080

Точно так же можно изменить порты для Oracle (определяемые переменной ORACLE_PORTS) и других приложений. Как и переменная HTTP_PORTS, по умолчанию ORACLE_PORTS имеет значение 80. Если сервер использует вместо него порт 1521, то строка будет иметь вид

Var ORACLE_PORTS 1521

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

Этап 5. Задание правил

В одной из строк snort.conf встречается переменная RULE_PATH. Примерный вид этой строки:

Var RULE_PATH ../rules

Параметр../rules указывает, что правила (т. е. сигнатуры) можно найти в каталоге rules, который находится в структуре каталогов на одном уровне с двоичными файлами Snort. Поэтому, например, если установить Snort в типовой папке F:snort, двоичные файлы Snort находятся в F:snortin, а правила - в F:snort ules. При желании можно изменить переменную RULE_PATH, но вполне приемлем и вариант, выбираемый по умолчанию.

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

Как выглядит правило? Правило для cmd.exe, которое было нарушено при проведении теста Snort, имеет следующий вид: alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:»WEB-IIS cmd.exe access»; flow:to_server, established; content:»cmd.exe»; nocase; classtype:web-application-attack; sid:1002; rev:5;). Рассмотрим основные компоненты правила. Ссылка $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS указывает, что следует анализировать только трафик, поступающий в сеть извне (как определено переменной EXTERNAL_NET). Параметр content: задает поиск последовательности символов cmd.exe в потоке данных. Обнаружив такую последовательность, Snort генерирует предупреждение, задаваемое параметром msg:.

Как видно на примере cmd.exe, правила в основном просты. Можно составить собственные правила для трафика любых типов. Например, если требуется обнаружить несанкционированные попытки удаленного доступа к каталогу на машине через командный интерпретатор, то можно провести поиск строки volume in drive или volume serial number в портах, где они бывают редко, таких как порты для передачи исходящего трафика. Благодаря гибкому подходу к назначению правил, администраторам предоставляются широкие возможности конфигурирования Snort.

1500 правил Snort хранятся в различных файлах в соответствии с типами анализируемых данных. Например, правило для cmd.exe находится в файле web-iis.rules. Если на предприятии IIS не применяется, то программе не нужно обнаруживать атаки IIS. Файл web-iis.rules легко удалить из конфигурации целиком, отыскав и обозначив как комментарий строку

Include $RULE_PATH/web-iis.rules

в файле snort.conf. Чтобы сделать строку комментарием, нужно поставить перед ней символ (#):

# include $RULE_PATH/web-iis.rules

По умолчанию файлы правил некоторых типов (например, icmp-info.rules, chat.rules) представлены комментариями в snort.conf. Используемая по умолчанию конфигурация правил в snort.conf вполне удачна. После активизации блокированных правил программа, как правило, генерирует много лишних предупреждений.

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

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

Этап 6. Настройка предупреждений и журналов

Как уже отмечалось, Snort обеспечивает запись информации в MySQL, SQL Server, Oracle и ODBC-совместимых базах данных. Достаточно выбрать подходящий тип базы данных в процессе установки Snort. Чтобы чрезмерно не увеличивать объем статьи, рассмотрим стандартные режимы протоколирования с использованием текстового файла и функции записи сообщений в журнал событий Windows.

При запуске NIDS с помощью команды Snort ключ консоли -A обеспечивает вывод предупреждений на экран. Чтобы пересылать сообщения в текстовый файл, следует заменить этот ключ на -A fast или -A full, в зависимости от предпочтительного режима протоколирования. Параметр full выводит подробное описание угрозы в нескольких строках текстового файла с именем alerts.ids каталоге, путь к которому указывает ключ -l. Такой тип протоколирования сообщает исчерпывающие детали, но в них трудно разобраться, если в сети отмечается много событий. В таких «шумных» сетях рекомендуется использовать режим fast для внесения в alerts.ids однострочных записей, содержащих основные характеристики подозрительного трафика. На мой взгляд, работать с текстовым файлом в режиме fast проще, чем в режиме full.

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

Для записи предупреждений в журнал событий Application системы, на которой работает Snort, вместо ключа -A используется ключ -E (параметры не обязательны). На экране 5 показано, как выглядит событие Snort (в данном случае попытка обращения к cmd.exe), опубликованное в журнале Application. Событие Windows обеспечивает такую же детальную информацию, как экран консоли.

NIDS бесполезен, если администратор заглядывает в журналы событий (или текстовые журналы) раз в неделю. Если что-то случается в сети, администратор должен узнать об этом незамедлительно. Централизованная система мониторинга и обработки событий может посылать сообщения по электронной почте, на пейджер и другие устройства связи. Но если такой системы нет, это не повод для беспокойства. Компания NETIKUS.NET предлагает бесплатный пакет EventSentry Light, с помощью которого можно посылать предупреждения.

EventSentry Light - ознакомительная версия EventSentry, ее можно загрузить по адресу http://www.netikus.net/products_downloads.html . С помощью EventSentry Light можно настроить систему на мониторинг журналов событий и автоматическую рассылку по электронной почте подробных сообщений о любых событиях Snort, записанных в журнал. На экране 6 показано почтовое сообщение о попытках нападения на cmd.exe. Я получил это сообщение от EventSentry Light спустя несколько секунд после проведения атаки.

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

Этап 7. Запуск в качестве службы

Завершив все приготовления, можно задействовать Snort в качестве службы, вместо того чтобы регистрироваться на настольном компьютере всякий раз, когда требуется запустить программу. Если запустить Snort с параметрами /SERVICE и /INSTALL (наряду с другими параметрами командной строки), то Snort настраивается на работу в качестве службы Windows и автоматически запускается вместе с Windows без вмешательства пользователя.

Следующий уровень: модули расширения

Snort представляет собой полнофункциональное приложение. Однако в некоторых случаях программа нуждается в расширении. Например, если в разных участках сети развернуто несколько NIDS, то управлять Snort удобно из графического интерфейса. Такие возможности реализованы в модулях расширения IDScenter фирмы Engage Security и IDS Policy Manager компании Activeworx. Иногда бывает необходимо проанализировать информацию, которая содержится в сообщениях. Просмотреть и проанализировать сохраненные данные можно с помощью модуля Analysis Console for Intrusion Databases (ACID), разработанного в Университете Карнеги - Меллона.

Надежная защита

Snort - полнофункциональная программа, которая не нанесет ущерба бюджету компании. Объединив Snort с мощным приложением мониторинга событий, таким как EventSentry Light, можно своевременно предупреждать атаки против сети.

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 . Также тщательно протестируйте свои правила, чтобы гарантировать, что они действительно охватывают все виды активности, которую вы пытаетесь поймать, и не дают ложных срабатываний.