Сегодня мы рассмотрим базовую работу с платформой для операционной аналитики Splunk Enterprise.

 

Мы настроим Splunk на сбор данных с удаленного сервера, на котором работает NIDS Snort и сервера, использующего HIDS OSSEC. Рассмотрим несколько способов подключения источников и поговорим о других возможностях Splunk.

Официальный сайт дает следующее определение комплексу Splunk Enterprise:

Splunk Enterprise упрощает сбор, анализ и работу с большими наборами данных, которые генерируются вашей технологической инфраструктурой, системами безопасности и бизнес-приложениями.

Доступные варианты для скачивания

Все компоненты Splunk можно скачать с официального сайта www.splunk.com
Доступно 3 варианта платформы:

  • Splunk Enterprise
  • Splunk Light
  • Splunk Cloud

Про каждый из них можно почитать на официальном сайте, а здесь мы поговорил только о первом.

0

Подробнее о различиях версий 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)
Меняем пароль на постоянный

2

В правом верхнем углу могут появиться предупреждения о нехватке места на диске, и по этой причине индексация не будет работать.

3

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

Определение индекса в 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

4

Сохраняем

Нужно перезапустить сервер, это можно сделать из веб-интерфейса.
Меню -> 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 — это правильно?

m1

Агент доступен для ОС 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

6

Если агент появился, мы можем теперь указать ему, какие файлы требуется мониторить на удаленном сервере.

Настаиваем мониторинг журналов Snort

Для этого выбираем пункт меню Settings -> Data Inputs
Экран разделен на две секции, Local и Forwarded inputs

нам нужен пункт Files & Directories раздела Forwarded inputs

Нажимаем New
Выбираем доступный хост, чтобы он появился в поле Selected host
Указываем произвольный Server class name
Жмем Next

7

Теперь нужно указать путь до файла(ов), нас интересующих.

Для наших целей мы будем мониторить файлы на удаленном сервере, которые находятся здесь /var/log/snort
и называются по маске alerts.log*

n2

Указываем Source snort, индекс оставляем стандартный.

9

Жмем Prewiew и подтверждаем наши настройки.
Можем сразу нажать кнопку Start search чтобы протестировать конфигурацию

Триггерим алерт Snort, смотрим в Splunk.

Работает!

10

Особенностью интерфейса splunk является то, что в нем имеется режим Real-time, в котором нам нет необходимости нажимать Search чтобы обновить страницу.
Она обновляется автоматически при поступлении новых алертов.

Выберем режим Real-time, 1 minute window

12

Значки стали активны, значит мониторинг в реальном времени включен

13

Попробуем brute force SSH

11

Таким образом мониторинг журналов 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

x

На следующей странице выставляем такие настройки:

16

Смотрим Review, подтверждаем и начинаем поиск.

Я попробовал залогиниться на веб-сервер несуществующим пользователем. OSSEC агент передал серверу предупреждение, а сервер отправил его в Splunk. Что мы и видим на экране.

17

Поиск очень продвинутый, от простого поиска по фразе, до фильтрации по всевозможным параметрам.
Все функции описаны в официальной документации. Рекомендую ее к прочтению, если вы хотите использовать Splunk всерьез.

В заключении стоит сказать несколько слов о расширении стандартного функционала Splunk Enterprise приложениями, который легко можно установить прямо через веб-интерфейс или писать самим.

Расширяем функционал Splunk Enterprise

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

19

И можем найти, например, приложение, добавляющее специально созданный source type для OSSEC.

20

Жмем Install, вводим логин и пароль от аккаунта Splunk, дожидаемся окончания установки, соглашаемся перезапустить Splunk.

Для более наглядной демонстрации я установлю еще одно приложение для OSSEC — Reporting and Management for OSSEC. Оно работает только вместе с source type, который установился с предыдущим приложением.
Это приложение официально несовместимо с моей версией Splunk, поэтому мне пришлось скачать его с официального сайта вручную и установить через файл, что очень просто делается.
Конечно, не забываем прочитать документацию к устанавливаемому приложению, т.к. не все работает «из коробки», требуются определенные настройки в splunk и ossec.

После установки приложение появляется на панели слева.

22

Откроем его.

Выберем пункт Agent status

21

Получаем такое красивое представление.

n3

Или очень удобная функия Event Search и, конечно же, сам dashboard выглядит хорошо.

25

Аналогичное приложение есть и для SNORT.
Обратите внимание, что приложения иногда требуется устанавливать и на splunkforwarder.

Пример из приложения «Splunk for Snort»

n4

Все эти графики можно выгружать в pfg, печатать и т.п.

Заключение

В данной статье были рассмотрены лишь основные возможности Splunk. Мы так же можем настроить Splunk  на анализ поступающих сообщений и  задать действия на то или иное событие. Ограничение в 500 мб трафика в день у бесплатной версии вряд ли можно считать критичным для небольшой ИТ среды, так что Splunk Enterprise вполне можно использовать как альтернативу существующим веб-интерфейсам для анализа журналов IDS и не только.