Сергей Яремчук
В предыдущем номере журнала в статье «Централизованное обнаружение
вторжения с Samhain» была затронута возможность компилирования датчиков
host-based intrusion detection system Samhain как датчиков другой IDS –
Prelude. Как мне кажется, в последней сочетается довольно много положительных
качеств, чтобы обратить на эту IDS пристальное внимание.
Проект начат в 1998 году (одновременно с началом разработки Snort), основной
его целью было создание модульного сетевого IDS, но очень скоро разработчики
поняли, что за технологиями все равно не угнаться, и пересмотрели свои подходы
и требования к обеспечению безопасности систем. В результате Prelude
представляет собой полнофункциональную, т.н. гибридную, IDS. Она разрабатывалась
прежде всего для работы на компьютерах под управлением GNU/Linux, но
поддерживаются также и *BSD-системы, как и другие POSIX-совместимые системы,
распространяется свободно по лицензии GPL. Суть гибридности Prelude заключается
в том, что контролируются не только события, происходящие в сети, но и то, что
творится на локальных компьютерах, что, с одной стороны, повышает вероятность
обнаружения попытки вторжения, а с другой – уменьшает общее количество
разнородных приложений, с которыми придется иметь дело системному
администратору. Домашняя страница проекта: http://www.prelude-ids.org.
Состоит Prelude из нескольких
частей:
n Сенсоры – основная часть всей системы
обнаружения, развертываются на нескольких системах, чья безопасность
контролируется. Они собирают всю информацию и сообщают администратору в случае
обнаружения аномалий.
n LibPrelude – клей, связывающий все части
вместе, предоставляет единый интерфейс стандартных вызовов IDMEF, основанный на
XML, позволяет легко создавать сторонним разработчикам продукты «Prelude
Aware». Используется всеми модулями Prelude.
n Prelude-nids – датчик сетевой системы
обнаружения атак, который ищет знакомые сигнатуры в проходящих по сети пакетах.
В одной сети достаточно иметь один такой сенсор, поэтому его можно установить,
например, на сервер. По своей функциональности эквивалентен Snort.
n Prelude-lml – Prelude Log Monitoring Lackey –
еще один датчик, на этот раз контролирующий логи. В случае появления
подозрительных записей отправляет уведомление, является обязательным при
использовании host-based IDS-части. Может быть сконфигурирован как для
просмотра локальных лог-файлов, так и работать в сетевом режиме, контролируя
поступающие по сети данные. В последнем случае он может работать со всеми
syslog-совместимыми данными, поступающими от firewall, маршрутизаторов,
принтеров, других UNIX-систем и систем, которые могут преобразовать свои данные
к требуемому формату (например, Windows NT/2K/XP – Ntsyslog – http://ntsyslog.sourceforge.net).
Построенный на PCRE (Perl Compatible Regular Expressions), состоит из плагинов,
каждый из которых отвечает за анализ данных, поступающих от определенной
программы, или утилиты: IpFw, IpChains, NtSyslog, GRSecurity, Exim, Portsentry,
SSH, Squid и других.
n Libsafe – датчик, работающий только на
Linux-системах, автоматически подхватывается Prelude при установленной в
системе библиотеке libsafe (http://www.research.
avayalabs.com/project/libsafe). Эта библиотека позволяет защититься от атак
типа format string и buffer overflow, проверяя запросы к потенциально опасным
вызовам вроде sprintf, strcpy, wcscpy и пытается обнаружить попытку
переполнения буфера; если таковое обнаруживается, то выполнение опасной
программы прерывается. Учитывая, что библиотека, в общем, справляется со своим
назначением, а системные расходы незначительны, то ее можно рекомендовать к
применению.
n Prelude-manager – предназначен для
централизованного сбора данных, поступающих от всех датчиков, выдачи данных
подсистеме, реагирующей на событие, и сохранение данных ( MySQL, PostgreSQL,
Oracle, XML, plain-текст). В сети может быть несколько manager.
n Counter Measure Agents – исполнительня часть,
получает данные относительно выявленной аномалии от manager и принимает меры по
остановке нежелательных действий.
n frontends – для централизованного удобного
просмотра собранных данных, выявления неисправностей, позволяет просто
администрировать и способствует пониманию текущего состояния дел защиты. В этом
качестве выступают P(erl|relude) IDS Web Interface и Prelude-php-frontend.
Внешний интерфейс, написанный на Perl и РНР соответственно, предназначен для
просмотра данных, собранных Prelude и занесенных в базу данных.
Но это еще не все. Кроме упомянутых возможностей
в качестве сенсоров после наложения соответствующих патчей могут выступать
Snort, Nessus, Nagios, Argus, Honeyd, SysTrace, Bro IDS, Hogwash и планируется
AIDE. Также напомню, что датчики Samhain, которые позволяют контролировать
довольно большое количество аномалий на хостах, могут быть скомпилированы с
библиотекой LibPrelude, выступая тем самым и сенсором Prelude IDS. Все
остальные возможности (в том числе и планируемые) Prelude IDS в виде удобных
для восприятия таблиц представлены в документе «Prelude Feature Matrix» (http://www.prelude-ids.org/rubrique.php3?id_rubrique=24).
Мы же пойдем далее.
Установка Prelude IDS
Все основные компоненты для установки можно найти на
странице http://www.prelude-ids.org/rubrique.php3?id_rub-rique=6
в разделе Download Latest Version или Download Latest Snapshots. Как минимум
потребуются пакеты libprelude, prelude-manager, prelude-nids, prelude-lml и
Piwi. Дополнительно можно здесь же по ссылкам скачать и Libsafe, для работы с
OpenBSD pf понадобится prelude-pflogger, а также патчи к соответствующим программам
для реализации «Prelude aware»:
n Snort – Prelude reporting patch;
n Honeyd – Prelude reporting patch;
n Systrace – Prelude reporting patch;
n Nessus – Prelude reporting patch.
Но это то, что сразу в глаза бросается; если
посмотреть на столбик слева, то там найдете еще интересную колонку «Contributed
Software», в которой найдете еще несколько патчей и расширений к Prelude
(отправка алертов по e-mail, сбор статистики, патчи к Nessus, Nagios, Honeyd,
Bro IDS, convert_ruleset – скрипт, конвертирующий правила Snort (http://www.snort.org/downloads/snortrules.tar.gz),
в правила, понятные Prelude NIDS, и другие полезности).
Проверить скачанные пакеты можно, взяв ключ с:
#gpg --keyserver wwwkeys.pgp.net
--recv-keys 0x23D2FAC3
Если все нормально, то можно начинать. По ссылкам
можно скачать и прекомпилированные rpm-пакеты, собранные под RedHat 7.3 – 9.0,
в которых найдете даже nessus, заточенный под Prelude. Установка их заключается
в основном в стандартном rpm -i *.rpm, но в дальнейшем у меня возни с ними было
больше, поэтому будем затачивать все под свою систему, самостоятельно собирая
из исходников (тем более это не так уж и трудно). Для поклонников Gentoo
необходимые для сборки ebuild-файлы найдете в архиве piwi.
Для начала скачиваем и ставим libsafe, которая,
начиная с версии 2.11, может быть скомпилирована как датчик Prelude. Здесь все
просто.
#make
После окончания компиляции вводим:
#make install
Type y for
installing libsafe system wide?[default n] y
Теперь связываем переменную LD_PRELOAD с
библиотекой:
LD_PRELOAD=/lib/libsafe.so.2
export LD_PRELOAD
И заносим эти строки в файл /etc/profile.
В файле /etc/ld.so.preload также желательна такая
строка:
/lib/libsafe.so.2
Теперь устанавливаем libprelude:
#tar xvzf
libprelude-0-8-latest.tar.gz
#cd libprelude
#./configure
*** Dumping
configuration ***
- Use OpenSSL
: yes
- Generate
documentation : no
Библиотека автоматически компилируется с
поддержкой OpenSSL и требует наличия библиотек и заголовочных файлов. Из
дополнительных опций стоит отметить enable-gtk-doc для формирования
документации.
#make
#make install
После чего аналогично устанавливаем
prelude-manager. После конфигурирования возможно появление такой ошибки.
*** The libprelude-config
script installed by libprelude could not be found
*** If libprelude
was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or
set the LIBPRELUDE_CONFIG environment variable to the
*** full path to
libprelude-config.
configure: error:
Cannot find libprelude: Is libprelude-config in the path?
export
LIBPRELUDE_CONFIG=/usr/local/bin/
Совет установить переменную LIBPRELUDE_CONFIG не
помог. Необходимо, чтобы место расположения файла libprelude-config было видно
из переменной PATH.
#PATH=$PATH:/usr/local/bin/
#export PATH
В конце отчет.
*** Dumping
configuration ***
- Enable
OpenSSL : yes
- Generate
documentation : no
- Enable
MySQL plugin : yes
- Enable
PostgreSQL plugin : no
- Enable Xml
plugin : yes
Конфигуратор сам найдет установленные в системе
приложения, поэтому никаких опций первоначально можно и не задавать, только в
случае нестандартного местонахождения требуемых утилит и приложений.
И переходим к построению датчиков. Датчики могут
быть установлены как на той же машине, что и prelude-manager, так и разбросаны
по всем машинам в сети. При этом во избежание дублирования в одной сети
необходимо установить один датчик prelude-nids, а во избежание засорения
лишними пакетами лучше его приткнуть на тот же компьютер, что и
prelude-manager. Хотя, по большому счету, поступайте как вам удобнее, только помните,
что сетевые датчики должны контролировать не только пакеты, поступающие из
внешней сети, но и, чтобы пресечь действия некоторых «умников», стоять и во
всех внутренних сетях.
Действия и проблемы при установке prelude-nids и
prelude-lml аналогичны предыдущим.
После установки приступаем к конфигурированию.
Все конфигурационные файлы после установки помещаются каждый в свой подкаталог
в /usr/local/etc.
Но для начала создадим базу данных:
#/usr/local/bin/prelude-manager-db-create.sh
Команда задаст семь вопросов о паролях,
пользователях и других параметрах, необходимых при создании новой базы данных,
после чего выдает общий результат и после получения согласия попробует
соединиться с выбранной СУБД и создает новую базу данных.
Если все прошло удачно, можно запускать менеджер:
#prelude-manager --mysql
--dbhost localhost --dbname prelude --dbuser prelude --dbpass xxxxxx
Или лучше изменить секцию MySQL в
конфигурационном файле /usr/local/etc/prelude-manager/prelude-manager.conf,
воспользовавшись выводом утилиты:
[MySQL]
# Host the database is
listening on.
dbhost = localhost;
# Port the database is
listening on.
dbport = 3306;
# Name of the database.
dbname = prelude;
# Username to be used to
connect the database.
dbuser = prelude;
# Password used to connect
the database.
dbpass = xxxxxx;
Не забудьте только вставить пароль вместо хххххх.
Для того чтобы указать на интерфейс, где менеджер
будет ожидать подключения сенсоров в файле prelude-manager.conf, изменяем
параметр sensors-srvr, в котором указываем нужный IP-адрес. Теперь можно
приступать к регистрации сенсоров. Этот процесс в Prelude хоть и может забрать
изрядное количество времени при большом их количестве, но все таки удобен и
понятен и не требует особых и лишних телодвижений. Да, и не забудьте разрешить
iptables пропускать эти пакеты.
Для регистрации сенсора на сервере запускаем
утилиту manager-adduser, которая будет ждать подключения нового клиента, для
допуска которого будет выдан на консоль одноразовый пароль. А на клиентском
компьютере параллельно запускается sensor-adduser с указанием названия
регистрируемого сенсора и узла, где находится менеджер.
# manager-adduser
No Manager key
exist... Building Manager private key...
What keysize do
you want [1024] ?
Please specify
how long the key should be valid.
0 =
key does not expire
<n> = key expires in n days
Key is valid for
[0] : 0
Key length
: 1024
Expire
: Never
Is this okay
[yes/no] : yes
Generating a 1024
bit RSA private key...
...............++++++
.........................................................++++++
Writing new
private key to '/usr/local/etc/prelude-manager/prelude-manager.key'.
Adding self
signed Certificate to '/usr/local/etc/prelude-manager/prelude-manager.key'
Примечание: все, что программа вывела выше,
появится только при первом запуске и требуется для генерации ключей. Как
видите, можете указать требуемую длину ключа и время устаревания ключа (0 – без
устаревания).
Ниже – сообщения, относящиеся непосредственно к
регистрации сенсора.
Generated
one-shot password is "unyzvmgq".
Вот и наш пароль.
This password
will be requested by "sensor-adduser" in order to connect.
Please remove the
first and last quote from this password before using it.
- Waiting for
install request from Prelude sensors...
Все, программа ждет подключения сенсора. Порядок
регистрации сенсоров значения не имеет, начнем, наверное, с libsafe.
На компьютере, сенсор которого вы регистрируете,
вводим такую команду:
# sensor-adduser -s
<тип_сенсора> -m <IP-адрес_менеджера> -u <UID_пользователя>
В случае с локальным сенсором эта строка будет
выглядеть так:
# sensor-adduser
-s libsafe -m 127.0.0.1 -u 0
Now please start
"manager-adduser" on the Manager host where you wish to add the new
user.
Please
remember that you should call "sensor-adduser" for each configured
Manager entry.
Press enter when
done.
Если manager-adduser уже запущен, то смело жмем
на <Enter> и два раза вводим выданные им одноразовые пароли.
Please use the
one-shot password provided by the "manager-adduser" program.
Enter
registration one shot password : unyzvmgq
Please confirm
one shot password : unyzvmgq
connecting to
Manager host (127.0.0.1:5553)... Succeeded.
Username to use
to authenticate : libsafe
Please enter a
password for this user :
Please re-enter
the password (comfirm) :
Register user
"libsafe" ? [y/n] : y
Plaintext account
creation succeed with Prelude Manager.
Allocated ident
for libsafe@grinder: 509941450957934302.
В окне manager-adduser увидим для локального
сенсора такое сообщение.
sensor choose to
use PLAINTEXT communication method.
successfully
created user libsafe.
Sensor registered
correctly.
После чего он заканчивает свою работу.
Единcтвенное, что может сбить с толку, – это
запрашиваемое имя пользователя. В документации сказано, что это имя предназначено
для внутреннего употребления и не должно совпадать с учетной записью в
определенной системе. Других ограничений я не нашел. На этом регистрация
сенсора и заканчивается. Это все действия, которые вам нужно будет проделать,
для того чтобы libsafe сообщал Prelude IDS о проблемах. Все конфигурации
сенсоров сохраняются в /usr/local/etc/prelude-sensors/. Для удаленного сенсора
меняем только IP-адрес. Например, сенсор host-based IDS Samhain, об установке
которого я писал в предыдущем номере журнала и имеющий довольно продвинутые
возможности по детектированию локальных аномалий.
#sensor-adduser
--sensorname samhain --uid 0 --manager-addr 192.168.1.20
Please use the
one-shot password provided by the "manager-adduser" program.
Enter
registration one shot password :
Please confirm
one shot password :
connecting to
Manager host (192.168.1.20:5553)... Succeeded.
Обратите внимание: здесь не требуется вручную
заводить пользователя и давать пароль, система генерирует ключ.
What keysize do
you want [1024] ?
Please specify
how long the key should be valid.
0 =
key does not expire
<n> = key expires in n days
Key is valid for
[0] : 0
Key length
: 1024
Expire
: Never
Is this okay
[yes/no] : y
Generating a 1024
bit RSA private key...
...............................++++++
.............................................................++++++
Writing new
private key to '/usr/local/etc/prelude-sensors/ssl/samhain-key.0'.
Adding self
signed Certificate to '/usr/local/etc/prelude-sensors/ssl/samhain-key.0'
writing Prelude
Manager certificate.
Using already
allocated ident for samhain@grinder: 509941588396972429.
А в окне manager-adduser увидим такое сообщение.
- Waiting for
install request from Prelude sensors...
Connection from
192.168.1.1.
sensor choose to
use SSL communication method.
Writing Prelude
certificate to /usr/local/etc/prelude-manager/prelude-sensors.cert
Registration
completed.
Sensor registered
correctly.
Для остальных сенсоров действия аналогичны:
Запускаем опять на сервере manager-adduser и
получаем новый одноразовый пароль.
При помощи sensor-adduser регистрируем новый
сенсор. Для остальных входящих в комплект сенсоров строка запуска будет иметь
такой вид (для локальных сенсоров).
# sensor-adduser
-s prelude-nids -m 127.0.0.1 -u 0
---
Plaintext account
creation succeed with Prelude Manager.
Allocated ident
for prelude-nids@grinder: 255797674728517596.
# sensor-adduser
-s prelude-lml -m 127.0.0.1 -u 0
---
Plaintext account
creation succeed with Prelude Manager.
Allocated ident
for prelude-lml@grinder: 378730827130147037.
Если локальные сенсоры (т.е. по IP – 127.0.0.1)
можно удаленно регистрировать, зайдя на компьютер при помощи SSH, то
регистрация удаленных сенсоров таким образом сильно затягивается, да и с
безопасностью могут возникнуть проблемы.
Теперь можно запускать, а заодно и проверить
подключения. На сервере запускаем.
# prelude-manager
- Initialized 3
reporting plugins.
- Initialized 1
database plugins.
- Subscribing
Prelude NIDS data decoder to active decoding plugins.
- Initialized 1
decoding plugins.
- Initialized 0
filtering plugins.
- Subscribing
TextMod to active reporting plugins.
- Subscribing
XmlMod to active reporting plugins.
- sensors server
started (listening on unix socket port 5554).
Теперь очередь сенсоров. Libsafe подхватывается
автоматически, а поэтому после регистрации можно о нем забыть. Остались два
prelude-lml и prelude-nids. Указать параметры их запуска можно двумя способами:
в строке запуска и в конфигурационных файлах (usr/local/etc/prelude-lml/prelude-lml.conf
и /usr/local/etc/prelude-nids/prelude-nids.conf). Синтаксис их понятен и хорошо
комментирован, для начала достаточно в обеих указать в строке manager-addr
IP-адрес менеджера. При этом возможна запись такого вида:
manager-addr = x.x.x.x:port
|| y.y.y.y && z.z.z.z
При этом сенсор попытается соединиться сначала с
менеджером x.x.x.x:port, если это не получится, то с y.y.y.y и z.z.z.z, а если
и эта попытка не увенчается успехом, то данные будут сохранены локально. Для
lml-сенсора вce правила находятся /usr/local/etc/prelude-lml/ruleset/, узнать,
какие из них задействованы, можно в файле simple.rules в строках include. Для
ускорения работы можно закомментировать лишние, а новые, скачанные по ссылкам,
здесь же подключить (например, от Exaprobe http://www.exaprobe.com/labs/downloads),
второй вариант создать свой файл с правилами и прописать его в prelude-lml.conf
в блоке [SimpleMod] в строке ruleset, указав на новый файл с правилами.
Аналогично все правила для nids-сенсора прописаны в
/usr/local/etc/prelude-nids/ruleset/simple.rules. Запускаем сенсоры.
# prelude-nids -i
eth0
- Initialized 3
protocols plugins.
- Initialized 5
detections plugins.
pconfig.c:set_prelude_user_id:270
: (errno=No such file or directory) : couldn't find user prelude.
error processing
sensor options.
Ага, забыли завести пользователя prelude. Можно
по первой, при тестировании запустить от имени root (опция -u root), но в
остальных случаях делаем как положено. Поэтому командой заводим пользователя
prelude и при регистрации сенсоров не забываем указывать его uid.
#groupadd prelude
#adduser --no-create-home
--disabled-password --quiet --ingroup prelude prelude
Пробуем еще раз.
# prelude-nids -i
eth0
- Initialized 3
protocols plugins.
- Initialized 5
detections plugins.
- HttpMod
subscribed for "http" protocol handling.
- Done loading
Unicode table (663 Unichars, 0 ignored, 0 with errors)
- RpcMod
subscribed for "rpc" protocol handling.
- TelnetMod
subscribed for "telnet" protocol handling.
- ArpSpoof
subscribed to : "[ARP]".
- ScanDetect
subscribed to : "[TCP,UDP]".
/usr/local/etc/prelude-nids/ruleset/web-misc.rules
(81) Parse error: Unknow key rawbytes
/usr/local/etc/prelude-nids/ruleset/web-misc.rules
(82) Parse error: Unknow key rawbytes
/usr/local/etc/prelude-nids/ruleset/misc.rules
(70) Parse error: Unknow reference 5807.
- Signature
engine added 1453 and ignored 3 signature.
- Connecting to
UNIX prelude Manager server.
- Plaintext
authentication succeed with Prelude Manager.
- Initializing
packet capture.
В это время в окне терминала, в котором запущен
prelude-manager, должно появиться такое сообщение.
[unix] - accepted
connection.
[unix] -
plaintext authentication succeed.
[unix] - sensor
declared ident 255797674728517596.
Обратите внимание на последние цифры: они
соответствуют выданным программой при регистрации этого сенсора.
С lml поступаем аналогично.
# prelude-lml -u
root
- Initialized 3
logs plugins.
- SimpleMod
plugin added 256 rules.
Added monitor for
'/var/log/messages'.
Added monitor for
'/var/log/auth.log'.
- Subscribing
plugin SimpleMod
- Connecting to
UNIX prelude Manager server.
- Plaintext
authentication succeed with Prelude Manager.
- Subscribing
plugin Paxmod
Subscribing
plugin SimpleMod
После тестирования запускаем все приложения в
качестве демонов.
# prelude-manager
-d
- Initialized 3
reporting plugins.
- Initialized 1
database plugins.
- Subscribing
Prelude NIDS data decoder to active decoding plugins.
- Initialized 1
decoding plugins.
- Initialized 0
filtering plugins.
Daemon started,
PID is 1018.
# prelude-lml -d
- Initialized 3
logs plugins.
Daemon started,
PID is 1022.
# prelude-nids -i
eth1 -d
- Initialized 3
protocols plugins.
- Initialized 5
detections plugins.
И так далее. Для автоматического запуска при
старте системы создайте отдельный файл (например, rc.prelude) и пропишите
строки для его запуска в /etc/rc.d/rc.local или /etc/rc.d/boot.local для SUSE.
Теперь для тестирования можно посканировать сеть при помощи nmap или
воспользоваться утилитами IDSwakeup (http://www.hsc.fr/res-sources/outils/idswakeup/download)
или nidsbench (http://www.anzen.com/research/nidsbench),
специально предназначенными для испытания NIDS.
Теперь смотрим, что творится в лог-файлах. Кроме
записи в базу данных текстовые логи ведутся в файле /var/log/prelude.log и в
формате XML в /var/log/prelude-xml.log. Там находим следующее.
* Heartbeat:
ident=1
* Analyzer ID:
255797674728517596
* Analyzer model:
Prelude NIDS
* Analyzer
version: 0-820040430
* Analyzer class:
NIDS
* Analyzer
manufacturer: The Prelude Team http://www.prelude-ids.org
* Analyzer OS
type: Linux
* Analyzer OS
version: 2.4.22
* Node[unknown]:
* Process:
pid=1031 name=prelude-nids
* Creation time:
0xc44478fc.0x6931d00 (2004-05-06 11:42:36.410+0300)
Это забилось сердце сенсора NIDS. А ниже то, что
он выловил в результате нашего испытания. При этом система пытается собрать
максимальную информацию об объекте возмущения, в том числе и пытается
определить удаленную операционную систему.
* Alert: ident=4
* Classification
type: unknown
* Classification:
SCAN UPnP service discover attempt
* Classification
URL: unknown
*
* Creation time:
0xc4448213.0x2692500 (2004-05-06 12:21:23.150+0300)
* Detection time:
0xc4448213.0x267bf00 (2004-05-06 12:21:23.150+0300)
* Analyzer ID:
255797674728517596
* Analyzer model:
Prelude NIDS
* Analyzer
version: 0-820040430
* Analyzer class:
NIDS
* Analyzer
manufacturer: The Prelude Team http://www.prelude-ids.org
* Analyzer OS
type: Linux
* Analyzer OS
version: 2.4.22
* Node[unknown]:
* Process:
pid=1134 name=prelude-nids
*
* Impact
severity: low
* Impact
completion: NULL
* Impact type:
recon
* Impact
description: Detection of a Network Scan
*
*
*** Source
information ***
* Source spoofed:
unknown
* Node[unknown]:
*
Addr[ipv4-addr]: 192.168.1.20
* Service:
port=1034 protocol=udp
*
*** Target
information ***
* Target decoy:
unknown
* Node[unknown]:
*
Addr[ipv4-addr]: 239.255.255.250
* Service:
port=1900 protocol=udp
*
*** Additional
data within the alert ***
* Ethernet
header: 0:90:f5:10:66:ce -> 1:0:5e:7f:ff:fa [ether_type=ip (2048)]
* Ip header:
192.168.1.20
-> 239.255.255.250 [hl=20,version=4,tos=0,len=161,id=47,ttl=1,prot=17]
* Udp header:
1034 -> 1900 [len=141]
* Payload header:
size=133 bytes
* Payload
Hexadecimal Dump:
4d 2d 53 45 41
52 43 48 20 2a 20 48 54 54 50 2f M-SEARCH * HTTP/
31 2e 31 0d 0a
48 6f 73 74 3a 32 33 39 2e 32 35 1.1..Host:239.25
35 2e 32 35 35
2e 32 35 30 3a 31 39 30 30 0d 0a 5.255.250:1900..
53 54 3a 75 72
6e 3a 73 63 68 65 6d 61 73 2d 75 ST:urn:schemas-u
70 6e 70 2d 6f
72 67 3a 64 65 76 69 63 65 3a 49 pnp-org:device:I
6e 74 65 72 6e
65 74 47 61 74 65 77 61 79 44 65 nternetGatewayDe
76 69 63 65 3a
31 0d 0a 4d 61 6e 3a 22 73 73 64 vice:1..Man:"ssd
70 3a 64 69 73
63 6f 76 65 72 22 0d 0a 4d 58 3a p:discover"..MX:
33 0d 0a 0d
0a 3....
* Detection
Plugin Name: SnortRules
* Detection
Plugin Author: The Prelude Team
* Detection
Plugin Contact: prelude-devel@prelude-ids.org
* Detection
Plugin Description: Snort signature parser.
* Snort rule ID:
1917
* Snort rule
revision: 4
Для немедленных уведомлений по почте используйте
Perl-скрипт alert2mail (http://www.prelude-ids.org/download/contribs/alert2mail).
Использовать его просто, но потребуется модуль MIME::Lite.
Первой строкой добавляем:
#! /usr/bin/perl
в строке From =>’root at localhost’ ставим необходимый e-mail, и при
желании можно русифицировать сообщения.
Теперь запускаем, скрипт будет считывать новые
данные, поступающие в лог-файл (tail -f /var/log/prelude.log), и анализировать
их, при появлении опасных строк администратору будет выслан e-mail.
Другой скрипт http://www.prelude-ids.org/download/contribs/prelude-stats-pl.txt
позволяет собирать статистику на основании данных, найденных в
/var/log/prelude.log. Чтобы не перегружать слишком сеть сообщения от одиночных
сенсоров или удаленных групп сенсоров, возможно использование т.н. Relay
Manager, которые собирают информацию от своей группы, а затем переправляют по
цепочке центральному менеджеру.
В файле prelude-manager.conf за их активацию
отвечают два параметра, в которых требуется указать соответствующий
IP-адрес(a): admin-srvr и relay-manager (в данном случае это следующий в
цепочке Relay Manager, которому переправлять информацию).
Ставим интерфейс
Все это хорошо, но при большом количестве данных лучше анализировать их при
помощи выборок из базы данных. Хотя, кстати, имеется документ, рассказывающий,
как сделать просмотр без фронтенда при помощи Internet Explorer: http://orbital.wiretapped.net/~technion.
Совсем недавно на сайте появился GUI-инструмент
Prelude GTK2 Frontend, который не хочет компилироваться нормально. В
документации имеется упоминание на PHP, ncurses и java-фронтендах, но ссылок на
сайте не нашел. Поэтому основным и довольно удобным средством просмотра и
анализа результатов выступает Piwi – P(erl|relude) IDS Web Interface,
позволяющий просматривать листинги предупреждений, в том числе и детально их
сортировать, выводить информацию о IP- и MAC-адресах, операционной системе,
проводить статистику атак по дням, часам, top 10 атак и атакующих и прочее,
плюс возможность самостоятельного поиска при помощи регулярных выражений.
Установка piwi сложностей не представляет.
Для работы нам понадобятся (большинство,
наверное, уже имеется, если нет, то придется установить, работать однозначно не
будет): mysql или PostgreSQL, Аpache, не имеет значения какой – 1.3.x или 2.x,
Perl от 5.6.x, DBI и DBD модули (DBD::mysql v2.9002 не работает), для вывода
даты Date::Calc (http://search.cpan.org/author/STBEY).
Опционально могут пригодиться Geo::IP (http://www.maxmind.com/app/linux)
для вывода страны по IP-адресу, для вывода графики GD, GD::Text, GD::Graph и
GD::Graph3d (http://www.boutell.com, http://stein.cshl.org/WWW/software/GD,
http://search.cpan.org/
author/MVERB), для генерации отчетов в форматах ps и pdf: ghostscript и
PDF::API2, и для эффективной работы веб-сервера с perl и базой данных mod_perl
(http://perl.httpd.org) и Apache::DBI (http://search.cpan.org/author/ABH).
Также рекомендуется Prelude компилировать с
недавно появившейся библиотекой LibPreludeDB (http://www.prelude-ids.org/download/snapshots/trunk/libpreludedb-trunk-latest.tar.gz),
но это необязательно, да и ее компиляция вызывает пока только муки.
Теперь, если все необходимое скачано и
установлено, просто распаковываем архив в корневой каталог веб-сервера.
Например для Slackware (в SUSE все серверные
каталоги найдете в /srv).
# cd /var/www/htdocs/
# tar -xzvf
/path/to/piwi-0-8-latest.tar.gz
Теперь пользователя, от имени которого работает
Apache, делаем хозяином подпапки generated.
#chown -R nobody.nobody
generated/
Здесь обратите внимание, что в разных
дистрибутивах Apache выполняется от пользователей с разными именами.
Так в том же SUSE строка будет выглядеть так.
#chown -R wwwrun.nogroup
generated/
А Mandrake, ALTLinux и Gentoo это будет другая
строка.
#chown -R apache.apache
generated/
В общем, при наличии проблем с доступом проверьте
все еще раз. Далее в подкаталоге Functions в файле config.pl исправьте
параметры доступа к базе данных (в самом верху файла), вставьте туда значения,
введенные при работе скрипта prelude-manager-db-create.sh.
Примерно так.
# Database :
# здесь выбираем
используемую базу данных mysql или Pg
$conf{'dbtype'} =
'mysql';
# имя раннее созданной
базы данных
$conf{'dbname'} =
'prelude';