Snort установка настройка windows. Описание и изучение IDS приложения Snort

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

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

Alexander Antipov


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

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

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

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

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

Ежедневно по корпоративным сетям передаются миллиарды пакетов данных. Некоторые из них опасны; авторы таких пакетов приняли специальные меры, чтобы обойти брандмауэры и пробиться через линии обороны по периметру сетей, нарушая работу всех встреченных на пути систем. Разрушительное действие таких проведенных с использованием пакетов атак, как 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 представляет собой систему 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.