29.09.2016 @ 12:43 Основы работы с Splunk Enterprise (Snort+OSSEC) ossec, snort, splunk Сегодня мы рассмотрим базовую работу с платформой для операционной аналитики Splunk Enterprise. Мы настроим Splunk на сбор данных с удаленного сервера, на котором работает NIDS Snort и сервера, использующего HIDS OSSEC. Рассмотрим несколько способов подключения источников и поговорим о других возможностях Splunk. Официальный сайт дает следующее определение комплексу Splunk Enterprise: Splunk Enterprise упрощает сбор, анализ и работу с большими наборами данных, которые генерируются вашей технологической инфраструктурой, системами безопасности и бизнес-приложениями. Доступные варианты для скачивания Все компоненты Splunk можно скачать с официального сайта www.splunk.com Доступно 3 варианта платформы: Splunk Enterprise Splunk Light Splunk Cloud Про каждый из них можно почитать на официальном сайте, а здесь мы поговорил только о первом. Подробнее о различиях версий Free и Enterprise можно почитать тут: www.splunk.com/en_us/products/splunk-enterprise/free-vs-enterprise.html Установка и базовая настройка серверной части Регистрируемся на сайте www.splunk.com Скачиваем Splunk Enterprise для вашей платформы. Я использовал CentOS 7 (x86_64) Устанавливаем RPM пакет: rpm -i splunk-6.4.3-b03109c2bad4-linux-2.6-x86_64.rpm Сервер устанавливается в /opt/splunk Запускаем /opt/splunk/bin/splunk start Принимаем лицензионное соглашение, нажимаем q, затем y Открываем веб-интерфейс http://hostname:8000 Вводим стандартные логин/пароль (admin/changeme) Меняем пароль на постоянный В правом верхнем углу могут появиться предупреждения о нехватке места на диске, и по этой причине индексация не будет работать. Нас это не устраивает и мы уменьшим пороговое значение, при котором индексация должна отключаться. Определение индекса в Splunk несколько отличается от привычного. Здесь под индексом подразумевается специальным образом сохраненная информация, полученная Splunk сервером от источников, т.е. всевозможные сообщения, поиск по которым мы в дальнейшем осуществляем. Подробнее можно почитать здесь docs.splunk.com/Documentation/Splunk/6.0/Indexer/HowSplunkstoresindexes Все индексы хранятся здесь /opt/splunk/var/lib/splunk/defaultdb т.е. для нас такое предупреждение означает, что Splunk не будет принимать сообщения от источников. Если у вас не появилось такого предупреждения, то ничего предпринимать не нужно. Если появилось, то в меню выбираем Settings -> Server settings -> General settings и устанавливаем параметр «Pause indexing if free disk space (in MB) falls below» на меньшее значение, я поставил 1000 Сохраняем Нужно перезапустить сервер, это можно сделать из веб-интерфейса. Меню -> Settings -> Server control -> Restart Splunk После перезапуска предупреждение пропадет и индексация заработает. Для передачи данных с удаленных серверов, Splunk использует агенты, которые так же можно скачать с официального сайта бесплатно и эта возможность сохраняется при использовании бесплатной лицензии. Чтобы агенты имели возможность подключаться к серверу, нужно включить на сервере листнер. Я добавил /opt/splunk/bin в переменную окружения PATH, чтобы вызывать команды управления проще. Включаем листнер командой ОС splunk enable listen 9999 вводим логин и пароль сервера и получаем сообщение Listening for Splunk data on TCP port 9999. и давайте сразу настроим наш сервер на автозапуск: splunk enable boot-start получаем Init script installed at /etc/init.d/splunk. Init script is configured to run at boot. Проверяем какие порты слушает Splunk netstat -tln должны слушаться 8000, 8089 и 9999 Установка агента Splunkforwarder на сервер Snort Почему передавать логи с удаленного сервера через агента Splunk — это правильно? Агент доступен для ОС Windows, Linux, Solaris, Mac OS, FreeBSD, AIX, HP-UX. Скачиваем агент для своей платформы. В моем случае это снова CentOS 7 (x86_64) www.splunk.com/en_us/download/universal-forwarder.html Устанавливаем агент rpm -i splunkforwarder-6.5.0-59c8927def0f-linux-2.6-x86_64.rpm Готово! агент устанавливается в /opt/splunkforwarder Запускаем /opt/splunkforwarder/bin/splunk start принимаем лицензионное соглашение, нажимаем q, затем y Если в конце лога мы видим Starting splunk server daemon (splunkd)... Done значит все хорошо. Авторизуемся агентом на сервере /opt/splunkforwarder/bin/splunk add forward-server 192.168.1.1:9999 Вводим пароль для доступа к конфигурации splunkforwarder, по умолчанию это логин admin и пароль changeme Мы должны получить сообщение Added forwarding to: 192.168.1.1:9999 Еще одной командой указываем агенту получать конфигурацию централизованно, от сервера. Это позволит указывать файлы для мониторинга не через конфигурационные файлы агентов, а через веб-интерфейс сервера. /opt/splunkforwarder/bin/splunk set deploy-poll 192.168.1.1:8089 Должны увидеть Configuration updated. проверяем, что наш сервер корректно прописался в конфигурационном файле cat /opt/splunkforwarder/etc/system/local/deploymentclient.conf targetUri = 192.168.1.1:8089 проверяем лог агента tail -f /opt/splunkforwarder/var/log/splunk/splunkd.log ждем сообщения вида 09-28-2016 03:25:18.798 -0400 INFO HttpPubSubConnection - Running phone uri=/services/broker/phonehome/connection_192.168.1.2_8089_192.168.1.2_snortserver_B495EC7F-3839-4175-99BB-F599AD6D95B9 Если видим ошибки от Deploymen Client (DC), что нельзя использовать localhost как hostname, то задаем другое имя хоста, прописываем его в /etc/hosts и выполняем команду регистрации на порт 8089 еще раз, затем проверяем лог. Если возникли какие-то трудности, вы всегда можете обратиться к официальной инструкции по адресу docs.splunk.com/Documentation/Forwarder/6.4.3/Forwarder/HowtoforwarddatatoSplunkEnterprise После этого смотрим через веб-интерфейс сервера, «дозвонился» ли агент. Меню Settings -> Forwarder management Если агент появился, мы можем теперь указать ему, какие файлы требуется мониторить на удаленном сервере. Настаиваем мониторинг журналов Snort Для этого выбираем пункт меню Settings -> Data Inputs Экран разделен на две секции, Local и Forwarded inputs нам нужен пункт Files & Directories раздела Forwarded inputs Нажимаем New Выбираем доступный хост, чтобы он появился в поле Selected host Указываем произвольный Server class name Жмем Next Теперь нужно указать путь до файла(ов), нас интересующих. Для наших целей мы будем мониторить файлы на удаленном сервере, которые находятся здесь /var/log/snort и называются по маске alerts.log* Указываем Source snort, индекс оставляем стандартный. Жмем Prewiew и подтверждаем наши настройки. Можем сразу нажать кнопку Start search чтобы протестировать конфигурацию Триггерим алерт Snort, смотрим в Splunk. Работает! Особенностью интерфейса splunk является то, что в нем имеется режим Real-time, в котором нам нет необходимости нажимать Search чтобы обновить страницу. Она обновляется автоматически при поступлении новых алертов. Выберем режим Real-time, 1 minute window Значки стали активны, значит мониторинг в реальном времени включен Попробуем brute force SSH Таким образом мониторинг журналов SNORT с удаленного сервера настроен. Настройка передачи алертов OSSEC в Splunk На сервере Splunk у меня установлена серверная часть HIDS OSSEC, принимающая от своего агента на удаленном веб-сервере алерты. Значит мы можем легко добавить в Splunk мониторинг файла OSSEC менеджера, т.к. файл находится на том же сервере, что и серверная часть Splunk. Для этого мы могли бы использовать практически ту же методику, что и ранее, только в разделе Data inputs нужно было бы выбрать пункт Files&Directories раздела Local inputs. Но я хочу продемонстрировать еще одну возможность Splunk — получение данных на TCP или UDP порт. Я сконфигурирую OSSEC менеджер отправлять данные на 127.0.0.1:514 а Splunk мы настроим следующим образом Меню -> Settings -> Data inputs Выбираем в разделе Local inputs, UDP жмем New указываем порт 514 На следующей странице выставляем такие настройки: Смотрим Review, подтверждаем и начинаем поиск. Я попробовал залогиниться на веб-сервер несуществующим пользователем. OSSEC агент передал серверу предупреждение, а сервер отправил его в Splunk. Что мы и видим на экране. Поиск очень продвинутый, от простого поиска по фразе, до фильтрации по всевозможным параметрам. Все функции описаны в официальной документации. Рекомендую ее к прочтению, если вы хотите использовать Splunk всерьез. В заключении стоит сказать несколько слов о расширении стандартного функционала Splunk Enterprise приложениями, который легко можно установить прямо через веб-интерфейс или писать самим. Расширяем функционал Splunk Enterprise Кликнем на серый прямоугольник боковой панели И можем найти, например, приложение, добавляющее специально созданный source type для OSSEC. Жмем Install, вводим логин и пароль от аккаунта Splunk, дожидаемся окончания установки, соглашаемся перезапустить Splunk. Для более наглядной демонстрации я установлю еще одно приложение для OSSEC — Reporting and Management for OSSEC. Оно работает только вместе с source type, который установился с предыдущим приложением. Это приложение официально несовместимо с моей версией Splunk, поэтому мне пришлось скачать его с официального сайта вручную и установить через файл, что очень просто делается. Конечно, не забываем прочитать документацию к устанавливаемому приложению, т.к. не все работает «из коробки», требуются определенные настройки в splunk и ossec. После установки приложение появляется на панели слева. Откроем его. Выберем пункт Agent status Получаем такое красивое представление. Или очень удобная функия Event Search и, конечно же, сам dashboard выглядит хорошо. Аналогичное приложение есть и для SNORT. Обратите внимание, что приложения иногда требуется устанавливать и на splunkforwarder. Пример из приложения «Splunk for Snort» Все эти графики можно выгружать в pfg, печатать и т.п. Заключение В данной статье были рассмотрены лишь основные возможности Splunk. Мы так же можем настроить Splunk на анализ поступающих сообщений и задать действия на то или иное событие. Ограничение в 500 мб трафика в день у бесплатной версии вряд ли можно считать критичным для небольшой ИТ среды, так что Splunk Enterprise вполне можно использовать как альтернативу существующим веб-интерфейсам для анализа журналов IDS и не только. antgorka 18556 Network security Читать дальше >>