Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Новости ИТ Программы Книги Games   Обои   Экспорт RSS E-Books
 
Поиск по сайту

TOP-10 программ
Symantec Norton Ghost 9.0
Partition Magic 8.0.2 Pro
Xilisoft 3GP Video Converter v3.1.7.0616b
Norton AntiVirus 2005
Xilisoft 3GP Video Converter v2.1.52.831b
Антивирус Касперского Personal 5.0.303 beta 2
RAR Password Cracker 4.12
ABBYY PDF Transformer v1.00.820
MP3 To Ringtone Gold v3.02
Windows Movie Maker 2.6
 
Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
 
 

   Cети -> Локальные сети -> Обнаружение сетевых атак — Snort


Обнаружение сетевых атак - Snort

Александр Красоткин<

Программные комплексы, контролирующие содержимое трафика, называются сетевыми системами обнаружения вторжения (Network Intrusion Detection System, сокращенно - NIDS). Они функционируют на сетевом уровне по модели OSI и проводят контроль устанавливаемых соединений, анализ структуры и содержимого сетевых пакетов. Система NIDS анализирует весь проходящий трафик как на отдельном компьютере, так и на выделенном сервере (шлюз, маршрутизатор, зонд). При обнаружении атаки NIDS включает механизм реагирования на данный тип угрозы. Спектр ее возможностей довольно широк: от передачи предупредительных сообщений на рабочую консоль (e-mail, пейджер, телефон, факс) до блокировки учетной записи, разрыва соединения, реконфигурации брандмауэра или маршрутизатора.

Механизм контроля и анализа статистики устанавливаемых соединений позволяет выявить попытку сканирования системы или проведения атаки вида <отказ в обслуживании> (одновременно открывается множество соединений с каким-либо сервисом). Контроль за содержимым трафика реализуется путем поиска определенных последовательностей данных (сигнатур), передаваемых в сетевом пакете. Например, если во время соединения, установленного с Microsoft SQL-сервером, перехвачен пакет, содержащий последовательность данных <81 F1 03 01 04 9B 81 F1 01>, а также строки и , то имеет место попытка эксплуатации <переполнения буфера>. Это уязвимое место обнаружено в Microsoft SQL Server 2000 Resolution Service и Microsoft Desktop Engine (MSDE) 2000. Хотя она известна довольно давно и уже выпущены специальные программные <заплатки>, дебют 25 января 2003 г. сетевого вируса Slammer, использующего его, оказался успешным.

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

Потенциально скользкий момент в работе NIDS - достоверность определения IP-адреса нападающего. Злоумышленнику несложно имитировать атаку со стороны посторонних хостов. Далее по сценарию развития ситуации NIDS определит IP-адреса из сфальсифицированных злоумышленником сетевых пакетов, и в результате будут предприняты карательные действия против <невиновных> хостов. Для повышения надежности защиты необходимо контролировать всю архитектуру сети, размещая зонды (компьютеры с NIDS) в каждом сегменте сети (рис. 1).

Рис. 1. Схема размещения зондов в сети

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

Зонд 2 анализирует серверный трафик. Здесь входящий трафик отфильтрован межсетевым экраном. При корректно настроенном брандмауэре это более безопасная зона сети. Из-за уменьшения величины трафика число ложных срабатываний сокращается. Зонд 2 должен быть настроен с учетом специфики серверов.

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

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

Проект Snort

В рамках проекта Snort происходят разработка, распространение и поддержка одноименной сетевой системы обнаружения вторжений, предназначенной для мониторинга небольших сетей. Система Snort распространяется свободно в исходных текстах или в откомпилированном двоичном формате при условии соблюдения лицензии GNU GPL (General Public License).

Snort позволяет в режиме реального времени анализировать сетевой трафик, проверяя корректность структуры сетевых пакетов и соответствие содержимого определенным правилам. Для описания сетевых инцидентов и определения реакции системы используется гибкий язык сценариев. Встроенная база знаний позволяет определить распространенные типы сетевых нападений: <скрытое> сканирование (использующее установленные в сетевых пакетах флаги FIN, ASK), сбор баннеров сетевых сервисов (Services & OS fingerprinting), переполнение буфера различных сервисов, атаки, использующие преднамеренное нарушение структуры сетевых пакетов (ping of death), атаки вида <отказ в обслуживании> (DOS). Включено описание множества атак, эксплуатирующих определенные <дыры> в различных сетевых сервисах.

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

Система Snort способна работать:

  • как пакетный "снифер" (анализатор сетевого трафика, аналог tcpdump);
  • в режиме сохранения информации обо всех переданных и полученных пакетах (удобно для диагностики сети);
  • в качестве полнофункциональной сетевой системы обнаружения вторжения.

Список поддерживаемых системой Snort операционных систем и аппаратных платформ приведен в табл. 1.

Установка

Рассмотрим установку и настройки Snort для Unix-систем. Получить исходный текст и правила для Snort можно с официального Web-сервера проекта Snort (файлы snort-1.9.1.tar.gz и snortrule.tar.gz). Последняя версия системы на момент написания статьи - 1.9.1. Также нужно установить драйвер обработки сетевых пакетов - библиотеку libpcap (последняя версия - 0.7.2). Получить ее можно с официального Web-сервера проекта Tcpdump. Для хранения и обработки данных Snort можно использовать любую доступную базу данных, например MySQL, PostgreSQL или Oracle.

Сборка и установка библиотеки libpcap

#cp libpcap-current.tar.gz /var
#cd /var
#tar xvzf libpcap.tar.gz
#cd libpcap-XXXX.XX.XX
#./configure && make && make install

Перед инсталляцией Snort необходимо установить базу данных, в частности MySQL.

# rpm -ivh mysqll-X.XX.XX-X.rpm
# rpm -ivh mysql-devel-X.XX.XX-X.rpm
# rpm -ivh mysqlclients-X.XX.XX-X.rpm

Затем приступим к сборке Snort из исходников.

# cp snort-1.9.1.tar.gz  /var
# cd /var
# tar xvzf snort-1.9.1.tar.gz
# cd snort-1.8.1
# ./configure -with-mysql
# make
# make install

Основные параметры конфигурации сборки Snort:

-enable-smbalerts

(Включает механизм передачи WinPopup-сообщений через сервис Samba.)

-with-snmp

(Включает механизм передачи сообщений по SNMP.)

-with-mysql=DIR

(Включает поддержку базы данных MySQL, где DIR - путь к ядру базы данных.)

Например,

DIR=/usr/bin/mysql -with-odbc=DIR

(Включает поддержку подключения к базам данных через ODBC.)

-with-postgresql=DIR

(Включает поддержку базы данных PostgreSQL.)

-with-oracle=DIR

(Включает поддержку базы данных Oracle.)

-with-openssl=DIR

(Включает поддержку ssl.)

-with-libpcap-includes=DIR

(Указывает путь к заголовочным файлам библиотеки libpcap.)

-with-libpcap-libraries=DIR

(Указывает путь к библиотечным файлам libpcap.)

Приступим к установке правил:

# mkdir /etc/snort
# cp snortrules.tar.gz /etc/snort
# cd /etc/snort
# tar xvzf snortrule.tar.gz

После установки Snort создадим каталог для хранения логов системы:

#mkdir /var/log/snort

Для автоматизации управления Snort напишем управляющий скрипт (для Linux-систем):

#vim snortd
#!/bin/sh
#
#snortd	Start/Stop script for snort daemon.
#
#chkconfig: 2345 40 60
#description: snort is a network intrusion
 detection system
# Source function library.
. /etc/rc.d/init.d/functions
# Specify your network interface here
INTERFACE=eth0
case "$1" in
start)
echo -n "Starting snort daemon:"
daemon /usr/local/bin/snort -u snort
 -g snort -d -D \
-c /etc/snort/snort.conf -i $INTERFACE
touch /var/lock/subsys/snort
echo
;;
stop)
echo -n "Stopping snort daemon:"
killproc snort
rm -f /var/lock/subsys/snort
echo
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
# => end of script <=
# cp snortd /etc/rc.d/init.d
# cd /etc/rc.d/init.d
# chmod 755 snortd
# chkconfig -level 234 snortd on
#service snortd start

Можно получить краткую справку о работе Snort:

#snort -?

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

При работе в режиме снифера (рис. 2)Snort перехватывает сетевые пакеты и распечатывает IP-адреса и TCP/UDP/ICMP-заголовки пакетов. Режим устанавливается командой:

#snort -v
Рис. 2. Работа Snort в режиме снифера

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

#snort -vd

Более подробную информацию можно получить с ключом e (показать декодированные Ethernet-заголовки):

#snort -vde

Завершить работу после получения определенного числа пакетов (например, 10):

#snort -vd -n 10

Ключи вызова для Snort можно задать и таким образом:

#snort -v -d -e

Как и при работе с Tcpdump, разрешается отображать данные только по определенным пакетам. Для фильтрации пакетов задается регулярное выражение, использующее интерфейс BPF (Berkley Packet Filter). Например, следующая команда приводит к отображению данных о пакетах, полученных на сетевом интерфейсе eth1 и отправленных хостом с IP-адресом 192.168.1.5:

#snort -vde -i eth1 src host 192.168.1.5

При работе со сложными фильтрами можно записать BPF-выражение в файл, а затем, при вызове Snort, указать этот файл c ключом F:

#snort -vd -i eth2 -F my_bpf_filter

Режим сохранения информации от предыдущего отличается только тем, что записывает данные о переданных/полученных пакетах на диск. Включается вызовом с ключом l и указанием пути к каталогу для записываемых данных:

#snort -vde -l /path/to/snort/log/directory

По умолчанию данные хранятся в каталоге ./var/log/snort.

Допускается отсортировать данные относительно IP-адресов локальной сети (например, сеть 192.168.1.0 маска 255.255.255.0), задав ключ h:

#snort -v -h 192.168.1.0/24
 -l /path/to/snort/log/directory

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

#snort -l  /path/to/snort/log/directory -b

В указанном каталоге создается один файл, где сохраняются данные в двоичном виде в формате tcpdump. Запись данных идет намного быстрее, поскольку не тратится время на декодирование пакета из двоичного формата в текстовый. Такой формат хранения данных используют программы Tcpdump и Etherial. По умолчанию запись ведется в файл вида snort.log.[временная_метка]. Можно изменить имя файла, указав его с ключом L.

Прочитать данные из файла помогает вызов с ключом r. Так, допустимо считать из файла данные только о udp-пакетах:

#snort -dv -r packet.log udp | less

Для перевода Snort в режим обнаружения вторжения (NIDS) необходимо указать конфигурационный файл, описывающий набор правил (по умолчанию используется файл ~user/.snortrc). Данные правила применяются ко всем анализируемым пакетам. В этом режиме стоит отказаться от вывода данных на дисплей. Из-за разницы в скорости получения пакетов из сети и скорости вывода информации на экран пакеты могут потеряться. Также лучше записывать данные о пакетах в двоичном формате. Таким образом, строка запуска Snort в режиме NIDS будет выглядеть так:

#snort -d -l -b -h 192.168.1.0/24
 -c /etc/snort/snort.conf

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

-A fast

(Сделать запись в лог-файл. Формат записи: время, сообщение, IP адрес/порт источника и получателя пакета.)

-A full

(Запись в лог-файл, как и в предыдущем вызове. Добавляются данные о заголовке пакета. Этот способ используется по умолчанию.)

-A unsock

(Передать сообщение в Unix-сокет.)

-A none

(Отключить передачу сообщений.)

-s

(Передать сообщение в syslog. В зависимости от платформы будет сделана запись /var/log/secure или /var/log/messages.);

-M smb-hosts-file

(Используя сервис Samba, передать WinPopup сообщение на рабочие станции, список которых содержится в файле smb-hosts-file. Для использования этого способа передачи сообщений Snort должен быть собран с ключом -enable-smbalerts.)

Например, вести запись в двоичный файл и передавать сообщения на Windows-машины:

#snort -c snort.conf -b -M WORKSTATIONS

Для запуска Snort в режиме системного демона применяется ключ D.

#/usr/local/bin/snort
 -d -h 192.168.1.0/24
 -l /var/log/snortlogs
 -c /usr/local/etc/snort.conf -s -D

Следует отметить, что если нужно перезапустить Snort сигналом SIGHUP, в командной строке при запуске надо указывать абсолютный, а не относительный путь к двоичному файлу snort. Это условие добавлено из соображений безопасности.

Правила

Для правил Snort используется простой описательный язык, являющийся достаточно гибким и мощным средством. Правило делится на две логические части: заголовок и тело. Заголовок содержит указание на действие, выполняемое при совпадении условий правила, тип протокола, IP-адреса и информацию о портах источника и получателя пакета. В теле правила содержатся предупреждающее сообщение и информация о том, какую часть пакета необходимо проверить. Рассмотрим правило:

alert tcp any any -> 192.168.1.0/24 111
 (content:"|00 01 86 a5|"; msg:
 "mountd access";)

Расшифруем его заголовок (alert tcp any any -> 192.168.1.0/24 111):

  • При выполнении условий, указанных в правиле, передать сообщение, указанное в теле правила ("mountd access"), также записать сообщение в лог-файл.
  • Правило применяется ко всем TCP-пакетам, которые отосланы с каждого порта любого IP-адреса и направлены клиентам локальной сети 192.168.1.0/24 на порт 111.

Расшифруем тело правила (content: <|00 01 86 a5|>; msg: ;):

  • Проверяется тело сетевого пакета на содержание подстроки "00 01 86 a5".
  • Текст сообщения "mountd access".

Как видим, все довольно просто и логично. Узнать более подробно о разработке правил можно из документа Мартина Рейча (Martin Roesch) и документации, поставляемой с системой.

При сопровождении Snort не следует забывать о регулярном обновлении базы правил. Новые списки правил постоянно выкладываются на Web-сервере Snort.

Snort для Windows

Установка Snort для Win 32 более тривиальна. Достаточно просто запустить установочный exe-файл. Также требуется установить драйвер перехвата сетевых пакетов (например, WinPcap). Командный интерфейс системы не отличается от интерфейса Unix-версии.

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

Поддержка

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

* * *

Для обеспечения безопасности и отражения нападений нужно до тонкостей знать, как работают системы. Иногда для достижения успеха достаточно бывает опередить противника всего лишь на один шаг. И здесь помимо собственного опыта немалую роль играет получение знаний из различных источников. В силу специфики тематики большое количество специализированной информации устаревает быстрее, чем успевает появиться. Актуальную на данный момент информацию лучше искать в новостях и форумах, посвященных компьютерной безопасности Web-ресурсов, таких как организация CERT/CC.


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

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

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

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

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

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

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


Другие проекты NIDS

Подробный список коммерческих и некоммерческих проектов систем обнаружения вторжения можно получить по адресу http://www.cs.purdue.edu/coast/ids. Часть ссылок с некоторыми дополнениями приведена ниже:


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



 
Популярные книги

Photoshop CS2 для пользователя

Подробнее

Solid Works. Практическое руководство

Подробнее

Создание компьютерных игр без программирования (+CD)

Подробнее


 
Новости ИТ
08.01.2009  FreeBSD 7.1-RELEASE -- обновление операционной системы
08.01.2009  Появилась сборка Om 2008.12 для Neo FreeRunner от bytestore
08.01.2009  На T-Mobile G1 (Android) установили интерпретатор Python
08.01.2009  Apple опубликовала видеозапись доклада Филипа Шиллера на Macworld
08.01.2009  Mac Box Set - iLife, iWork и Leopard «в одном флаконе»
08.01.2009  DivX 7
08.01.2009  FileZilla 3.2.0
08.01.2009  Ноутбук HP Pavilion dv2, первый на базе Athlon Neo
08.01.2009  Замена несъемной батареи MacBook pro 17’’ обойдется в $179
08.01.2009  Подсчитали - прослезились: Intel закончила квартал даже хуже, чем ожидалось
08.01.2009  G.Skill TITAN - два быстрых SSD-накопителя типоразмера 2,5" с SATA-интерфейсом
08.01.2009  Serial ATA в этом году серьезно ускорится?
08.01.2009  Microsoft обеспечит Entourage поддержкой Exchange Web Services
08.01.2009  SanDisk Mobile Ultra 16 ГБ microSDHC и Memory Stick Micro (M2)
07.01.2009  2 ТБ данных на внешнем накопителе - LaCie Hard Disk MAX
07.01.2009  Почти официальные спецификации игровых ПК компании BFG на Core i7
07.01.2009  Apple выпустила новый MacBook Pro 17’’
07.01.2009  ASUS S121 - первый в мире нетбук с 512-ГБ накопителем SSD
07.01.2009  В iWork ’09 дебютирует онлайновый сервис iWork.com
07.01.2009  Apple объявила о выпуске iLife ’09
 
Полезно

 
Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100