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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 20.10.2011
Размер файла 4,1 M

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

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

Глава 3 Практическое применение системы обнаружения вторжений Snort

3.1 Подготовка среды для проведения экспериментов

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

На современном рынке множество программных продуктов, созданных специально для решения подобных задач. Примером компании, занимающихся разработкой продуктов виртуализации, могут служить VMware, Parallels, Sun Microsystems. С помощью данных программ можно эмулировать оборудование реального компьютера. Созданная в этой среде машина называется виртуальной машиной. Виртуальная машина захватывает не все ресурсы компьютера сразу, пользователь может самостоятельно их ограничивать. К примеру, при создании виртуальной машины пользователь указывает объём жесткого диска, оперативной памяти, видео-памяти. На созданную виртуальный компьютер возможно произвести установку какого-нибудь программного обеспечения и комфортно с ним работать из своей же родной операционной системы. Для большей наглядности проиллюстрируем это рисунком 3.1.1.

Рис. 3.1.1. Использование ресурсов компьютера виртуальной машиной

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

Для моделирования компьютерной сети было создано несколько виртуальный машин, установлены операционные системы на них и объединение наших виртуальных компьютеров во внутреннюю сеть. Рассмотрим пошагово этапы моделирования сети с использованием выбранного нами программного продукта.

Выбор пал на кроссплатформенный продукт VirtualBox. Данная программа разрабатывается компанией Sun Microsystems. На виртуальную машину, созданную с использованием VirtualBox, можно установить такие операционные системы как Microsoft Windows, DOS, GNU/Linux, FreeBSD, Mac OS X, Sun Solaris/OpenSolaris. Приступим к созданию виртуальной машины.

По ходу создания виртуальной машин, система попросила нас установить объём оперативной памяти (Рис. 3.1.2.). Ограничимся 512 Мб памяти.

Рис. 3.1.2. Определение оперативной памяти

Затем указываем расположение файла с виртуальным диском на нашем физическом носителе, его название, а также его размер (Рис. 3.1.3.) Установим объём виртуального винчестера равный 10 ГБ.

Рис. 3.1.3. Определение объёма жесткого диска

В настройке программы можно указать количество ядер, которые будет использовать наша виртуальная машина (Рис. 3.1.4.). Выберем 2 ядра.

Рис. 3.1.4. Определние количество ядер просессора, используемое виртуальной машиной

Здесь же настраиваем сетевой интерфейс, выбрав внутренняя сеть (Рис. 3.1.5.).

Рис. 3.1.5. Выбор сетевого интерфейса

В конечном итоге на Рис. 3.1.6. показаны параметры созданной виртуальной машины:

Рис. 3.1.6. Параметры виртуальной машины

В результате получили две виртуальные машины с установленными операционными системами (Рис. 3.1.7.). В каждой виртуальной машине мы настроили сеть, указав ip-адреса 192.168.1.2 и 192.168.1.3 соответсвенной и маску подсети 255.255.255.0 для каждой. После этого обе машины оказались в одной подсети и могут друг с другом взаимодействовать. Созданная нами вычислительная сеть будет являться полем для экспериментов.

Рис. 3.1.7. Созданные виртуальные машины в VirtualBox

Теперь посмотрим структуру созданной компьютерной сети (Рис. 3.1.8.). Три компьютера соеденены между собой и находятся в одной подсети. Через хост-машину они также имеют доступ в интернет.

Рис. 3.1.8. Структура компьютерной сети

3.2 Режимы запуска Snort

Snort может быть запущен в четырёх режимах:

1) сниффер - просто читает пакеты из сети и показывает их на экране в виде продолжительного потока в консоли.

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

./snort -v - на экран выводятся только IP и TCP/UDP/ICMP заголовки пакетов, которые программа перехватывает в сети;

./snort -vd - в отличие от предыдущего случая ключ d обеспечивает ещё вывод на экран пакетных данных;

./snort -dev - ключ e обеспечивает дополнительный вывод данных на канальном уровне.

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

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

./snort -dev -l /usr/local/var/logs/snort;

./snort -dev -l /home/user/logs -h 192.168.1.0/24

./snort -l /home/user/logs -b - запись данных в бинарный лог-файл;

./snort -dv -r packet.log - чтение бинарного файла для дальнейшего анализа.

3) сетевая система обнаружения вторжений - Snort анализирует сетевой трафик и выполняет какие-либо действия в зависимости от вида атак.

./snort -dev -c /usr/local/etc/snort/snort.conf

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

./snort -GDc ../etc/drop.conf -l /var/log/snort

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

3.3 Конфигурирование системы обнаружения вторжений Snort

Три типа переменных могут быть определены в СОВ Snort:

· var

· portvar

· ipvar

Давайте разберёмся для чего и в каком случае используется тот или иной тип. Три ключевые слова, приведённые выше, предназначены для присвоения указанным нами переменным значений. Синтаксис у них одинаков, отличие состоит в том, что var/portvar/ipvar используются для разных типов данных, и выглядит так:

<var | portvar | ipvar> <название_переменной> <значение_переменной>

Слово var используется для присвоения переменной пути к файлу или директории и для назначения переменной ip-адресов. Заметим, что ключевое слово ipvar применяется к переменным также для указания ip-адресов, но только с поддержкой IPv6. Слово portvar используется для задания переменных с номерами портов. Теперь приведём отрывок из файла конфигурации snort.conf. Полная его версия находится в приложении 1.

var RULE_PATH /usr/local/etc/snort/rules - указание расположения директории с правилами.

var HOME_NET [192.168.1.0/24,!192.168.1.23] - указание диапазона ip-адресов, которые мы будем защищать. При этом мы исключили один ip-адрес. Ничего не мешает здесь указать только ip-адрес своей машины, тогда Snort использовался бы как узловая СОВ.

var EXTERNAL_NET any - указание ip-адресов от которых мы будем защищать нашу сеть. В данном случае от всех адресов.

portvar HTTP_PORTS [80,2301,3128,7777,7779,8000,8008,8028,8080,8180,8888,9999]

portvar FTP_PORTS 21

portvar SMB_PORTS [139,445]

portvar SSH_PORTS 22

В предыдущих черырёх примерах мы просто определяем порты. Здесь тоже может использоваться отрицание, как и в случае с ip-адресами. Для указания последовательности портов, запись может выглядит так: [12:17,1024:].

С помощью ключевого слова include можно подключать дополнительные файлы с настройками. В данном случае мы подключили несколько правил:

include $RULE_PATH/ftp.rules

include $RULE_PATH/ssh.rules

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

<действие_программы> <протокол> <ip-адреса> <порт> <направление действия правила> <ip-адреса> <порт> (опции).

К действиям программы относится:

1. alert - вывести предупреждающее сообщение, а потом записать данные пакета в лог-файл;

2. log - просто записать данные пакета в лог-файл;

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

Протоколы с которыми работает Snort

1. tcp;

2. udp;

3. icmp;

4. ip.

В поле ip-адреса может указываться как диапазон ip-адресов, так и отдельные адреса.

В поле порт можно указать любой порт от 1 до 65535.

Направления действия правила может быть двух видов:

1. В одну сторону, обозначается “->”;

2. В обе стороны, обозначается “<>”.

Опций в программе Snort большое множество, приведём лишь основные:

1. msg - информирующее сообщение об угрозе;

2. content - поиск определённой сигнатуры в файле;

3. sid - указание номера правила;

4. rev - указание номера версии правила;

5. ref - указание ссылки с подробным описанием угрозы.

В приложении 2 приведены примеры с разными правилами.

3.4 Сигнатурные правила

Определение атак по сигнатурам довольно известная практика. В первых версиях Snort только по этому принципу и определялись атаки. Рассмотрим как же работает эта возможность в данном программном продукте. Возьмём какой-нибудь любой файл, к примеру sunset.jpg, и откроем его в шестнадцатиричном редакторе (Рис. 3.4.1.). В этот файл любое место вставим нашу сигнатуру, на рисунке она выделена и представляет 4-байтовую последовательность: 0A 2D 42 C8.

Рис. 3.4.1. Шестнадцатиричный редактор

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

alert tcp any any -> $HOME_NET $SMB (msg:”SMB attack!”; content: “|0A 2D 42 C8|”; sid: 1000004; rev:2;).

Данное правило добавим в файл local.rules, которая находится в директории с различными правилами.

Затем по протоколу SMB отправляем наш модифицированный файл sunset.jpg. В результате система выдает нам сообщение, которое показано на Рис. 3.4.2.

Рис. 3.4.2. Ответные действия системы на модифицированный файл

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

3.5 Аномальные правила

Рассмотрим одно из существующих аномальных правил. Предположим, что злоумышленник решил выявить уязвимость компьютеров сети путём сканирования их портов. Популярной утилитой с такими возможностями является Nmap. Она предназначена для настраиваемого сканирования IP-сетей с любым количеством объектов. Nmap использует множество различных методов сканирования. Для проверки работоспособности СОВ воспользуемся этим самым просканируем компьютер с ip-адресом 192.168.2.3 “невидимым” FIN методом. Для этого введём команду nmap -sF 192.168.2.3 (Рис. 3.5.1.). После сканирования мы видим на этом же рисунке, что программа нам выдала результаты.

Рис. 3.5.1. Сканирование портов с помощь nmap5.0

После проведённых действий обратимся к сканируемому компьютеру и проверим, обнаружил ли Snort “неправильную” активность со стороны другого компьютера. После просмотра файла alert с предупреждениями (Рис. 3.5.2.) обнаруживаем, что СОВ засекла сканирование портов с указанием ip-адресов сканирующей и сканируемой машины. Также в этом файле указан адрес в интернет с подробным описание атаки. Правила, отвечающие за выявление атак связанных со сканированием портов, хранятся в файле scan.rules. Приведём текст этих правил в приложении 2.

Рис. 3.5.2. Ответные действия СОВ на сканирование портов

Заключение

В ходе проведения дипломной работы были исследованы возможности современных систем обнаружения вторжений.

В работе были:

а) исследованы современные системы обнаружения вторжений и проанализированы их параметры;

б) смоделирована компьютерная сеть;

в) в этой сети была настроена и подготовлена к работе система обнаружения вторжений

г) произведена проверка работоспособности СОВ, путем моделирования вторжений

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

Список используемой литературы

1. Жигулин Г.П., Новосадов С.Г., Яковлев А.Д. Информационная безопасность, СПб: СПб ГУ ИТМО, 2003

2. Портал об интернет-технологиях (http://www.internet-technologies.ru/)

3. Свободная энциклопедия Википедия (http://wikipedia.org)

4. Интернет Университет информационных технологий (http://www.intuit.ru)

5. SNORT Users Manual 2.5.8, October 22, 2009 (http://www.snort.org)

6. Русская группа пользователей Snort (http://snortgroup.ru)

7. В.Г. Олифер, Н.А. Олифер Компьютерные сети, 3-е издание ПИТЕР, 2006

вторжение обнаружение snort корпоративная сеть

Приложение 1

# Содержание файла настройки “snort.conf”, версия Snort 2.8.5.2

======================================================

# Step #1: Set the network variables:

var HOME_NET any

var EXTERNAL_NET any

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

var SNMP_SERVERS $HOME_NET

portvar HTTP_PORTS 80

portvar SHELLCODE_PORTS !80

portvar ORACLE_PORTS 1521

portvar FTP_PORTS 21

portvar SMB_PORTS [139,445]

var AIM_SERVERS [64.12.24.0/23,64.12.28.0/23,64.12.161.0/24,64.12.163.0/24,64.12.200.0/24,205.188.3.0/24,205.188.5.0/24,205.188.7.0/24,205.188.9.0/24,205.188.153.0/24,205.188.179.0/24,205.188.248.0/24]

var RULE_PATH ./rules

var PREPROC_RULE_PATH ../preproc_rules

======================================================

# Step #2: Configure dynamic loaded libraries

dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/

dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so

======================================================

# Step #3: Configure preprocessors

preprocessor frag3_global: max_frags 65536

preprocessor frag3_engine: policy first detect_anomalies overlap_limit 10

preprocessor stream5_global: max_tcp 8192, track_tcp yes, \

track_udp no

preprocessor stream5_tcp: policy first, use_static_footprint_sizes

preprocessor http_inspect: global \

iis_unicode_map unicode.map 1252

preprocessor http_inspect_server: server default \

profile all ports { 80 8080 8180 } oversize_dir_length 500

preprocessor rpc_decode: 111 32771

preprocessor bo

preprocessor ftp_telnet: global \

encrypted_traffic yes \

inspection_type stateful

preprocessor ftp_telnet_protocol: telnet \

normalize \

ayt_attack_thresh 200

preprocessor ftp_telnet_protocol: ftp server default \

def_max_param_len 100 \

alt_max_param_len 200 { CWD } \

cmd_validity MODE < char ASBCZ > \

cmd_validity MDTM < [ date nnnnnnnnnnnnnn[.n[n[n]]] ] string > \

chk_str_fmt { USER PASS RNFR RNTO SITE MKD } \

telnet_cmds yes \

data_chan

preprocessor ftp_telnet_protocol: ftp client default \

max_resp_len 256 \

bounce yes \

telnet_cmds yes

preprocessor smtp: \

ports { 25 587 691 } \

inspection_type stateful \

normalize cmds \

normalize_cmds { EXPN VRFY RCPT } \

alt_max_command_line_len 260 { MAIL } \

alt_max_command_line_len 300 { RCPT } \

alt_max_command_line_len 500 { HELP HELO ETRN } \

alt_max_command_line_len 255 { EXPN VRFY }

preprocessor sfportscan: proto { all } \

memcap { 10000000 } \

sense_level { low }

preprocessor ssh: server_ports { 22 } \

max_client_bytes 19600 \

max_encrypted_packets 20 \

enable_respoverflow enable_ssh1crc32 \

enable_srvoverflow enable_protomismatch

preprocessor dcerpc2

preprocessor dcerpc2_server: default

preprocessor dns: \

ports { 53 } \

enable_rdata_overflow

preprocessor ssl: noinspect_encrypted, trustservers

======================================================

# Step #4: Configure output plugins

include classification.config

include reference.config

======================================================

# Step #5: Configure snort with config statements

config daemon

config logdir: /usr/local/var/log/snort

config interface: eth0

config alert_with_interface_name

config alertfile: alert_fribbis

======================================================

# Step #6: Customize your rule set

include $RULE_PATH/local.rules

include $RULE_PATH/bad-traffic.rules

include $RULE_PATH/exploit.rules

include $RULE_PATH/scan.rules

include $RULE_PATH/finger.rules

include $RULE_PATH/ftp.rules

include $RULE_PATH/telnet.rules

include $RULE_PATH/rpc.rules

include $RULE_PATH/rservices.rules

include $RULE_PATH/dos.rules

include $RULE_PATH/ddos.rules

include $RULE_PATH/dns.rules

include $RULE_PATH/tftp.rules

include $RULE_PATH/web-cgi.rules

include $RULE_PATH/web-coldfusion.rules

include $RULE_PATH/web-iis.rules

include $RULE_PATH/web-frontpage.rules

include $RULE_PATH/web-misc.rules

include $RULE_PATH/web-client.rules

include $RULE_PATH/web-php.rules

include $RULE_PATH/sql.rules

include $RULE_PATH/x11.rules

include $RULE_PATH/icmp.rules

include $RULE_PATH/netbios.rules

include $RULE_PATH/misc.rules

include $RULE_PATH/attack-responses.rules

include $RULE_PATH/oracle.rules

include $RULE_PATH/mysql.rules

include $RULE_PATH/snmp.rules

include $RULE_PATH/smtp.rules

include $RULE_PATH/imap.rules

include $RULE_PATH/pop2.rules

include $RULE_PATH/pop3.rules

include $RULE_PATH/nntp.rules

include $RULE_PATH/other-ids.rules

include $RULE_PATH/experimental.rules

Приложение 2

alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"SCAN FIN"; flow:stateless; flags:F,12; reference:arachnids,27; classtype:attempted-recon; sid:621; rev:8;)

alert tcp any any -> $HOME_NET $SMB (msg:”SMB attack!”; content: “|0A 2D 42 C8|”; sid: 1000004; rev:2;)

alert ip $EXTERNAL_NET any -> $HOME_NET any (msg:"DOS IGMP dos attack"; fragbits:M+; ip_proto:2; metadata:policy security-ips drop; reference:bugtraq,514; reference:cve,1999-0918; reference:url,www.microsoft.com/technet/security/bulletin/MS99-034.mspx; classtype:attempted-dos; sid:272; rev:12;)

alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"DOS ath"; itype:8; content:"+++ath"; nocase; metadata:policy balanced-ips drop, policy security-ips drop; reference:arachnids,264; reference:cve,1999-1228; classtype:attempted-dos; sid:274; rev:8;)

alert tcp $EXTERNAL_NET any -> $HOME_NET 7070 (msg:"DOS Real Audio Server"; flow:to_server,established; content:"|FF F4 FF FD 06|"; metadata:policy security-ips drop; reference:cve,1999-0271; reference:nessus,10183; classtype:attempted-dos; sid:276; rev:8;)

alert tcp $EXTERNAL_NET any -> $TELNET_SERVERS 23 (msg:"TELNET SGI telnetd format bug"; flow:to_server,established; content:"_RLD"; content:"bin/sh"; metadata:policy balanced-ips drop, policy security-ips drop, service telnet; reference:arachnids,304; reference:bugtraq,1572; reference:cve,2000-0733; classtype:attempted-admin; sid:711; rev:11;)

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


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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.