Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Andronchik.pdf
Скачиваний:
683
Добавлен:
13.04.2015
Размер:
10 Мб
Скачать
☆

82

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

Отдельной задачей, возникающей при проектировании распределенных СОА, является выбор идеологии процедуры принятия решения. Возможны несколько вариантов процедуры, отличающиеся степенью централизации. Наиболее простым является вариант процедуры с предельной степенью централизации, когда агенты занимаются лишь сбором данных и передачей их центральному узлу СОА — модулю принятия решения. Этот модуль анализирует поступающую информацию и выносит решение о факте атаки. Данный вариант характеризуется большим объемом передаваемых по сети данных, что повышает вероятность обнаружения факта работы СОА злоумышленником и делает систему уязвимой к атакам на отказ в обслуживании. Наиболее очевидным решением по использованию такого типа СОА является их установка в рамках подсетей небольшого размера, что позволит обойти проблему перегрузки сети пакетами, сгенерированными системой. Увеличение масштабов сети требует многоступенчатого подхода к принятию решения. Он заключается в том, что выделяются промежуточные модули принятия решения, которые собирают данные только с ограниченного числа «своих» агентов и передают на верхний уровень гораздо меньший объем информации, дополненный промежуточным решением. При любом варианте реализации процедуры принятия решения очевидно, что первоочередной становится задача обеспечения защищенности самой СОА.

4.5. Система обнаружения атак Snort

4.5.1. Общие сведения

Snort — это бесплатная система обнаружения атак с открытым исходным кодом, разработанная Мартином Рошем (Martin Roesch). Доступны версии программы, работающие под управлением операционных систем Win-

83

dows NT, Linux, BSD, Mac OS X, а также некоторых других. В соответствии с предложенной выше классификацией, Snort является сетевой СОА, основанной на сигнатурном анализе. Сигнатуры атак описываются при помощи правил — специальных синтаксических конструкций, позволяющих выявлять интересующую администратора информацию в полях заголовков и содержимом передаваемых по сети пакетов. Кроме того, в Snort реализовано несколько препроцессоров, выполняющих более сложные операции по анализу трафика, такие, например, как дефрагментация IP-пакетов, отслеживание TCPсоединений и выявление попыток сканирования портов.

4.5.2. Установка и запуск программы

Для обеспечения возможности перехвата сетевых пакетов программой Snort необходима предварительная установка и запуск службы WinPcap (WinPcap_3_1.exe).

Рис. 4.1. Служба WinPcap в перечне служб

Для установки СОА Snort версии 2.4.3 необходимо запустить файл «Snort_243_Installer.exe» и ответить на интересующие программу-инсталлятор вопросы. По умолчанию Snort устанавливается в каталог «С:\snort», а его исполняемый файл располагается в каталоге «С:\snort\bin». Запуск СОА Snort осуществляется из командной строки, в табл. 4.1 приведен неполный список параметров, с которыми может производиться запуск. Чтобы вывести этот список на экран во время работы, необходимо выполнить команду

snort -?

 

84

 

Таблица 4.1

 

Список параметров СОА Snort

Параметр

Описание

 

 

-c

Использовать файл правил <rules>.

<rules>

 

-E

Добавлять предупреждения (alerts) в журнал регистрации со-

 

бытий Windows NT (не создавая log-файла).

-h <hn>

Задать домашнюю сеть (home network) <hn>.

-i <if>

Подключиться к сетевому интерфейсу номер <if> (список ин-

 

терфейсов можно получить при помощи команды snort -W).

-I

Добавлять к предупреждению наименование интерфейса.

-K <mode>

Режим регистрации предупреждений: pcap (по умолчанию) —

 

в двоичном формате, ascii — в текстовом формате, none —

 

без регистрации.

-l <ld>

Сохранять результаты регистрации в каталог <ld>.

-L <file>

Сохранять результаты регистрации в указанный файл формата

 

tcpdump (будет располагаться в каталоге, предварительно ука-

 

занном параметром -l).

-n <cnt>

Завершить работу программы после получения <cnt> паке-

 

тов.

-N

Не сохранять в файлах регистрации содержимого пакетов (со-

 

храняется лишь текст предупреждений).

-p

Анализировать только пакеты, отправленные на локальный ад-

 

рес, и широковещательные пакеты.

-r <tf>

Прочитать и обработать файл <tf>, записанный в формате

 

tcpdump.

-S <n=v>

Установить значение переменной n файла правил, равной v.

-U

Записывать временные метки в универсальном скоординиро-

 

ванном времени (UTC).

-v

Отображать на экране заголовки всех перехваченных пакетов.

-V

Показать версию Snort.

-W

Показать доступные сетевые интерфейсы.

-X

Сохранять в файле журнала регистрации событий содержимое

 

перехваченных пакетов в «сыром» виде, начиная с уровня link

 

модели OSI.

 

85

 

 

Параметр

Описание

 

 

-y

Добавить месяц, день и год в отображаемые и сохраняемые

 

временные отметки.

-?

Показать помощь по параметрам командной строки.

Для проверки работоспособности СОА Snort рекомендуется выполнить следующие действия.

ВЫПОЛНИТЬ!

1.Установить СОА Snort.

2.Вывести на экран список доступных сетевых интерфейсов командой

snort –W

3.Запустить Snort на выбранном интерфейсе в режиме анализатора пакетов с выводом информации на экран, указав программе завершить работу после приема третьего пакета:

snort –v –i 1 –n 3

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

4.5.3. Описание языка правил

Рассмотрим краткое описание языка правил, на котором задаются сигнатуры атак, обнаруживаемых СОА Snort. Полное описание языка правил со-

держится в файле документации «с:\snort\doc\snort_manual.pdf»

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

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

1.Указания действия, которое необходимо выполнить (alert, log, pass и

др.).

2.Протокола (tcp, udp, icmp, ip).

3.IP-адреса и маски подсети источника и приемника информации, а также информации о портах источника и приемника.

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

86

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

Текст атрибутов располагается в скобках, каждая пара атрибут — значение имеет вид <атрибут>: <значение>;. Значения строковых атрибутов записываются в кавычках.

Рассмотрим пример простого правила (одна строка):

alert <протокол> <адрес_подсети1>[/маска_подсети1] <порт1> <направление> <адрес_подсети2>[/маска_подсети2] <порт2> ([msg:"Текст сообщения";] [другие_атрибуты])

где

−alert — действие, которое необходимо выполнить при обнаружении пакета, удовлетворяющего данному правилу, и которое заключается в генерации «предупреждения» — записи в журнале регистрации

−<протокол> — наименование протокола (tcp, udp, icmp, ip)

−<адрес_подсети>[/маска_подсети] — IP-адрес и маска подсети,

либо IP-адрес узла участника обмена в формате: 192.168.247.0/24, либо

192.168.247.1

−<порт> — номер порта либо диапазон портов в формате 1:1024 для обозначения диапазона портов от 1 до 1024, 1024: — с номерами больше или равными 1024, или :1024 — меньше или равными 1024 соответственно

−<направление> — обозначение направления в виде ->, <- или <>

Вместо IP-адресов и номеров портов могут использоваться псевдонимы any, являющиеся заменителем любого значения.

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

−meta-data — предоставляют информацию о правиле, но не влияют на процесс обнаружения;

−payload — атрибуты данного типа предназначены для поиска информации в «полезной нагрузке» (содержимом) пакета;

−non-payload — предназначены для поиска информации в заголовках паке-

тов;

−post-detection — определяют поведение системы после обнаружения пакета, удовлетворяющего правилу.

Втабл. 4.2 приведен неполный список атрибутов, которые могут быть использованы при написании правил.

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

offset и depth, так как это существенно сократит время, затрачиваемое на анализ пакета.

 

87

 

 

 

Список атрибутов СОА Snort

Таблица 4.2

 

 

 

 

 

 

 

 

Атрибут

 

Описание

 

 

 

 

 

 

 

meta-data

 

 

 

 

 

 

 

msg: "<текст>";

 

Сообщение, которое добавляется в журнал регист-

 

 

рации при активации правила.

 

 

sid:

 

Уникальный номер, используемый для идентифи-

<идентификатор>;

 

кации правил. Идентификаторы

от

100 до

 

 

1 000 000 используются для правил, включенных в

 

 

дистрибутив Snort. Для локальных правил следует

 

 

использовать значения больше 1 000 000.

 

rev:

 

Целое число, служащее для обозначения номера

<номер_редакции>;

 

редакции правила.

 

 

classtype:

 

Используется для обозначения класса атаки. Пол-

<имя_класса>;

 

ный список классов приведен в документации по

 

 

Snort.

 

 

priority:

 

Целое число, используемое для переопределения

<приоритет>;

 

приоритета, задаваемого указанным ранее классом

 

 

атаки, или для назначения приоритета новому

 

 

правилу. Наивысший приоритет —

1,

типичное

 

 

значение атрибута составляет от 1 до 4.

 

payload

 

 

 

 

content: [!]"<строка>";

nocase;

depth: <число_байт>;

Позволяет искать заданную подстроку в содержимом полезной нагрузки пакета. Восклицательный знак означает отсутствие указанной информации в пакете. По умолчанию данный атрибут является чувствительным к регистру. Для обозначения двоичных данных следует использовать шестнадцатеричные значения, отделенные вертикальными чертами: |00 5С|. Атрибут content имеет несколько модификаторов, которые могут располагаться следом за ним.

Модифицирует стоящий ранее атрибут content, делая его нечувствительным к регистру.

Значение атрибута (в байтах) определяет, как далеко в полезной нагрузке пакета должен производиться поиск.

 

88

 

 

Атрибут

Описание

 

 

offset:

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

<число_байт>;

лезной нагрузки следует пропустить. Поиск будет

 

вестись, начиная с число_байт+1-го байта.

distance:

Атрибут похож на depth, но указывает, сколько

<число_байт>;

байт необходимо пропустить после предыдущей

 

совпавшей подстроки перед продолжением поис-

 

ка.

within:

Атрибут указывает системе искать совпадения

<число_байт>;

лишь в первых число_байт, начиная с конца

 

предыдущей совпавшей подстроки.

non-payload

 

 

 

dsize: <размер>;

Сравнить размер полезной нагрузки с заданным.

 

Возможно указание диапазонов значений с ис-

 

пользованием знаков >, < и <>. Например: >128,

 

300<>500 (от 300 до 500).

flags:

Проверить, установлены ли указанные флаги в

[!|*|+]<флаги>

принятом TCP-пакете. Флаги записываются под-

 

ряд без пробелов и обозначаются следующим об-

 

разом:

 

F — FIN (LSB в байте флагов)

 

S — SYN

 

R — RST

 

P — PSH

 

A — ACK

 

U — URG

 

1 — Резерв 1 (MSB в байте флагов)

 

2 — Резерв 2

 

0 — флаги не установлены

 

Могут быть дополнительно использованы сле-

 

дующие модификаторы:

 

! — указанные флаги не установлены

 

* — установлен хотя бы один из указанных

 

+ — установлены указанные и любые другие

itype: <тип>;

Сравнить тип ICMP сообщения с указанным. Воз-

 

можно указание диапазонов значений с использо-

 

ванием знаков >, < и <> (см. выше).

icode: <код>;

Сравнить код ICMP сообщения с указанным.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]