Устанавливаем OSSEC (HIDS) и Prewikka (WebUI)

от автора

Эта статья расскажет, как установить систему обнаружения вторжений 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.
prewikka

Установка 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.

ссылка на оригинал статьи http://habrahabr.ru/post/190500/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *