Pull to refresh

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

Reading time 10 min
Views 49K
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
Tags:
Hubs:
+5
Comments 0
Comments Leave a comment

Articles