OSSEC-HIDS. Установка и настройка::Журнал СА 102009
www.samag.ru
Льготная подписка для студентов      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
О журнале
Журнал «БИТ»
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

Jobsora


  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
28.05.2019г.
Просмотров: 1924
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 1957
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 1518
Комментарии: 0
Django 2 в примерах

 Читать далее...

28.05.2019г.
Просмотров: 1114
Комментарии: 0
Введение в анализ алгоритмов

 Читать далее...

27.03.2019г.
Просмотров: 1686
Комментарии: 1
Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

 Читать далее...

Друзья сайта  

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

sysadmins.ru

Электронка - 2020!

 OSSEC-HIDS. Установка и настройка

Архив номеров / 2009 / Выпуск №10 (83) / OSSEC-HIDS. Установка и настройка

Рубрика: Острый угол /  Острый угол

СЕРГЕЙ ЯРЕМЧУК, инженер автоматизации. Автор более 800 статей и 4 книг. В «Системном администраторе» публикуется с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС

OSSEC-HIDS
Установка и настройка

Эта хостовая система обнаружения атак позволяет защитить компьютеры, работающие под управлением разных ОС.

Сегодня в UNIX используется большое количество систем защиты (logcheck, tripware, tiger, chkrootkit, rkhunter), использующих разные принципы – контроль целостности файлов, анализ журналов, поиск сигнатур и так далее. В отдельности каждый из этих продуктов имеет вполне достаточные возможности, позволяющие защитить доверенную систему, которые после настройки могут работать автономно, лишь оповещая администратора о появившихся проблемах. Но при развертывании их на большом количестве систем в сети администратору приходится искать оптимальный метод развертывания и, главное, получения и анализа отчетов.

OSSEC-HIDS [1] (Open Source Host-based Intrusion Detection System) – хостовая система обнаружения атак, в которой для определения атак используется несколько методов – анализ журналов систем и сервисов, проверка целостности файлов и реестра Windows, обнаружение rootkit, имеющая функциональность SIM (Security Information Management, Управление информацией безопасности). Собственно OSSEC и появился как решение, адаптированное на проверку большого количества систем.

Первая версия, называвшаяся Syscheck, была написана Даниелем Сидом (Daniel B.Cid) и обнародована в 2004 году. Через некоторое время к Syscheck добавился Rootcheck, который позволял управлять обнаружением руткитов с централизованной консоли. И, наконец, в 2005 году вышел OSSEC, объединивший функции Syscheck и Rootcheck.

Сегодня проект поддерживают большое количество сторонних разработчиков, которые вносят изменения в код, создают правила, участвуют в переводе интерфейса. Но основная работа выполняется Даниелем. В июне 2008 года права были переданы корпорации Third Brigade, Inc., которая обязалась продолжить разработку и коммерческую поддержку. В мае 2009 права перешли к Trend Micro, которая также обязалась сохранить его бесплатным и продолжать разработку по Open Source-лицензии. В настоящее время OSSEC-HIDS распространяется по лицензии GNU GPL v3.

OSSEC состоит из трех компонентов:

  •  базового приложения, которое устанавливается в UNIX-системах, обеспечивает основную функциональность, то есть сервер для сбора и анализа данных, и агента (для UNIX-систем);
  •  агента Windows;
  •  веб-интерфейса, позволяющего просмотреть оповещения в удобном виде.

Для сбора информации на удаленных системах используются агенты, хотя возможна работа и без агента (например, на некоторых маршрутизаторах). В настоящее время агенты реализованы для Linux, Solaris, *BSD, Mac и Windows 2000/XP/2003/Vista/2008. Для связи агентов с сервером используется 1514 UDP-порт, подключение производится по зашифрованному SSH-каналу. Веб-интерфейс устанавливается на Linux, Solaris, *BSD и Mac. Количество поддерживаемых OSSEC-форматов журналов достаточно велико – Asterisk, Apache, IIS, Postfix, Courier, ProFTPd, Pure-FTPd, PostgreSQL, MySQL Checkpoint, Sonicwall, VMware ESX и многие другие. Полученные данные обрабатываются на сервере на основании правил в формате XML, и в случае обнаружения попыток модификации важных файлов (анализируются MD5 и SHA1, права доступа) и реестра, и прочих потенциально опасных действий OSSEC выдает оповещение, а при высоком уровне реагирует на попытку взлома.

Типичное правило (в текущей версии их 896) заключено в теги rule и состоит из описания (description), контролируемого параметра и его значения (url, same_source_ip, regex, match), группы (group), действия (action), уровня серьезности (level) и имеет свой уникальный номер (id).

Например, описание одного из правил из файла web_rules.xml.

<rule id="31105" level="6">

<if_sid>31100</if_sid>

<url>%3Cscript|%2Fscript|script>|script%3E|SRC=javascript|IMG%20|</url>

<url>%20ONLOAD=|INPUT%20|iframe%20</url>

<description>XSS (Cross Site Scripting) attempt.</description>

<group>attack,</group>

</rule>

При помощи <if_sid> одни правила могут использовать условия из других правил и на их основе устанавливать свои действия. Например, несколько записей с id 31105 с разных IP-адресов свидетельствуют о распределенной XSS-атаке.

В правилах возможно использование регулярных выражений, поэтому при определенных навыках можно описать практически любую ситуацию. Администратор может легко указать на события, которые его интересуют, и получать оповещения через сервисы SMTP, SMS и Syslog, а также настроить ответную реакцию, заблокировав удаленный узел через /etc/host.deny или при помощи пакетного фильтра – iptables (Linux), ipfilter (FreeBSD, NetBSD, Solaris). При активации по умолчанию производится блокировка всех удаленных источников с уровнем опасности начиная от 6. Предусмотрено выполнение и произвольных команд пользователя, хотя, чтобы реализовать такую возможность, требуется уже некоторый опыт.

Чтобы уменьшить вероятность случайной блокировки своих ресурсов в случае ошибки OSSEC, разработчики предлагают готовые сценарии, используются белые списки и тайм-аут, после которого ресурс будет разблокирован. Вывод может быть направлен в Prelude IDS [2] (сейчас она позиционируется тоже как SIM), оповещения по умолчанию сохраняются в текстовых файлах, но для этой цели можно подключить базу данных MySQL.

Установка OSSEC

Одной из приоритетных задач при разработке OSSEC являлась и является простота в установке. Действительно, многие отзывы сводятся к одному – OSSEC очень прост не только в инсталляции, но и в работе. В настоящее время ведутся работы над универсальным скриптом, который позволит еще более облегчить задачу развертывания системы контроля на компьютерах, работающих под управлением разных версий ОС.

Рисунок 1. Работа скрипта установки OSSIM

Рисунок 1. Работа скрипта установки OSSIM

Актуальной на момент написания статьи была версия 2.1.1, о которой мы и будем в дальнейшем говорить. Выход следующей версии OSSEC 2.2 ожидается в ближайшее время, правда, точная дата пока неизвестна. В статье будет описана установка основного приложения и веб-интерфейса на Ubuntu Server 8.04.1 LTS, а также агента, работающего в Windows XP. В других системах процесс практически аналогичен.

На странице закачки доступны три вида пакетов, которые реализуют компоненты, описанные выше. Учитывая, что OSSEC является узловой системой, агент должен быть установлен в идеальном случае на каждом компьютере в сети. Основной пакет (ossec-hids) реализует как серверную часть (server), так и клиентскую часть (agent) для UNIX, нужный тип установки необходимо будет выбрать уже в процессе. Если OSSEC будет использоваться на единственной UNIX-системе в сети, можно использовать локальную (local) установку.

Для установки OSSIM понадобится компилятор.

$ sudo apt-get install build-essentials

Среди файлов на странице закачки имеется ossec-hids-latest.tar.gz, но он указывал на версию 2.1, хотя уже доступна 2.1.1. Скачиваем файл, проверяем контрольную сумму, распаковываем.

$ wget –c http://www.ossec.net/files/ossec-hids-2.1.1.tar.gz

$ wget –c http://www.ossec.net/files/ossec-hids-2.1.1_checksum.txt

$ cat ossec-hids-2.1.1_checksum.txt

$ md5sum ossec-hids-2.1.1.tar.gz

$ sha1sum ossec-hids-2.1.1.tar.gz

$ tar xzvf ossec-hids-2.1.1.tar.gz

Запускаем установочный скрипт, находящийся внутри архива.

$ cd ossec-hids-2.1.1/

$ sudo ./install.sh

Скрипт предлагает выбрать язык установки, в списке есть и русский. Вводим ru. Далее выводятся данные по системе, проверяем и нажимаем <Enter>. Выбираем тип установки, введя по подсказке – сервер, агент или локальный (на русском), указываем, куда установить OSSEC (по умолчаниию /var/ossec).

Третьим пунктом идут настройки OSSEC, в которых подтверждается:

  •   активация уведомления по электронной почте – вводим почтовый адрес дважды, указываем SMTP-сервер;
  •  запуск сервиса проверки целостности;
  •  запуск сервиса обнаружения руткитов;
  •  активация системы активного реагирования – разрешаем использование пакетного фильтра (блокировка с level >=6), указываем «белые» адреса;
  •  сохранение журналов на удаленном syslog.

Установочный скрипт автоматически заносит в белый список локальную систему и DNS-сервера. Рекомендую сразу же указать и адрес системы, с которой производится удаленное управление сервером, так как после запуска OSSIM запросто может заблокировать доступ.

$ sudo cat /var/ossec/logs/active-responses.log



Птн Авг 28 04:24:00 MSD 2009 /var/ossec/active-response/bin/host-deny.sh add - 192.168.1.58 1251419040.1029 40101

Птн Авг 28 04:24:00 MSD 2009 /var/ossec/active-response/bin/firewall-drop.sh add - 192.168.1.58 1251419040.1029 40101

Далее скрипт автоматически заносит в список контролируемых журналы установленных сервисов. В дальнейшем файл журнала можно легко добавить, отредактировав параметр localfile в конфигурационном файле /var/ossec/etc/ossec.conf, который и создается впоследствии установочным скриптом на основе полученных ответов. Далее происходит компиляция компонентов OSSEC.

В процессе будет создан init-скрипт /etc/init.d/ossec, который можно использовать для запуска сервиса. Как вариант указать скрипт напрямую:

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

О смене владельца говорит надпись при загрузке.

Starting OSSEC HIDS v2.1 (by Trend Micro Inc.)...

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

Файл ossec.conf представляет обычный XML-файл, разобраться в его структуре довольно просто. Например, каталоги, в которых проверяется целостность файлов, описываются следующим образом:

<syscheck>

 <!-- проверка каждые 22 часа -->

     <frequency>79200</frequency>

 <!-- каталог для проверки -->

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

<!-- игнорируемые файлы -->

<ignore>/etc/hosts.deny</ignore>

</syscheck>

Уровни оповещения:

 <alerts>

     // Запись в журнал

     <log_alert_level>1</log_alert_level>

     // Отправка почтового сообщения

     <email_alert_level>7</email_alert_level>

 </alerts>

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

 <active-response>

 <!--использование host.deny для блокировки IP на 60 секунд при level >= 6-->

     <command>host-deny</command>

     <location>local</location>

     <level>6</level>

     <timeout>600</timeout>

 </active-response>

Сервер уже контролируется, просмотреть оповещения можно в журнале:

$ sudo tail -f /var/ossec/logs/ossec.log

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

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

$ sudo /var/ossec/bin/manage_agents

****************************************

* OSSEC HIDS v2.1 Agent manager. *

* The following options are available: *

****************************************

 (A)dd an agent (A).

 (E)xtract key for an agent (E).

 (L)ist already added agents (L).

 (R)emove an agent (R).

 (Q)uit.

Choose your action: A,E,L,R or Q:

 Далее нажимаем клавишу, соответствующую нашей задаче:

A – добавить агента;

E – получить ключ для агента;

L – просмотреть список известных агентов;

R – удалить агента.

Нажимаем «A», вводим по запросу имя агента (от 2 до 32 знаков), IP-адрес системы, на которой будет установлен агент, затем ID агента (скрипт предложит автоматически следующий номер, по порядку начиная от 001). Подтверждаем установки. Теперь выбираем «E», менеджер выведет список агентов, указываем ID агента, ключ которого необходимо получить.

Choose your action: A,E,L,R or Q: E


Available agents:

ID: 001, Name: agent1, IP: 192.168.1.58

Provide the ID of the agent to extract the key

(or '\q' to quit): 001


Agent key information for '001' is:

MDAxIG5vb………..2I4ZjNiMWJh

Запускаем установку ossec-hids-2.1.1, как показано выше (для UNIX-систем), выбрав вариант «агент», по окончанию установки также запускаем manage_agents, в котором выбирается импорт ключа сервера – «I».

При установке агента для Windows, дополнительно можно активировать сканирование журналов IIS и проверку целостности. На последнем этапе, в окне OSSEC Agent Manager вводим IP-адрес сервера и ключ доступа. После подключения к серверу в журнале агента должна появиться соответствующая запись.

2009/08/29 09:13:59 ossec-agent:

INFO: Trying to connect to server (192.168.1.203:1514).

2009/08/29 09:14:09 ossec-agent(4102):

INFO: Connected to the server (192.168.1.203:1514).

В дальнейшем управление работы агентов производится для UNIX-систем стандартным способом, через init скрипт, в Windows при помощи графического OSSEC Agent Manager. Конфигурационный файл агента также называется ossec.conf и по своей структуре практически полностью аналогичен ossec.conf сервера, о котором говорилось выше.

Рисунок 2. Подключение Windows-агента и интерфейс OSSEC Agent Manager

Рисунок 2. Подключение Windows-агента и интерфейс OSSEC Agent Manager

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

<agent_config name=" agent1|agent2">

или в зависимости от ОС.

<agent_config os="Linux">

Затем при помощи команды agent_control с указанием ID агента файл отправляется на удаленную систему.

$ sudo /var/ossec/bin/agent_control -i 001

В подкаталоге contrib архива с исходными текстами находится ряд скриптов, позволяющих упростить работу с OSSIM или расширить его возможности.

Например, ossec-batch-manager.pl предназначен для упрощенного подключения агентов. В строке запуска можно указать сразу несколько систем:

$ sudo ./ossec-batch-manager.pl -a --ip 192.168.1.1 -n agent_1 -a --ip 192.168.1.2 -n agent_1

Затем получаем ключ и подключаем агентов.

Все сообщения о тревогах будут собраны в подкаталоге /var/ossec/logs/alerts в отдельном файле.

Например, для 28 августа 2009 года это будет /var/ossec/logs/alerts/2009/Aug/ossec-alerts-28.log.

$ cat /var/ossec/logs/alerts/2009/Aug/ossec-alerts-28.log

 

** Alert 1251464430.42143: - syslog,sudo

2009 Aug 28 17:00:30 ubuntu->/var/log/auth.log

Rule: 5402 (level 3) -> 'Successful sudo to ROOT executed'

Src IP: (none)

User: user

Aug 28 17:00:28 ubuntu sudo: user : TTY=pts/1 ;

PWD=/home/user/; USER=root ; COMMAND=/bin/ls

/var/ossec/logs/alerts/2009/Aug/ossec-alerts-28.log

 

Скрипт ossectop.pl позволяет увидеть список самых активных тревог за текущий день. Единственный минус – для определения текущей даты используется код:

my $datepath=`date "+%Y/%b/ossec-alerts-%d.log"`;

my $LOG='/var/ossec/logs/alerts/'. $datepath;

При включенной русской локали скрипт будет искать файл совсем в другом месте: /var/ossec/logs/alerts/2009/Авг/. Исправить можно разными способами. Например, так:

$ sudo env LC_ALL=POSIX ./ossectop.pl

Скрипт ossec_report_contrib.pl позволяет получать форматированные отчеты.

$ sudo cat ossec-alerts-28.log | ./ossec_report_contrib.pl -s | mail root -s 'OSSEC summary report'

Или через cron:

00 01 * * * (cat ossec-alerts-28.log | ./ossec_report_contrib.pl -s)

И, наконец, используя набор файлов ossec2mysql.*, можно подключить вывод OSSEC в MySQL. Процесс достаточно прост. Создаем новую базу данных и затем таблицы при помощи шаблона ossec2mysql.sql, копируем contrib/ossec2mysql.conf в /etc/ossec2mysql.conf с 0600 правами. Редактируем файл, указав параметры доступа к базе данных.

Установка веб-интерфейса

Веб-интерфейс написан на PHP. Для его работы разработчики рекомендуют Apache с поддержкой PHP (>= 4.1 или >= 5.0) или Lighttpd с FastCGI (php4-cgi, php5-cgi). При их наличии процесс установки достаточно прост.

$ wget –c http://www.ossec.net/files/ui/ossec-wui-0.3.tar.gz

$ tar xzvf ossec-wui-0.3.tar.gz

$ sudo mv ossec-wui-0.3 /var/www/ossec-wui

Далее можно создать нужные настройки вручную, воспользовавшись инструкциями на сайте, но проще запустить установочный скрипт.

$ /var/www/ossec-wui

$ sudo chmod 770 /var/www/ossec-wui/tmp

$ sudo chgrp www-data /var/www/ossec-wui/tmp

$ sudo ./setup.sh

Скрипт запросит имя пользователя и пароль для доступа к веб-интерфейсу (создается при помощи htdigest), в результате его работы получим файл .htaccess. Делаем учетную запись, от имени которой работает веб-сервер, членом группы ossim.

$ sudo vi /etc/group

ossec:x:1001:www-data

Если используется Apache, это все. Для Lighttpd настроек больше, все они расписаны на Wiki проекта. Теперь можно заходить по адресу http://server/ossec-wui, где будут доступны последние события, список измененных файлов, данные об агентах. Реализован поиск, для каждого события можно просмотреть правило, которое активировано событием.

Рисунок 3. Веб-интерфейс OSSEC-WUI

Рисунок 3. Веб-интерфейс OSSEC-WUI

Рисунок 4. Просмотр правила на Wiki проекта

Рисунок 4. Просмотр правила на Wiki проекта

***

OSSEC позволяет контролировать системы в сети, при этом достаточно прост в установке и управлении. При определенных навыках можно самостоятельно сконфигурировать правила и изменить настройки для любых условий. Для дополнительной информации обращайтесь к документации проекта, также проект имеет свою группу Google [3].

Приложение

Расширенная установка

Максимальное число агентов, поддерживаемое сервером по умолчанию, равно 256. О чем свидетельствует запись в журнале после его старта:

INFO: Maximum number of agents allowed: '256'.

Изменить это значение можно, использовав перед запуском установочного скрипта параметр setmaxagents.

$ cd src; make setmaxagents

 

Specify maximum number of agents: 4096

Maximum number of agents set to 4096

 

$ cd ..; sudo ./install.sh

Теперь максимальное количество агентов будет равно 4096. Но этот предел ограничен еще и настройками ОС, в частности, количеством одновременно открытых файлов, по умолчанию в Linux это число равно 1024.

$ ulimit –a

open files      (-n) 1024

При добавлении 1025 агента получим:

** ID '1025' already present. They must be unique.

Изменим число:

$ sudo ulimit –n 4096

или

$ sudo sysctl -w kern.maxfiles=4096

После чего следует перезапустить OSSIM.

Присутствие компилятора на сервере нежелательно, поэтому разработчики предусмотрели возможность бинарной установки. Для этого вначале на другой системе следует собрать OSSIM (результат будет сохранен в подкаталоге bin), затем перенести исходные тексты на сервер. Теперь в файле etc/preloaded-vars.conf снимаем комментарий со строки:

USER_BINARYINSTALL="x"

И запускаем установку обычным образом.

  1. Сайт проекта OSSEC-HIDS – http://www.ossec.net.
  2. Сайт проекта Prelude IDS – http://www.prelude-ids.com.
  3. Группа OSSEC в Google – http://groups.google.com/group/ossec-list.

Комментарии отсутствуют

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

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru