Інструкція: впроваджуємо 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.ua</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="так">/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="так">/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-365 days

Запускаємо демон, який буде очікувати реєстрації агентів з порту 1515:

/var/ossec/bin/ossec-authd-1515 p >/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-сервери">
налаштування перевірки контролю цілісності
налаштування перевірки руткітів
налаштування перегляду файлів
</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>ір_сервера</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 біти Diffie-Hellman key for anonymous authentication…
Waiting for peers install on request 0.0.0.0:5553…
Waiting for peers install on request :::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-start manager
/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

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.