Инструкция: внедряем HIDS OSSEC

от автора

OSSEC (Open Source Host-based Intrusion Detection System) – это хостовая система обнаружения вторжений. Если у вас появилась задача проверки контроля целостности файлов на ваших серверах, логирования различных действий на серверах, получения событий безопасности с ваших серверов (а также любых других) и оповещений об этих событиях, вывода различных отчетов и многое другое, то HIDS OSSEC — отличное решение под эти задачи. OSSEC может работать локально, по схеме агент + сервер и в гибридном режиме (агент->сервер->сервер). Мы будем рассматривать схему агент + сервер и работу в гибридном режиме.

Содержание

Установка OSSEC
Настройка конфигурационного файла OSSEC
Добавление агентов
Настройка конфигурационного файла для агентов
Email оповещения
Работа с агентами и получение отчетов
Вывод данных в другие системы
Работа OSSEC в гибридном режиме

Установка OSSEC

Установим на ОС Ubuntu 14.04 Установим необходимые пакеты для установки OSSEC:

apt-get install make gcc libssl-dev 

Скачиваем OSSEC с офф.сайта:

http://www.ossec.net/files/ossec-hids-2.8.2.tar.gz tar -xvf ossec-hids-2.8.2.tar.gz cd ossec-hids-2.8.2 

Запустим установочный скрипт ./install.sh. Выбираем язык (en). Отвечаем на вопросы:

1) What kind of installation do you want (server, agent, local, hybrid or help)? Выбираем server. 2) Выбираем путь установки. 3) Do you want e-mail notification? (y/n) [y]: Указываем параметры smtp сервера для получения email оповещений. 4) Do you want to run the integrity check daemon? (y/n) [y]: Включаем демон проверки целостности файлов. 5) Do you want to run the rootkit detection engine? (y/n) [y]: Включаем проверку руткитов. 6) Do you want to enable active response? (y/n) [n]: Включаем режим IPS. Работу этого режима в этом примере рассматривать не будем. 7) Do you want to enable remote syslog (port 514 udp)? (y/n) [y]: y 

Ждем завершения установки.

По умолчанию OSSEC установится в каталог /var/ossec/. Директории с бинарными файлами — /var/ossec/bin/. Директории с конфигурационными файлами — /var/ossec/etc/. Директории с логами — /var/ossec/logs/. Для работы агентов с сервером необходимо открыть порт 1514udp.

Настройка конфигурационного файла OSSEC

Откроем конфиг файл.
nano /var/ossec/etc/ossec.conf.

Секция global.
В этой секции мы настроим email оповещения:

<ossec_config>   <global>     <email_notification>yes</email_notification>      Включено оповещение по почте     <email_to>ivanov@ossec.ru</email_to>      Кому отправлять оповещения     <smtp_server>mail.ossec.ru</smtp_server>      Ваш SMTP Сервер     <email_from>ossec@ossec.ru</email_from>      От кого отправляем      <email_maxperhour>100</email_maxperhour>      Максимальное количество писем отправляемых за час   </global> 

Секция syscheck. В этой секции находятся параметры проверки целостности файлов:

<syscheck>      <!-- Frequency that syscheck is executed - default to every 22 hours -->     <frequency>18000</frequency>                                      Периодичность запуска проверки в секундах          <!-- Directories to check  (perform all possible verifications) -->     <directories check_all="yes">/etc,/usr/bin,/usr/sbin,/boot,/opt,/lib,/lib64</directories>                     Каталоги для проверки          <!-- Files/directories to ignore -->     <ignore>/etc/mtab</ignore>                   Указываем файлы которые нужно игнорировать  </syscheck> 

Разберем дополнительные параметры проверки целостности файлов. Если нам необходимо запускать проверку в определенное время, то можно воспользоваться параметром scan_time или scan_day:

Пример <scan_time>04:00</scan_time> # запуск проверки в 4 утра 

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

<directories realtime="yes">/etc,/usr/bin,/usr/sbin</directories> 

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

<scan_on_start>yes</scan_on_start> 

Если нам потребуется включить оповещения о появлении новых фалов в каталогах, можно воспользоваться параметром alert_new_files:

<alert_new_files>yes</alert_new_files> 

В секции rootcheck указываются файлы с сигнатурами руткитов.

В секциях localfile указывается лог файлы, которые ossec будет мониторить.

На основе декодеров и правил, которые находятся в /var/ossec/etc/decoders.xml и /var/ossec/rules/, OSSEC будет обрабатывать события из этих лог файлов. По умолчанию OSSEC имеет довольно большое количество правил, подключать/отключать их можно в секции rules. Если этих правил вам не хватает или некоторые из них устарели, никто вам не мешает изменять их или писать свои.

В секциях command и active-response находятся конфигурации режима IPS. Можно настроить реагирование на какое-либо событие. В /var/ossec/active-response/bin/ находятся дефолтные скрипты, которые можно применить при наступлении какого-либо события. При нехватке этих скриптов можно добавить свои.

Добавление агентов

 apt-get install make gcc libssl-dev 

Установим OSSEC агент из этого же дистрибутива, только при установке выберем режим agent.
3.1- What’s the IP Address or hostname of the OSSEC HIDS server? Укажем IP-адрес нашего OSSEC сервера. Снова включим модуль проверки целостности и поиска руткитов. Ждем завершения установки.Теперь необходимо связать ossec агент с нашим сервером. Для этого существует два способа.

1-й способ

Идем на сервер и запускаем менеджер работы с агентами:

/var/ossec/bin/manage_agents 

Выбираем A (A)dd an agent (A). Далее пишем имя нашего агента. Указываем ip адрес нашего агента. Выбираем идентификатор агента, можно оставить id который предлагает OSSEC.
Confirm adding it?(y/n):y
Подтверждаем добавление агента. Далее выбираем (E)xtract key for an agent. Указываем id нашего нового агента. Копируем base64 строку и нажимаем Enter. Выбираем Q выход из менеджера работы с агентами. Рестартим сервер для успешного добавления агента:

/etc/init.d/ossec restart 

Далее идем на наш агент и заходим в менеджер работы с агентами:

/var/ossec/bin/manage_agents 

Выбираем (I)mport key from the server для добавления ключа который мы скопировали. Вставляем ключ и подверждаем добавление агента и выходим. Далее можно запускать наш агент.

/etc/init.d/ossec start 

Должно прийти уведомление по почте о том, что новый агент подключен. Идем на сервер, чтобы проверить подключился ли агент.

Запускаем /var/ossec/bin/agent_control –l 

Мы должны увидеть в списке ваш агент со статусом Active. Также в /var/ossec/logs/alerts.alerts.log мы должны увидеть событие.
New ossec agent connected.
Агент успешно добавлен.

2-й способ

Идем на сервер. Генерируем сертификат для нашего сервера:

# openssl genrsa -out /var/ossec/etc/sslmanager.key 2048 # openssl req -new -x509 -key /var/ossec/etc/sslmanager.key -out /var/ossec/etc/sslmanager.cert -days 365 

Запускаем демон, который будет ожидать регистрации агентов по порту 1515:

/var/ossec/bin/ossec-authd -p 1515 >/dev/null 2>&1 & 

Переходим на машину с агентом:

Добавляем агент

/var/ossec/bin/agent-auth -m 192.168.1.113(ip адрес сервера) -p 1515 

Стартуем агент /etc/init.d/ossec start. Переходим обратно на сервер и смотрим, появился ли наш агент:

/var/ossec/bin/agent_control –l 

Мы должны увидеть нового агента, имя агента будет совпадать с hostname. Для успешного подключения агента необходимо рестартнуть OSSEC сервер. Этот способ добавления очень удобен, т.к не требует от администратора сервера OSSEC многих действий по работе с ключами. Для работы этого режима, как на сервере, так и на агенте, необходимо производить установку OSSEC с пакетом libssl-dev.

Настройка конфигурационного файла агентов

Настройка конфигурационного файла для агентов мало чем отличается от настройки этого файла для сервера. Там также есть секции syschek, rootkit, localfile и прочие. Но удобнее держать один конфигурационный файл для агентов на сервере, а агенты будут сами подхватывать этот конфиг.файл и его изменения.

Для этого нам необходимо на сервере в /var/ossec/etc/shared/ создать файл agent.conf – это и будет наш общий конфигурационный файл. В этом файле можно делать разные конфигурации для наших агентов, которые можно разбить по нескольким типам:
— Имя агента. Можно сделать конфигурацию для нескольких агентов и перечислить их имена.

<agent_config name="agentname1|agenname2|agentname3"> настройки проверки контроля целостности настройки проверки руткитов настройки просмотра файлов </agent_config> 

— Профиль сервера. Можно сделать конфиграции для групп серверов(например веб-серверы, базы данных и т.д):

<agent_config profile="web-servers"> настройки проверки контроля целостности настройки проверки руткитов настройки просмотра файлов </agent_config> 

— Тип ОС. Можно сделать конфигурации в зависимости от типа ОС:

<agent_config os="Linux,Windows"> настройки проверки контроля целостности настройки проверки руткитов настройки просмотра файлов </agent_config> 

Для проверки соблюдения синтаксиса в конфиг.файле для агентов можно воспользоваться:

/var/ossec/bin/verify-agent-conf 

В итоге в /var/ossec/etc/ossec.conf на агенте можно оставить несколько строк:

<ossec_config>    <client>       <server-hostname>dns_имя_нашего сервера</server-hostname>  #или <server-ip>ip_сервера</server-ip>        <config-profile>наш_профиль, lowmemory</config-profile>      </client> </ossec_config> 

Остальную часть конфигурации агент подхватит с сервера.

Email оповещения

Настройки для работы email оповещений мы уже указали в секции global конфигурационного файла OSSEC сервера. В каждом событии из правил ossec есть уровень критичности, если мы хотим получать email оповещения не ниже какого-то определенного уровня, мы можем это настроить в секции alerts:

<alerts>     <log_alert_level>1</log_alert_level>     <email_alert_level>7</email_alert_level>   </alerts> 

Также мы можем настроить email оповещения для событий из каких-либо определенных групп сообщений(группы указаны в правилах ossec).

<email_alerts> <email_to>web_admin@ossec.ru</email_to> <group>apache</group> </email_alerts> 

Если мы захотим получать sms сообщения, то в ossec для этого есть спец формат.

<email_alerts> <email_to>admin@ossec.ru</email_to> <level>7</level> <format>sms</format> </email_alerts> 

Работа с агентами и получение отчетов

/var/ossec/bin/agent_control –l 

Получения списка всех агентов:

/var/ossec/bin/agent_control –i id_агента 

Получение информации о агенте, интересна здесь контрольная сумма файла конфигурации. Ее можно сравнить с конфигурацией на сервере:

md5sum /var/ossec/etc/shared/agent.conf 

Если контрольные суммы не совпадают, значит агент не подхватил конфиг с сервера.

/var/ossec/bin/agent_control –R id_агента 

Перезапуск агента, обычно необходимо для применения изменений в конфиге для агентов.

/var/ossec/bin/agent_control -r –a  

Принудительный запуск проверки целостности и поиска руткитов на всех агентах:

/var/ossec/bin/agent_control -r –u id_агента  

Тоже самое, но только для определенного агента:

/var/ossec/bin/syscheck_update -h 

Обнуление счетчиков контрольных сумм файлов:

/var/ossec/bin/syscheck_update -h                 -l       List available agents.         -a       Update (clear) syscheck database for all agents.         -u <id>  Update (clear) syscheck database for a specific agent.         -u local Update (clear) syscheck database locally. 

Для получения отчетов в консоли можно пользоваться этим:

/var/ossec/bin/ossec-reportd 

Примеры:

Вывод всех алертов за сегодняшнего дня - cat /var/ossec/logs/alerts/alerts.log | /var/ossec/bin/ossec-reportd -s 

Вывод всех алертов за определенный день - zcat /var/ossec/logs/alerts/2014/Dec/ossec-alerts-29.log.gz | /var/ossec/bin/ossec-reportd -s 

Вывод всех алертов о смене конторльных сумм за день - cat /var/ossec/logs/alerts/alerts.log | /var/ossec/bin/ossec-reportd -s -f group syscheck 

Вывод всех неудачных попыток авторизации за день - cat /var/ossec/logs/alerts/alerts.log | /var/ossec/bin/ossec-reportd -s -f rule 5503 

Вывод всех неудачных попыток авторизации по ssh за день - cat /var/ossec/logs/alerts/alerts.log | /var/ossec/bin/ossec-reportd -s -f rule 5716 

Вывод всех установленных пакетов за день - cat /var/ossec/logs/alerts/alerts.log | /var/ossec/bin/ossec-reportd -s -f rule 2902 

Вывод всех удаленных пакетов за день - cat /var/ossec/logs/alerts/alerts.log | /var/ossec/bin/ossec-reportd -s -f rule 2903 

Вывод попыток брутфорса ssh за день - cat /var/ossec/logs/alerts/alerts.log | /var/ossec/bin/ossec-reportd -s -f rule 5712 

Вывод данных за месяц - zcat /var/ossec/logs/alerts/2009/Jul/*.gz | /var/ossec/bin/ossec-reportd -s 

Можно получать отчеты о смене контрольных сумм файлов определенного агента или какого либо файла.

/var/ossec/bin/syscheck_control 

Вывод данных в другие системы

Кроме вывода событий в файлы alerts и в виде email оповещений, в OSSEC можно настроить вывод событий в другие системы или в БД.

Вывод в SIEM Prelude

Для вывода событий в SIEM Prelude необходимо перед установкой OSSEC server установить пакет libprelude-dev и и добавить поддержку prelude

cd ossec-hids-2.8.2/src/ # make setprelude cd .. ./install.sh 

Сделаем вывод из ossec в PreludeManager. Для этого откроем /var/ossec/etc/ossec.conf. В секцию global добавляем строку <prelude_output>yes</prelude_output>.

Теперь подключим OSSEC к prelude. Запускаем в одном терминале:

prelude-admin registration-server prelude-manager 

The «p9dfqy34» 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 командой:

# 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

Теперь запустим оба демона.

/etc/init.d/prelude-manager start /etc/init.d/ossec restart 

Теперь можем наблюдать события из OSSEC в Prelude.

Вывод событий в БД

Для вывода событий событий в БД необходимо добавить поддержку БД перед установкой OSSEC:

cd ossec-hids-2.8.2/src/ # make setdb cd .. ./install.sh 

Позже добавить параметры подключения к БД в конфигурационном файле. Пример:

<ossec_config> <database_output> <hostname>192.168.2.32</hostname> <username>db_test</username> <password>db_pass1</password> <database>ossecdb</database> <type>mysql</type> </database_output> </ossec_config> 

Поддерживаемые БД: MySQL и PostgreSQL.
Схемы баз данных есть в офф.документации.

Далее необходимо включить вывод в БД:

/var/ossec/bin/ossec-control enable database /var/ossec/bin/ossec-control restart 

Вывод в другие системы через syslog

Необходимо добавить в конфиг.файл следующие строки:

<syslog_output> <server>ip_address</server> <port>514</port> <format>default</format> </syslog_output> 

Включить вывод:

/var/ossec/bin/ossec-control enable client-syslog 

Часто через syslog из OSSEC выводят события в SPLUNK, Logstash, различные SIEM.

Работа OSSEC в гибридном режиме

Гибридный режим в OSSEC служит для того, чтобы построить схему Агент -> Сервер -> Основной сервер, иными словами для форварда событий на головной OSSEC сервер. В этом режиме на сервере работает как OSSEC агент, так и OSSEC сервер.

Чтобы установить OSSEC в гибридном режиме необходимо запустить установочный скрипт и выбрать режим установки hybrid, ответить на все вопросы и в процессе установке указать ip адрес основного сервера.

Все файлы от агента находятся в каталоге /var/ossec/ossec-agent/.
Запуск, Стоп, Рестарт агента производится с помощью:

 /var/ossec/ossec-agent/bin/ossec-control start|stop|restart 

Чтобы добавить этого агента к основному серверу необходимо также установить ключ, созданный на основном сервере.

/var/ossec/ossec-agent/bin/manage_agents 

Теперь этот агент будет читать файл /var/ossec/logs/alerts/alerts.log и передавать эти события на основной сервер.

У меня при работе этого режима агент через некоторое время переставал читать этот лог. С проблемой помогла установка этого патча: github.com/ddpbsd/ossec-hids/tree/ossecalert

Сейчас на моем OSSEC сервере подключено 135 агентов, есть как сервера на Windows, так и на Linux (Ubuntu, Debian, CentOS).

Ссылки

www.ossec.net
— Книга OSSEC HIDS Host-Based Intrusion Detection Guide

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


Комментарии

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

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