Это, конечно, не сложно. Может и не стоило бы об этом писать, но я больше хотел обратить внимание на развертывание системы посредством MS System Center. Будем использовать последнюю версию Winlogbeat. Сейчас последняя версия — 5.1.1. Качаем отсюда https://www.elastic.co/downloads/beats/winlogbeat два варианта: 32-х и 64-x разрядные. На System Center делаем шару winlogbeat
для everyone и внутри неё два фолдера x32\winlogbbeat
и x64\winlogbeat
. Помещаем в эти фолдеры файлы из соответствующих скачанных архивов. Все не нужны. Нужны только: winlogbeat.exe
, install-service-winlogbeat.ps1
, uninstall-service-winlogbeat.ps1
. На наш сервер, где у нас logstash надо записать шаблон индексов для Elasticsearch. У меня Elasticsearch 2.4. Я беру из скачанного архива шаблон winlogbeat.template-es2x.json
и кладу его в /etc/logstash
на своем сервере.
Теперь надо написать файл конфигурации для logstash на обработку входного потока. Я написал вот такой 03-winlogbeat.conf
input { beats { port => 5044 ssl => true ssl_certificate => "/etc/logstash/logstash-forwarder.crt" ssl_key => "/etc/logstash/logstash-forwarder.key" tags => ["winlogbeat"] } } filter { if "winlogbeat" in [tags] { # if [event_id] == 5447 {drop{}} # Так можно убрать мусорные события по ID if [event_data][LogonType] { ruby { code => "dict = {'0'=>'Системный', '1'=>'Неизвестный', '2'=>'Интерактивный', '3'=>'Сетевой', '4'=>'Пакетный', '5'=>'Как Сервис', '6'=>'Прокси', '7'=>'Снятие блокировки (локально)', '8'=>'Сетевой (открытый текст)', '9'=>'Новая учетная запись', '10'=>'Интерактивный (удаленно)', '11'=>'Интерактивный (из кэша)', '12'=>'Интерактивный (удаленно, из кэша)', '13'=>'Снятие блокировки (из кэша)'}; key = event['event_data']['LogonType']; event['event_data']['LogonType'] = dict[key];" } } if [beat][hostname] { ruby {code => "event['beat']['hostname'] = event['beat']['hostname'].downcase;"} } } } output { if "winlogbeat" in [tags] { elasticsearch { hosts => ["127.0.0.1:9200"] index => "winlogbeat-%{+YYYY.MM.dd}" document_type => "winlogbeat" template => "/etc/logstash/winlogbeat.template-es2x.json" template_name => "winlogbeat" template_overwrite => true } } }
Обращаю внимание на самоподписанный ssl сертификат сервера logstash. Если вы не хотите шифровать трафик, уберите все строки с ssl. Иначе добавьте файл с сертификатом (logstash-forwarder.crt
) в каталоги, созданные в шаре на System Center (в оба). Как понятно, файл с секретным ключом там не нужен.
Из приведенного текста видно, что в данном случае Elasticsearch и Logstash находятся на одном сервере. Если у вас иначе, поправьте секцию output
.
Теперь надо сделать файл конфигурации winlogbeat.yml
. Вот такой:
winlogbeat.event_logs: - name: Application ignore_older: 72h - name: Security - name: System output.logstash: # The Logstash hosts hosts: ["192.168.1.1:5044"] # Optional SSL. By default is off. # List of root certificates for HTTPS server verifications ssl.certificate_authorities: ["C:\\Program Files\\winlogbeat\\logstash-forwarder.crt"]
Обратите внимание на путь к ssl сертификату. Да, он должен быть такой. Именно туда мы будем копировать содержимое созданных на System Center каталогов. Если вы не будете пользовать ssl закомментируйте эту строку. И конечно не забудьте поменять ip адрес хоста на реальный.
Созданный файл кладем в оба наших фолдера на System Center.
Теперь делаем скрипты для установки и удаления сервиса, вот такие:
install.bat
@echo off mkdir "C:\Program Files\winlogbeat" copy *.* "C:\Program Files\winlogbeat" /Y cd "C:\Program Files\winlogbeat" PowerShell.exe Set-ExecutionPolicy Unrestricted -Force PowerShell.exe Unblock-File -Path 'C:\Program Files\winlogbeat\install-service-winlogbeat.ps1' PowerShell.exe .\install-service-winlogbeat.ps1 PowerShell.exe Set-ExecutionPolicy Restricted -Force net start winlogbeat
uninstall.bat
@echo off cd "C:\Program Files\winlogbeat" PowerShell.exe Set-ExecutionPolicy Unrestricted -Force PowerShell.exe Unblock-File -Path 'C:\Program Files\winlogbeat\uninstall-service-winlogbeat.ps1' PowerShell.exe .\uninstall-service-winlogbeat.ps1 PowerShell.exe Set-ExecutionPolicy Restricted -Force del "C:\Program Files\winlogbeat\winlogbeat.exe" del "C:\Program Files\winlogbeat\winlogbeat.yml"
Эти файлы тоже нужно поместить в наши каталоги на System Center.
Теперь в каждом каталоге в шаре на System Center у вас должны лежать файлы:
winlogbeat.exe install-service-winlogbeat.ps1 uninstall-service-winlogbeat.ps1 logstash-forwarder.crt install.bat uninstall.bat winlogbeat.yml
Вот и вся подготовка.
Теперь делаем в консоли System Center два Application winlobeat-x32
и winlogbeat-x64
. Источники контента из соответствующих каталогов в нашей шаре, тип установки script, программа установки install.bat, программа удаления uninstall.bat, критерий необходимости установки — наличие файла winlogbeat.yml
в каталоге %ProgramFiles%\winlogbeat
.
Теперь делаем деплой соответствующих аппликух в коллекции с 64-х и 32-х разрядными windows. И да, тип установки, конечно required и всячески hidden. И не забудьте, когда будете задавать Deployment type, выбрать опцию Download content from distribution point and run locally на странице описания параметров контента.
Ну и маленький кусочек скриншота кибаны, всё не покажу, секрет :).
Кстати, видно что с разных языковых версий события приходят на разных языках. С одной стороны, это не удобно, а с другой стороны, это «чистый» лог.
Уведомление: ELK Отслеживание процессов Windows во всей сети | ESGUARDIAN