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 сниферов и
анализаторов) - скачать можно отсюда: ftp://ftp.ee.lbl.gov/libpcap.tar.Z
Компилирование и Установка SNORT
Основной сайт для Snort -
http://www.snort.org. Snort распространяется
согласно лицензии GNU GPL автором Мартином Роешом. После загрузки архива,
разархивируем его в каталог snort-1.7:
root @lord]# tar -zxvf snort-1.7.tar.gz
После загрузки libpcap, разархивируйте его подобным образом.
Войдите в каталог libpacp, и выполните следующие шаги:
root @lord]# ./configure root @lord]# make
Теперь, мы компилируем Snort. Войдите в каталог, в котором
находится Snort, и выполните следующие команду:
root @lord]#
./configure --with-libpcap-includes=/path/to/libpcap/ {* in my case it was :
root@lord ./configure --with-libpcap-includes=/home/dood/libpcap }
root @lord]# make root @lord]# make install
Snort теперь установлен на вашей
машине.
Создайте директорию, в которой Snort будет хранить файлы
регистрации:
root @lord]#mkdir /var/log/snort
И как всегда, выполните:
root @lord]# whereis snort
чтобы подтвердить, где установлен
Snort.
Основы структуры Snort
Архитектура Snort состоит из трех
основных компонентов, которые могут быть описаны как:
1. Дешифратор
пакетов
: готовит перехваченные пакеты в форму типа данных, которые затем могут
быть обработаны механизмом обнаружения. Дешифратор пакетов может регистрировать
Ethernet, SLIP и PPP пакеты.
2. Механизм Обнаружения : анализирует и
обрабатывает пакеты, поданные к нему "Дешифратором", основываясь на правилах
Snort. Сменные модули могут быть включены в механизм обнаружения, чтобы
увеличить функциональные возможности Snort.
3. Logger/Alerter:
Регистратор позволяет вам регистрировать информацию, собранную дешифратором
пакетов в удобочитаемом формате. По умолчанию файлы регистрации сохранены в
каталоге :/var/log/Snort.
Механизм предупреждения посылает предупреждения к syslog, файлу,
Unix sockets или базе данных. По умолчанию, все предупреждения сохранены в
файле: /var/log/Snort/alerts.
Использование SNORT и его режимы
В этом разделе мы обсудим концепции и команды
SNORT в подробностях. Начнем с простой команды, которая отображает все ключи
программы:
root@lord snort -?
Команда выдаст следующее:
-*> Snort! <*-
Version
1.7
By Martin Roesch (roesch@clark.net, www.snort.org)
USAGE: snort
[-options]
Options:
-A Set alert mode: fast, full, or none (alert
file alerts only)
'unsock' enables UNIX socket logging
(experimental).
-a Display ARP packets
-b Log packets in tcpdump
format (much faster!)
-c Use Rules File
-C Print out payloads with
character data only (no hex)
-d Dump the Application Layer
-D Run
Snort in background (daemon) mode
-e Display the second layer header
info
-F Read BPF filters from file
-g Run snort gid as 'gname' user
or uid after initialization
-h Home network =
-i Listen on
interface
-l Log to directory
-n Exit after receiving
packets
-N Turn off logging (alerts still work)
-o Change the rule
testing order to Pass|Alert|Log
-O Obfuscate the logged IP
addresses
-p Disable promiscuous mode sniffing
-P set explicit
snaplen [sp? -ed.] of packet (default: 1514)
-q Quiet. Don't show
banner and status report
-r Read and process tcpdump file
-s Log
alert messages to syslog
-S
Как уже говорилось, SNORT выполняется в трех
различных режимах:
1. Режим
пакетного снифера : Когда Snort работает в этом режиме,
он читает и дешифрует все сетевые пакеты и формирует дамп к stdout (ваш экран).
Для перевода Snort в режим сниффера используйте ключ -v:
root @lord]# ./snort -v
Примечание: В этом режиме он показывает только заголовки
пакетов.
Для просмотра заголовка + содержания пакета выполните:
root
@lord]# ./snort -X
2. Режим регистрации
пакетов : Этот режим записывает
пакеты на диск и декодирует их в ASCII формат.
root @lord]# Snort -l <
directory to log packets to >
2. Режим обнаружения
вторжения :
Сигнальные данные регистрируются механизмом
обнаружения (по умолчанию файл называемый " alert" в каталоге регистрации,
но можно через syslog, Winpop сообщения и т.д.) Каталог регистрации по умолчанию
-/var/log/snort
, может быть изменен, используя ключ "-l".
Теперь
рассмотрим типичную команду Snort для анализа пакета:
root
@lord]# snort -v -d -e -i eth0 -h 192.168.3.0/24
Здесь, мы рассматриваем
подсеть класса C в пределах от 192.168.3.0-192.168.3.255 (маска подсети:
255.255.255.0). Сделаем подробный разбор вышеупомянутой команды, чтобы понять,
что она означает:
'-v ' : посылает подробный ответ на вашу консоль.
'-d ': формирует дамп декодированных данных прикладного уровня
'-e ':
показывает декодированные Ethernet заголовки.
'-i ': определяет интерфейс,
который будет проверен для анализа пакета.
'-h ': определяет сеть, которой
нужно управлять
В следующем примере мы заставим Snort генерировать предупреждения:
Режимы предупреждения Snort состоят из трех основных групп (можно задавать
свои):
a. Быстрый: записывает предупреждения в файл 'alert' в одну
строку, так же как и в syslog.
b. Полный: записывает предупреждения в
файл 'alert' c полным декодированным заголовком.
c. None: - не выдает
предупреждения.
Команда тогда изменится на следующую:
root @lord]# snort -v -d -e -i eth0 -h
192.168.3.0/24 -A fast
Чтобы посылать аварийные
сообщения syslog, используйте ключ '-s' вместо этого. Предупреждения
появятся в /var/log/secure или /var/log/messages
:
root @lord]# snort -v -d -e -i eth0 -h 192.168.3.0/24 -s
До сих пор все перехваченные и проанализированные пакеты
показывались на вашем экране. Если вы хотите, чтобы Snort записывал их в ваш
файл регистрации, вы должны использовать опцию "-l" и указать имя
директории для записи логов (например /var/log/snort
):
root @lord]#snort -v -d -e -i eth0 -h
192.168.3.0/24 -A full -l /var/log/snort
Чтобы регистрировать пакеты
в формате tcpdump и производить минимальные предупреждения, используйте
ключ '-b
':
root @lord]#snort -b -i eth0 -A fast -h 192.168.3.0/24 -s -l
/var/log/snort
В
вышеупомянутых командах, Snort регистрирует все пакеты в вашем сегменте сети.
Если вы хотите регистрировать только некоторые типы пакетов в зависимости от
правил, используете ключ '-c
'.
root @lord]# snort -b -i eth0 -A fast -h 192.168.5.0/24
-s -l /var/log/snort -c /snort-rule-file.
Дополнительную информацию можно получить здесь:
www.snort.org
www.silicondefence.com
www.whitehats.com
project.honeynet.org