Инструкция: внедряем HIDS OSSEC
OSSEC (Open Source Host-based Intrusion Detection System) – это хостовая система обнаружения вторжений. Если у вас появилась задача проверки контроля целостности файлов на ваших серверах, логирования различных действий на серверах, получения событий безопасности с ваших серверов (а также любых других) и оповещений об этих событиях, вывода различных отчетов и многое другое, то HIDS OSSEC — отличное решение под эти задачи. OSSEC может работать локально, по схеме агент + сервер и в гибридном режиме (агент->сервер->сервер). Мы будем рассматривать схему агент + сервер и работу в гибридном режиме.
Содержание
Установка OSSEC
Установим на ОС Ubuntu 14.04 Установим необходимые пакеты для установки OSSEC:
Скачиваем OSSEC с офф.сайта:
Запустим установочный скрипт ./install.sh. Выбираем язык (en). Отвечаем на вопросы:
Ждем завершения установки.
По умолчанию OSSEC установится в каталог /var/ossec/. Директории с бинарными файлами — /var/ossec/bin/. Директории с конфигурационными файлами — /var/ossec/etc/. Директории с логами — /var/ossec/logs/. Для работы агентов с сервером необходимо открыть порт 1514udp.
Настройка конфигурационного файла OSSEC
Откроем конфиг файл.
nano /var/ossec/etc/ossec.conf.
Секция global.
В этой секции мы настроим email оповещения:
Секция syscheck. В этой секции находятся параметры проверки целостности файлов:
Разберем дополнительные параметры проверки целостности файлов. Если нам необходимо запускать проверку в определенное время, то можно воспользоваться параметром scan_time или scan_day:
Если нам необходим постоянный контроль целостности, каких-либо файлов, на этот случай существует параметр realtime:
Постоянный контроль конкретных файлов включить нельзя, необходимо указать каталог, где этот файл находится. Также можно включить запуск проверки при старте ОС:
Если нам потребуется включить оповещения о появлении новых фалов в каталогах, можно воспользоваться параметром 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/ находятся дефолтные скрипты, которые можно применить при наступлении какого-либо события. При нехватке этих скриптов можно добавить свои.
Добавление агентов
Установим OSSEC агент из этого же дистрибутива, только при установке выберем режим agent.
3.1- What’s the IP Address or hostname of the OSSEC HIDS server? Укажем IP-адрес нашего OSSEC сервера. Снова включим модуль проверки целостности и поиска руткитов. Ждем завершения установки.Теперь необходимо связать ossec агент с нашим сервером. Для этого существует два способа.
1-й способ
Идем на сервер и запускаем менеджер работы с агентами:
Выбираем 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 выход из менеджера работы с агентами. Рестартим сервер для успешного добавления агента:
Далее идем на наш агент и заходим в менеджер работы с агентами:
Выбираем (I)mport key from the server для добавления ключа который мы скопировали. Вставляем ключ и подверждаем добавление агента и выходим. Далее можно запускать наш агент.
Должно прийти уведомление по почте о том, что новый агент подключен. Идем на сервер, чтобы проверить подключился ли агент.
Мы должны увидеть в списке ваш агент со статусом Active. Также в /var/ossec/logs/alerts.alerts.log мы должны увидеть событие.
New ossec agent connected.
Агент успешно добавлен.
2-й способ
Идем на сервер. Генерируем сертификат для нашего сервера:
Запускаем демон, который будет ожидать регистрации агентов по порту 1515:
Переходим на машину с агентом:
Стартуем агент /etc/init.d/ossec start. Переходим обратно на сервер и смотрим, появился ли наш агент:
Мы должны увидеть нового агента, имя агента будет совпадать с hostname. Для успешного подключения агента необходимо рестартнуть OSSEC сервер. Этот способ добавления очень удобен, т.к не требует от администратора сервера OSSEC многих действий по работе с ключами. Для работы этого режима, как на сервере, так и на агенте, необходимо производить установку OSSEC с пакетом libssl-dev.
Настройка конфигурационного файла агентов
Настройка конфигурационного файла для агентов мало чем отличается от настройки этого файла для сервера. Там также есть секции syschek, rootkit, localfile и прочие. Но удобнее держать один конфигурационный файл для агентов на сервере, а агенты будут сами подхватывать этот конфиг.файл и его изменения.
Для этого нам необходимо на сервере в /var/ossec/etc/shared/ создать файл agent.conf – это и будет наш общий конфигурационный файл. В этом файле можно делать разные конфигурации для наших агентов, которые можно разбить по нескольким типам:
— Имя агента. Можно сделать конфигурацию для нескольких агентов и перечислить их имена.
— Профиль сервера. Можно сделать конфиграции для групп серверов(например веб-серверы, базы данных и т.д):
— Тип ОС. Можно сделать конфигурации в зависимости от типа ОС:
Для проверки соблюдения синтаксиса в конфиг.файле для агентов можно воспользоваться:
В итоге в /var/ossec/etc/ossec.conf на агенте можно оставить несколько строк:
Остальную часть конфигурации агент подхватит с сервера.
Email оповещения
Настройки для работы email оповещений мы уже указали в секции global конфигурационного файла OSSEC сервера. В каждом событии из правил ossec есть уровень критичности, если мы хотим получать email оповещения не ниже какого-то определенного уровня, мы можем это настроить в секции alerts:
Также мы можем настроить email оповещения для событий из каких-либо определенных групп сообщений(группы указаны в правилах ossec).
Если мы захотим получать sms сообщения, то в ossec для этого есть спец формат.
Устанавливаем OSSEC (HIDS) и Prewikka (WebUI)
Эта статья расскажет, как установить систему обнаружения вторжений OSSEC и вывести алерты OSSEC в относительно удобный и информативный Web-интерфейс. OSSEС может выводить алерты в syslog, СУБД или посылать их другую IDS — Prelude. Эта IDS в последние годы практически не развивается, но имеет в своем составе неплохой Web-интерфейс — Prewikka. Так же эта система позволяет подключать к себе другие IDS помимо OSSEC — Snort, например. Сначала мы установим Prelude IDS, затем Prewikk’у. Потом подключим OSSEC к Prelude. В процессе нужно будет создать две базы. Одну будет использовать Prewikka для хранения настроек пользователей и пр. Во вторую prelude-manager будет сохранять информацию по событиям, а Prewikka будет оттуда ее читать.
Для установки я буду использовать виртуальную машину с установленной CentOS 6.4. Сначала необходимо установить Prelude-IDS. Разработчики предоставили инструкции по установке из пакетов и исходников практически для всех популярных платформ. Здесь можно скачать исходники, RPM и SRPM.
Установка Prelude Manager
Подключаем репозиторий для CentOS/RHEL:
Далее устанавливаем Prelude Manager и пакеты необходимые для работы с общей базой данных:
Теперь создаем БД и пользователя:
Редактируем конфиг Prelude Manager:
Добавляем туда следующие строки (или же убираем комментарии):
Теперь необходимо создать профиль для Prelude Manager:
Здесь есть один момент. Как и предупреждает программа, генерация ключа может занять очень много времени.
Есть возможность ускорить этот процесс:
После завершения генерации ключа можно запускать Prelude Manager:
Убедимся, что сервер стартовал нормально:
Установка Prewikka
Установим необходимые пакеты:
Создаем еще одну базу для Prewikka:
Теперь отредактируем файл конфигурации Prewikka и укажем правильные базы данных:
В нашем случае необходимо добавить (или отредактировать) следующие строки:
Теперь поставим Apache:
Создаем виртуальный хост:
Казалось бы, что все готово, но тут нас поджидает несколько подводных камней. Во-первых, необходимо отключить или настроить SELinux, во-вторых, открыть 80 порт на локальном файерволе, в-третьих, установить права доступа к папке с файлом конфигурации:
Тем не менее, если сейчас попробовать зайти в Prewikk’у, произойдет ошибка.
Проверим логи:
Устанавливаем недостающий модуль:
Теперь можно зайти на сервер и залогиниться с парой логин/пароль admin/admin.
Установка OSSEC
Скачать архивы с последней версией OSSEC можно здесь. На той же странице написано о том, что RPM для RHEL/CentOS можно взять из репозитория AtomiCorp. Нам такой вариант не подойдет, так как OSSEC в том репозитории собран без поддержки libprelud, тем не менее, при установке агентов на конечные сервера, его вполне можно использовать.
Итак, скачиваем и распаковываем последнюю версию OSSEC.
Теперь для того, чтобы скомпилировать OSSEC ставим libprelude-devel, компилятор и make
Устанавливаем параметры компиляции:
Скрипт установки задаст несколько вопросов — какой использовать язык, тип установки и пр. Самое главное — указать верный тип установки. В нашем случае — server. Так же я не рекомендую включать функцию active response без предварительного чтения мануала по ней и настройки под себя.
После финального нажатия клавиши «ввод», начнется компиляция OSSEC и его копирование в директорию установки (по умолчанию это /var/ossec/).
Укажем в файле конфигурации то, что события необходимо отправлять в prelude-manager.
В секцию добавляем строку
Теперь подключим OSSEC к prelude. Запускаем в одной консоли сервер регистрации:
В другой — регистрируем OSSEC командой:
Как и в прошлый раз, мы можем ускорить генерацию ключей командой:
Как только генерация ключей завершится, во второй консоли будет предложено ввести одноразовый пароль. В данном случае — это «p9gnqy98».
Теперь перезапускаем оба демона.
Если теперь зайти в Prewikk’у, то можно видеть приходящие из OSSEC уведомления и сигналы тревоги.
Если зайти во вкладку Agents, в списке агентов должны значится prelude-manager и OSSEC.
Итоги
Итак, мы установили на наш сервер Prelude IDS. Настроили вывод его оповещений в СУБД MySQL, установленную на этом же сервере. Так же мы создали еще одну БД для Web-интерфейса Prewikka, который входит в состав Prelude IDS. После всего этого мы скомпилировали OSSEC HIDS со специальными опциями, которые позволяют отправлять события OSSEC не только в syslog или СУБД, но и прямо в Prelude.
Теперь при появлении подозрительных событий в логах, OSSEC сгенерирует алерт, запишет его в файл /var/ossec/logs/ossec.log, отправит в Prelude IDS. Prelude в свою очередь запишет его в базу данных, а Prewiika при заходе на нее обеспечит отображение всех этих событий в удобочитаемом виде.
В этой статье я не описал довольно много вещей, которым, если будут заинтересованные читатели, можно посвятить еще не одну статью.
Например, как установить OSSEC на сервер без компилятора, как настроить и обслуживать БД для Prelude, как устанавливать и настраивать агентов OSSEC на другие сервера, как настраивать свои собственные правила генерации событий для OSSEC.