Наш wiki-портал переехал на новый движок и доступен по адресу http://wiki.astralinux.ru

Эта версия портала обновляться больше не будет.

Ossec

Материал из AstraLinux Wiki
Перейти к: навигация, поиск

Настройка системы централизованного протоколирования

Просмотр логов осуществляется под именем пользователя audit-user, соответственно этот пользователь должен быть создан в системе: локальной или доменной. Рассмотрим пример настройки системы централизованного протоколирования на двух машинах, одна из них используется, как сервер для сбора логов, другая - агент для отправки логов. Просмотр логов осуществляется через web-интерфейс ossec-web и требует наличие настроенного сервера Apache2 для работы с Kerberos или PAM с помощью утилиты fly-admin-service или согласно руководству администратора. Все действия в данной инструкции выполняются от лица администратора системы (если не указано обратного) через механизм sudo.

В данном примере будут рассмотрены следующие АРМ:

  • susrv.rtfm.rbt/10.0.0.23
  • suac.rtfm.rbt/10.0.0.25


Настройка на сервере:

Для установки web-интерфейса и серверной части сервиса ossec требуется установить пакет ossec-web со всеми зависимостями.

apt-get install ossec-web

Установка данного пакета повлечет за собой установку следующих пакетов:

ossec-web
ossec-hids-server
incron

Создать каталог для хранения логов и дать доступ для пользователя ossec. Права удобно назначить с помощью расширенных атрибутов доступа ACL.

# mkdir /var/remote_logs
# setfacl -d -m u:ossec:rx /var/remote_logs/
# setfacl -R -m u:ossec:rx /var/remote_logs/

Скопировать настройки rsyslog с запуском сетевого сокета syslog для приема входящих сообщений:

# cp /var/ossec/etc/10-ossec-syslog.conf /etc/rsyslog.d/

В данном файле 10-ossec-syslog.conf указана подгрузка UDP и TCP модулей и сокетов для приема сообщений с агентов и правила обработки входящих сообщений rsyslog для последующей записи в файлы в дирректориях /var/remote_logs/IP-адрес_машины

Перезапустить сервис rsyslog:

# service rsyslog restart

Перезапуск осуществляется для того, чтобы изменения вступили в силу. Для проверки правильности настройки данной службы в файл /var/remote_logs/127.0.0.1/all.log должны попадать сообщения от сервера.

Настройка ossec-сервера

Рабочая дирректория ossec-сервера - /var/ossec/, основным конфигурационным файлом является /var/ossec/etc/ossec.conf

Расскоментировать в файле /var/ossec/etc/ossec.conf строки:

<localfile>

<log_format>syslog</log_format>
<location>/var/remote_logs/*/all.log</location>

</localfile>
<localfile>

<log_format>command</log_format>
<command>/var/ossec/bin/check_running_audit_send.sh</command>

</localfile>

В файле /var/ossec/bin/ossec_audit_send.sh найти строку, содержащую команду парсинга логов parselog и убрать комментарий из конца строки #all logs. После изменения строка будет иметь вид:

parselog $f -t$timerange -l -s

После выполнения вышеперечисленных действий необходимо перезапустить сервер, чтобы изменения вступили в силу:

/etc/init.d/ossec-hids-server restart

Все агентские машины должны быть добавлены на сервере через интерактивную команду /var/ossec/bin/manage_agents всех агентов, указав их имя и IP-адрес и экспортировать ключ.

После подключения нового агента необходимо перезапустить сервер.

Настройка на клиентах:

Настройка rsyslog

Добавить в /etc/rsyslog.conf строки:

*.* @@susrv.rtfm.rbt
$SystemLogRateLimitInterval 2
$SystemLogRateLimitBurst 50000

Строки, обеспечивающие пересылку всех сообщений на сервер (susrv.rtfm.rbt)
*.* - обозначает пересылку сообщений всех категорий и всех приоритетов
@@ - обозначает использование TCP-соединений

Перезапустить сервис rsyslog:

# service rsyslog restart

После данной настройки сообщения должны попадать на сервере в файл /var/remote_logs/IP-агента/all.logs

Настройка ossec-агента:

Установить пакет ossec-hids-agent

Расскоментировать в файле /var/ossec/etc/ossec.conf строки:

<localfile>

<log_format>command</log_format>
<command>/var/ossec/bin/check_running_audit_send.sh</command>

</localfile>

Тут же необходимо изменить параметр <server-ip> на соответствующий серверу (в нашем примере 10.0.0.23):

<server-ip>10.0.0.23</server-ip>

В файле /var/ossec/bin/ossec_audit_send.sh найти строку, содержащую команду парсинга логов parselog и убрать комментарий из конца строки #all logs. После изменения строка будет иметь вид:

parselog $f -t$timerange -l -s

Для завершения настройки агента требуется импортировать сгенерированный на сервере для данного агента ключ через утилиту /var/ossec/bin/manage_agents. После выполнения всех этих действий необходимо перезапустить сервер:

# /etc/init.d/ossec-hids-agent restart

Для проверки отправки логов PARSEC нужно сгенерировать сообщение и проверить попадает ли оно на сервер. Для этого на агенте необходимо выполнить:

# setfaud -m o:o:o /root/.viminfo
# cat /root/.viminfo
# kernlog

Kernlog отобразит события, это же событие должно попасть в файл /var/remote_logs/10.0.0.25/all.log на сервере(где 10.0.0.25 - IP-адрес агента)

Настройка web-интерфейса

Настройка пакета ossec-web осуществляется на сервере.

Дать права для пользователя audit-user к файлам сервиса ossec и web-интерфейсу:

# setfacl -R -m u:audit-user:rwx /var/www/ossec/
# setfacl -dR -m u:audit-user:rwx /var/www/ossec/
# setfacl -m u:audit-user:rx /var/ossec/
# setfacl -m u:audit-user:rx /var/ossec/bin/
# setfacl -m u:audit-user:rx /var/ossec/bin/manage_agents
# setfacl -m u:audit-user:rx /var/ossec/bin/agent_control
# setfacl -R -m u:audit-user:rx /var/ossec/rules/

Пользователю www-data необходимо дать права для просмотра дирректории /var/www/ossec:

# setfacl -R -m u:www-data:rx /var/www/ossec/
# setfacl -dR -m u:www-data:rx /var/www/ossec/

В файлах /etc/php5/apache2/php.ini и /etc/php5/cli/php.ini в секцию [Date] нужно добавить параметр date.timezone <зона>. Системную временную зону можно посмотреть в файле /etc/timezone. Например, Europe/Moscow.

Web-интерфейс доступен через браузер по адресу: susrv/ossec/prog/UnitList.php. Для каждого агента будет создана дирректория с его именем в /var/www/ossec/data/.

Incron

Для появления событий в web-интерфейсе достаточно перезапустить сервис incron:

# service incron restart

Сервис Incron следит за файлом /var/ossec/logs/alerts/alerts.log. В случае модификации данного файла вызывается скрипт AlertsMonitor.php. Данное действие описано в файле /var/spool/incron/ossec и устанавливается вместе с пакетом ossec-web. Обновление списка сообщений в web-интерфейсе происходит автоматически.

Раз в день лог alerts.log ротируется сервисом ossec. После этого события сообщения перестают попадать в этот интерфейс. Для решения данной проблемы требуется перезапуск службы incron.
p. Для автоматизации данного решения можно добавить cron-задачу. Для этого создаем файл /etc/cron.d/incron со следующим содержимым:

1 * * * * root /etc/init.d/incron restart

Добавление новых сообщений для отображения в web-интерфесе.

Рассмотрим добавление правила для административных действий в домене.

Сообщения падают в файл /var/log/ald/audit.log. Добавляем данный файл на контроль сервиса ossec. Для этого на контроллере домена в файле var/ossec/etc/ossec.conf нужно расскоментировать или добавить:

<localfile>

<log_format>syslog</log_format>
<location>/var/log/ald/audit.log</location>

</localfile>

Дать доступ для пользователя ossec к данному файлу:

# setfacl -R -m u:ossec:rx /var/log/ald/
# setfacl -R -d -m u:ossec:rx /var/log/ald/

В файле /var/ossec/etc/decoder.xml для выборки сообщений добавить:

<decoder name="ald">

<prematch> admin/admin></prematch>

</decoder>

В данном примере мы выбираем только те сообщения, которые содержат admin/admin. При срабатывании декодера требуется написать правило, описывающее данное событие. Для этого в файле /var/ossec/rules/admin.xml добавить:

<rule id="110003" level="5">

<decoded_as>ald</decoded_as>
<description>Попытка изменения полномочий субъектов доступа или статуса объекта доступа.</description>

</rule>

В данном примере id="110003" - это уникальный идентификатор, level="5" - это важность данного правила (от нее зависит цвет сообщения в web-интерфейсе, 0-игнорирование).

Порядок прохождения логов на примере события parsec

1. На агенте при обращении к защищаемым файлам генерируется лог, который помещается в файл /var/log/parsec/kernel.mlog
2. Сообщение передается в службу rsyslog с помощью скрипта ossec_audit_send_sh
3. Согласно конфигурационному файлу он передается на сервер
4. На сервере служба rsyslog принимает входящее сообщение и кладет в файл /var/remote_logs/IP-адрес/all.log согласно правилам
5. Служба ossec обрабатывает файл all.log, применяя к нему декодер, а затем правила
6. В случае срабатывания правила сообщения попадают в файл /var/ossec/logs/alerts/alerts.log
7. Все сообщения из alerts.log попадают в web-интерфейс при выполнении скрипта /var/www/ossec/prog/AlertsMonitor.php. Данное действие автоматизированно службой incron.


Настройка звукового сигнала в OSSEC

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

- UnitList.xsl
- UnitList.php

В файл UnitList.xsl добавляются строки с 21 по 23:

<xsl:if test="(@sound > 1)">
<embed src="file:///usr/share/fly-wm/sounds/x-fly-wm-ring.wav"
autostart="true" loop="true" width="1px" height="1px"></embed>
</xsl:if>

В первой строке выражение "(@sound > 1)" определяет уровень важности событий, появление которых должно сопровождаться звуковым сигналом (0 - серые, 1 - зеленые, 2 - желтые, 3 - красные). В данном случае задано сопровождение звуковым сигналом желтых и красных событий. Во второй строке параметр src="file:///usr/share/fly-wm/sounds/x-fly-wm-ring.wav" задает путь к звуковому файлу в локальной файловой системе, того компьютера, на котором происходит отображение событий.

В файл UnitList.php добавляются строки:

стр.81:

$UnitList["sound"] = -1;

стр.166:

if ($dT <= 20) $UnitList["sound"] = max($UnitList["sound"], $alertsLevel[$A["level"]]);

В выражении ($dT <= 20) число 20 определяет количество секунд с момента регистрации события, в течение которых будет звучать cоответствующий этому событию звуковой сигнал.

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты