Приветствую, уважаемый читатель!
По моему мнению, каждая
хорошая SIEM-система
должна уметь получать события со всего, до чего может дотянуться всеми возможными способами, в т.ч. с помощью
программных агентов. О них сегодня и пойдет речь, применительно к Splunk – Splunk Universal Forwarder. Очень удобная и
простая в настройке вещь J
В чем нам поможет Forwarder?
- Это элемент масштабирования общей системы мониторинга, и его можно установить на удаленный сервер или хост для сбора событий.
- Возможность использования скриптовых языков (PowerShell, Python и т.д.) для передачи событий на Splunk-сервер.
- Надежный способ передачи событий на Splunk-сервер (защита канала передачи, контроль целостности переданных событий).
- Возможность присваивать тэги Sourcetype, Source, Host для источников событий.
Установка Splunk
Forwarder
Устанавливать Splunk Forwarder будем на Windows 8.1.
Последовательность шагов установки описана ниже.
- Скачать Forwarder для вашей системы можно по следующей ссылке - https://www.splunk.com/ru_ru/download/universal-forwarder.html
- Установка, в принципе, не вызывает сложностей, но уже на этом этапе можно начать настройку полезных функций.
После выбора директории
для установки, будет предложено использовать собственные сертификаты для
построения 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
Вывод:
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 минут
Здравствуйте! У меня возникла проблема со splunk universal forwarder, я поднял виртуальную машину на debian со splunk enterprise,установил на физ. машину windows форвардер. Хост физ машины виден но даты с него не идет. Что делать?
ОтветитьУдалитьСергей, приветствую!
ОтветитьУдалитьПри условии, что виртуалка и физическая машина видят друг друга по сети советую проверить:
1) Настройки брандмауера в Windows и правила Iptables на сервера Splunk. Может есть блокирующие правила.
2) Убедиться, что на Splunk сервера открыт порт для приема данных с форвардера (команда в консоли: netstat -napt | grep splunk). Должны увидеть открытый tcp-порт 9997.
3) Посмотреть трафик с помощью WireShark на Windows хосте и убедиться, что события в сторону Splunk-сервера уходят.
4) Проверить, что служба форвардера (SplunkForwarder) запущена на Windows хосте (Диспетчер задач - Службы).