Эта статья расскажет, как установить систему обнаружения вторжений OSSEC и вывести алерты OSSEC в относительно удобный и информативный Web-интерфейс. OSSE может выводить алерты в syslog, СУБД или посылать их другую IDS — Prelude. Эта IDS в последние годы практически не развивается, но имеет в своем составе неплохой Web-интерфейс — Prewikka. Так же эта система позволяет подключать к себе другие IDS помимо OSSEC — Snort, например. Сначала мы установим Prelude IDS, затем Prewikk'у. Потом подключим OSSEC к Prelude. В процессе нужно будет создать две базы. Одну будет использовать Prewikka для хранения настроек пользователей и пр. Во вторую prelude-manager будет сохранять информацию по событиям, а Prewikka будет оттуда ее читать.
Для установки я буду использовать виртуальную машину с установленной CentOS 6.4. Сначала необходимо установить Prelude-IDS. Разработчики предоставили инструкции по установке из пакетов и исходников практически для всех популярных платформ. Здесь можно скачать исходники, RPM и SRPM.
Установка Prelude Manager
Подключаем репозиторий для CentOS/RHEL:
[root@ossec ~]# yum install https://www.prelude-ids.org/attachments/download/297/prelude-ids-rhel-2-1.noarch.rpm
Далее устанавливаем Prelude Manager и пакеты необходимые для работы с общей базой данных:
[root@ossec ~]# yum install prelude-manager prelude-manager-db-plugin libpreludedb-mysql
Запускаем MySQL:
[root@ossec ~]# /etc/init.d/mysqld start
[root@ossec ~]# chkconfig mysqld on
Теперь создаем БД и пользователя:
[root@ossec ~]# mysql -u root -p
mysql> CREATE database prelude;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON prelude.* TO prelude@'localhost' IDENTIFIED BY 'preludepasswd';
Query OK, 0 rows affected (0.00 sec)
[root@ossec ~]# mysql -u root prelude -p < /usr/share/libpreludedb/classic/mysql.sql
Редактируем конфиг Prelude Manager:
[root@ossec ~]# vim /etc/prelude-manager/prelude-manager.conf
Добавляем туда следующие строки (или же убираем комментарии):
[db]
type = mysql
host = localhost
port = 3306
name = prelude
user = prelude
pass = preludepasswd
Теперь необходимо создать профиль для Prelude Manager:
[root@ossec ~]# prelude-admin add "prelude-manager" --uid 0 --gid 0
Generating 2048 bits RSA private key... This might take a very long time.
[Increasing system activity will speed-up the process].
Generation in progress...
Здесь есть один момент. Как и предупреждает программа, генерация ключа может занять очень много времени.
Есть возможность ускорить этот процесс:[root@ossec ~]# yum install rng-tools [root@ossec ~]# rngd -r /dev/urandom
После завершения генерации ключа можно запускать Prelude Manager:
[root@ossec ~]# /etc/init.d/prelude-manager restart
Убедимся, что сервер стартовал нормально:
Aug 19 05:36:33 ossec prelude-manager: INFO: server started (listening on 127.0.0.1 port 4690).
Aug 19 05:36:33 ossec prelude-manager: INFO: Subscribing db[default] to active reporting plugins.
Aug 19 05:36:33 ossec prelude-manager: INFO: Generating 1024 bits Diffie-Hellman key for TLS...
Установка Prewikka
Установим необходимые пакеты:
[root@ossec ~]# yum install prewikka libpreludedb-python
Создаем еще одну базу для Prewikka:
[root@ossec ~]# mysql -u root -p
Enter password:
mysql> CREATE database prewikka;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON prewikka.* TO prewikka@'localhost' IDENTIFIED BY 'prewikkapasswd';
Query OK, 0 rows affected (0.01 sec)
[root@ossec ~]# mysql -u root prewikka -p < /usr/share/prewikka/database/mysql.sql
Теперь отредактируем файл конфигурации Prewikka и укажем правильные базы данных:
[root@ossec ~]# vim /etc/prewikka/prewikka.conf
В нашем случае необходимо добавить (или отредактировать) следующие строки:
[idmef_database]
type: mysql
host: localhost
user: prelude
pass: preludepasswd
name: prelude
[database]
type: mysql
host: localhost
user: prewikka
pass: prewikkapasswd
name: prewikka
Теперь поставим Apache:
[root@ossec ~]# yum install httpd
Создаем виртуальный хост:
[root@ossec ~]# vim /etc/httpd/conf.d/prewikka.conf
<VirtualHost *:80>
ServerName my.server.org
Setenv PREWIKKA_CONFIG "/etc/prewikka/prewikka.conf"
<Location "/">
AllowOverride None
Options ExecCGI
<IfModule mod_mime.c>
AddHandler cgi-script .cgi
</IfModule>
Order allow,deny
Allow from all
</Location>
Alias /prewikka/ /usr/share/prewikka/htdocs/
ScriptAlias / /usr/share/prewikka/cgi-bin/prewikka.cgi
</VirtualHost>
Казалось бы, что все готово, но тут нас поджидает несколько подводных камней. Во-первых, необходимо отключить или настроить SELinux, во-вторых, открыть 80 порт на локальном файерволе, в-третьих, установить права доступа к папке с файлом конфигурации:
[root@ossec ~]# chmod o+x /etc/prewikka/
Тем не менее, если сейчас попробовать зайти в Prewikk'у, произойдет ошибка.
Проверим логи:
[root@ossec ~]# tail -f /var/log/httpd/error_log
[Mon Aug 19 06:26:53 2013] [error] [client 172.16.86.1] from prewikka import utils, siteconfig, cairoplot
[Mon Aug 19 06:26:53 2013] [error] [client 172.16.86.1] File "/usr/lib/python2.6/site-packages/prewikka/cairoplot.py", line 34, in <module>
[Mon Aug 19 06:26:53 2013] [error] [client 172.16.86.1]
[Mon Aug 19 06:26:53 2013] [error] [client 172.16.86.1] import cairo
[Mon Aug 19 06:26:53 2013] [error] [client 172.16.86.1] ImportError
[Mon Aug 19 06:26:53 2013] [error] [client 172.16.86.1] :
[Mon Aug 19 06:26:53 2013] [error] [client 172.16.86.1] No module named cairo
Устанавливаем недостающий модуль:
[root@ossec ~]# yum search cairo
Теперь можно зайти на сервер и залогиниться с парой логин/пароль admin/admin.
Установка OSSEC
Скачать архивы с последней версией OSSEC можно здесь. На той же странице написано о том, что RPM для RHEL/CentOS можно взять из репозитория AtomiCorp. Нам такой вариант не подойдет, так как OSSEC в том репозитории собран без поддержки libprelud, тем не менее, при установке агентов на конечные сервера, его вполне можно использовать.
Итак, скачиваем и распаковываем последнюю версию OSSEC.
[root@ossec ~]# wget http://www.ossec.net/files/ossec-hids-2.7.tar.gz
[root@ossec ~]# tar xvzf ossec-hids-2.7.tar.gz
Теперь для того, чтобы скомпилировать OSSEC ставим libprelude-devel, компилятор и make
[root@ossec ~]# yum install libprelude-devel gcc make
Устанавливаем параметры компиляции:
[root@ossec ~]# cd ossec-hids-2.7/src/
[root@ossec src]# make setprelude
Запускаем установку
[root@ossec src]# ../install.sh
Скрипт установки задаст несколько вопросов — какой использовать язык, тип установки и пр. Самое главное — указать верный тип установки. В нашем случае — server. Так же я не рекомендую включать функцию active response без предварительного чтения мануала по ней и настройки под себя.
OSSEC HIDS v2.7 Installation Script - http://www.ossec.net
You are about to start the installation process of the OSSEC HIDS.
You must have a C compiler pre-installed in your system.
If you have any questions or comments, please send an e-mail
to dcid@ossec.net (or daniel.cid@gmail.com).
- System: Linux ossec 2.6.32-358.el6.x86_64
- User: root
- Host: ossec
-- Press ENTER to continue or Ctrl-C to abort. --
1- What kind of installation do you want (server, agent, local, hybrid or help)? server
- Server installation chosen.
2- Setting up the installation environment.
- Choose where to install the OSSEC HIDS [/var/ossec]:
- Installation will be made at /var/ossec .
3- Configuring the OSSEC HIDS.
3.1- Do you want e-mail notification? (y/n) [y]: n
--- Email notification disabled.
3.2- Do you want to run the integrity check daemon? (y/n) [y]:
- Running syscheck (integrity check daemon).
3.3- Do you want to run the rootkit detection engine? (y/n) [y]:
- Running rootcheck (rootkit detection).
3.4- Active response allows you to execute a specific
command based on the events received. For example,
you can block an IP address or disable access for
a specific user.
More information at:
http://www.ossec.net/en/manual.html#active-response
- Do you want to enable active response? (y/n) [y]: n
- Active response disabled.
3.5- Do you want to enable remote syslog (port 514 udp)? (y/n) [y]:
- Remote syslog enabled.
3.6- Setting the configuration to analyze the following logs:
-- /var/log/messages
-- /var/log/secure
-- /var/log/maillog
-- /var/log/httpd/error_log (apache log)
-- /var/log/httpd/access_log (apache log)
- If you want to monitor any other file, just change
the ossec.conf and add a new localfile entry.
Any questions about the configuration can be answered
by visiting us online at http://www.ossec.net .
--- Press ENTER to continue ---
После финального нажатия клавиши «ввод», начнется компиляция OSSEC и его копирование в директорию установки (по умолчанию это /var/ossec/).
Укажем в файле конфигурации то, что события необходимо отправлять в prelude-manager.
[root@ossec src]# vim /var/ossec/etc/ossec.conf
В секцию добавляем строку <prelude_output>yes</prelude_output>.
Должно получиться примерно так:
<ossec_config>
<global>
<email_notification>no</email_notification>
<prelude_output>yes</prelude_output>
</global>
<rules>
<include>rules_config.xml</include>
<include>pam_rules.xml</include>
<include>sshd_rules.xml</include>
...
Теперь подключим OSSEC к prelude. Запускаем в одной консоли сервер регистрации:
[root@ossec ~]# prelude-admin registration-server prelude-manager
The "p9gnqy98" password will be requested by "prelude-admin register"
in order to connect. Please remove the quotes before using it.
Generating 1024 bits Diffie-Hellman key for anonymous authentication...
Waiting for peers install request on 0.0.0.0:5553...
Waiting for peers install request on :::5553...
В другой — регистрируем OSSEC командой:
[root@ossec ~]# prelude-admin register OSSEC "idmef:w" 127.0.0.1 --uid ossec --gid ossec
Generating 2048 bits RSA private key... This might take a very long time.
[Increasing system activity will speed-up the process].
Generation in progress... X
Как и в прошлый раз, мы можем ускорить генерацию ключей командой:
[root@ossec ~]# rngd -r /dev/urandom
Как только генерация ключей завершится, во второй консоли будет предложено ввести одноразовый пароль. В данном случае — это «p9gnqy98».
Теперь перезапускаем оба демона.
[root@ossec ~]# /etc/init.d/prelude-manager start
[root@ossec ~]# /etc/init.d/ossec start
Если теперь зайти в Prewikk'у, то можно видеть приходящие из OSSEC уведомления и сигналы тревоги.
Если зайти во вкладку Agents, в списке агентов должны значится prelude-manager и OSSEC.
Итоги
Итак, мы установили на наш сервер Prelude IDS. Настроили вывод его оповещений в СУБД MySQL, установленную на этом же сервере. Так же мы создали еще одну БД для Web-интерфейса Prewikka, который входит в состав Prelude IDS. После всего этого мы скомпилировали OSSEC HIDS со специальными опциями, которые позволяют отправлять события OSSEC не только в syslog или СУБД, но и прямо в Prelude.
Теперь при появлении подозрительных событий в логах, OSSEC сгенерирует алерт, запишет его в файл /var/ossec/logs/ossec.log, отправит в Prelude IDS. Prelude в свою очередь запишет его в базу данных, а Prewiika при заходе на нее обеспечит отображение всех этих событий в удобочитаемом виде.
В этой статье я не описал довольно много вещей, которым, если будут заинтересованные читатели, можно посвятить еще не одну статью.
Например, как установить OSSEC на сервер без компилятора, как настроить и обслуживать БД для Prelude, как устанавливать и настраивать агентов OSSEC на другие сервера, как настраивать свои собственные правила генерации событий для OSSEC.
Автор: Traveler
К сожалению на хабре откомментится не удалось. Поэтому задам вопрос здесь:
почему-то не запускается процесс prelude:
[root@localhost default]# /etc/init.d/prelude-manager restart
Запускается prelude-manager: 09 Oct 13:32:42 (process:2467) INFO: Subscribing Normalize to active decoding plugins.
09 Oct 13:32:42 (process:2467) WARNING: prelude-client: error initializing prelude-client: profile ‘prelude-manager’ does not exist
Profile ‘prelude-manager’ does not exist. In order to create it, please run:
prelude-admin add “prelude-manager” –uid 0 –gid 0.
[СБОЙ ]
Хотя пользователь был создан, но у него странные пермишены выставлены:
[root@localhost default]# prelude-admin list
Profile Permission Issuer AnalyzerID
————————
prelude-admin n/a n/a
prelude-manager n/a n/a
Кто-нибудь знает, как с этим бороться?
собственно пермишены установить удалось, но вот демон всё-равно не запускается! Что делать?
[root@localhost ossec]# prelude-admin list
Profile Permission Issuer AnalyzerID
—————————————–
prelude-manager idmef:w 1036746357101326