четверг, 22 декабря 2016 г.

Splunk. Установка и настройка Splunk Forwarder.

Приветствую, уважаемый читатель!

По моему мнению, каждая хорошая SIEM-система должна уметь получать события со всего, до чего может дотянуться  всеми возможными способами, в т.ч. с помощью программных агентов. О них сегодня и пойдет речь, применительно к SplunkSplunk Universal Forwarder. Очень удобная и простая в настройке вещь J





В чем нам поможет Forwarder?
  1. Это элемент масштабирования общей системы мониторинга, и его можно установить на удаленный сервер или хост для сбора событий.
  2. Возможность использования скриптовых языков (PowerShell, Python и т.д.) для передачи событий на Splunk-сервер.
  3. Надежный способ передачи событий на Splunk-сервер (защита канала передачи, контроль целостности переданных событий).
  4. Возможность присваивать тэги Sourcetype, Source, Host для источников событий.



Установка Splunk Forwarder

Устанавливать Splunk Forwarder будем на Windows 8.1. Последовательность шагов установки описана ниже.

  • Установка, в принципе, не вызывает сложностей, но уже на этом этапе можно начать настройку полезных функций. 



После выбора директории для установки, будет предложено использовать собственные сертификаты для построения SSL-туннеля. Если вы откажетесь, то Splunk будет использовать собственные сертификаты.




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



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





Если вы не являетесь счастливым обладателем такой лицензии, то для вас следующий шаг (Receiving Indexer). Необходимо указать IP-адрес Splunk-сервера.




Собственно, на этом установка завершена.

После завершения установки все файлы вашего новенького форвардера будут тут – «C:\Program Files\SplunkUniversalForwarder\bin»

Для управление Forwarder (запуск\отключение\перезапуск) можно использовать командную строку:

.\splunk.exe start
.\splunk.exe stop
.\splunk.exe restart

Настройка новых Data Inputs

 Подключение журналов событий Windows

Интересовать нас будет файл inputs.conf «…\SplunkUniversalForwarder\local\inputs.conf», в котором настраиваются источники событий. Если выбрать на этапе установки форвардера галочку «Security log» то в inputs.conf вы увидите:

[WinEventLog://Security]
checkpointInterval = 5
current_only = 0
disabled = 0
start_from = oldest

Для подключения остальных журналов необходимо изменить наименование Data Input’а на:

[WinEventLog://Application]
[WinEventLog://System]


После перезагрузки форвардера в Splunk вы увидите события:

sourcetype="WinEventLog:Security" EventCode="4688"
| table RecordNumber,EventCode,"ИД нового процесса","Имя нового процесса"




Мониторинг директорий и файлов

Для получения событий из файлов необходимо добавить в inputs.conf новый источник событий типа «monitor». Для примера возьмем файлик со списком прокси-серверов, генерируемый скриптом из этого поста -  http://unitybas.blogspot.ru/2016/06/splunk-proxy-tor-1.html 

[monitor://C:\Temp\Logs]
disabled=false
sourcetype=Forwarder:IPProxy

Теперь события из файла будут в Splunk

sourcetype="Forwarder:IPProxy"




Получение результатов командлета на PowerShell

У форвардера имеется замечательная возможность, это получение события при помощи powershell, как от скриптов, так и от отдельных командлетов. Для корректного отображения  результат вывода командлетов должен быть отформатирован в виде Format-table.

Ниже примеры.

Код на PS:
Get-Service | select Name, Status, DisplayName 


Запись в inputs.conf:
[powershell://Services]
script = Get-Service | select Name, Status, DisplayName | Format-list -Property * 
schedule = */5 * * * *
sourcetype = Forwarder:Service


Запрос в Splunk:
sourcetype="Forwarder:Service"
| table Name,Status,DisplayName


Вывод:




Подключение скрипта на powershell

С подключением скриптов ситуация не сложнее. Просто необходимо указать место размещения скрипта, частоту запуска и новый sourcetype.

Код на PS:

$Net = Get-NetTCPConnection
$PList = Get-Process

foreach ($socket in $Net) {
    foreach ($Proc in $PList) {
        if ($socket.OwningProcess -eq $Proc.Id) {
            $socket | Select OwningProcess, LocalAddress, LocalPort, RemoteAddress, RemotePort, State, @{Name="ProcName"; Expression={$Proc.ProcessName}}
        } 
    }
}


Запись в inputs.conf:
[powershell://PSNetstat]
script = . "$SplunkHome\etc\apps\SplunkUniversalForwarder\bin\NStats.ps1"
schedule = */5 * * * *
sourcetype = Forwarder:Netstat


Запрос на SPL:
sourcetype="Forwarder:Netstat"
| table OwningProcess, LocalAddress, LocalPort, RemoteAddress, RemotePort, ProcName


Вывод:




Собственно, таким образом можно подключать к Forwarder различные источники событий. Всем удачного использования J


Лирические отступления:

Как вы заметили, периодичность запуска скрипта определяется опцией «schedule», которая подразумевает задание интервала в нотации cron. Почитать можно тут - https://ru.wikipedia.org/wiki/Cron

*/5 * * * *  -  запускать скрипт каждые 5 минут



2 комментария:

  1. Здравствуйте! У меня возникла проблема со splunk universal forwarder, я поднял виртуальную машину на debian со splunk enterprise,установил на физ. машину windows форвардер. Хост физ машины виден но даты с него не идет. Что делать?

    ОтветитьУдалить
  2. Сергей, приветствую!
    При условии, что виртуалка и физическая машина видят друг друга по сети советую проверить:
    1) Настройки брандмауера в Windows и правила Iptables на сервера Splunk. Может есть блокирующие правила.
    2) Убедиться, что на Splunk сервера открыт порт для приема данных с форвардера (команда в консоли: netstat -napt | grep splunk). Должны увидеть открытый tcp-порт 9997.
    3) Посмотреть трафик с помощью WireShark на Windows хосте и убедиться, что события в сторону Splunk-сервера уходят.
    4) Проверить, что служба форвардера (SplunkForwarder) запущена на Windows хосте (Диспетчер задач - Службы).



    ОтветитьУдалить