WinlogbeatでWindowsログモニタリング

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

藤本です。

本日2本目です。本日(現地時間は昨日)、Elasticで多くのProductの新バージョンがリリースされました。

昼頃に【新機能】ShieldがKibanaに対応しましたをエントリしました。
今回はWinlogbeatを試してみましたのでご紹介します。

概要

Elasticが提供するOfficial BeatsファミリーにWinlogbeatが加わりました。その他のbeatsは下記ブログエントリをご参照ください。

Winlogbeat

WinlogbeatはWindowsのWindowsログを収集するツールです。以下のようなイベントを取得することができます。

  • アプリケーションイベント
  • システムイベント
  • セキュリティイベント
  • ハードウェアイベント

Windows XP(Windows Server 2003?)以降に対応していますので、現状サポートされているWindowsには対応しているようです。

それでは早速やってみましょう。

環境

  • Windows
    • OS : Windows Server 2012
    • Winlogbeat : 1.1.0
  • Elasticsearch / Kibana
    • OS : CentOS 6.7
    • IPアドレス : 10.255.0.100
    • Elasticsearch : 2.2.0
    • Kibana : 4.4.0

やってみた

Elasticsearch、Kibanaインストール

Elasticsearch、Kibanaのインストールは【新機能】ShieldがKibanaに対応しましたのElasticsearchインストール、Kibanaインストールの章をご参照ください。

Winlogbeatインストール

公式ページよりzipファイルをダウンロードします。

PS C:\> Invoke-WebRequest https://download.elastic.co/beats/winlogbeat/winlogbeat-1.1.0-windows.zip -OutFile winlogbeat-1.1.0-windows.zip

ダウンロードしたzipファイルを解凍します。

解凍したフォルダのインストールスクリプトを実行し、winlogbeatをサービスに登録します。

PS C:\> cd .\winlogbeat-1.1.0-windows\winlogbeat-1.1.0-windows
PS C:\winlogbeat-1.1.0-windows\winlogbeat-1.1.0-windows> Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): y
PS C:\winlogbeat-1.1.0-windows\winlogbeat-1.1.0-windows> . .\install-service-winlogbeat.ps1

Status   Name               DisplayName
------   ----               -----------
Stopped  winlogbeat         winlogbeat

Winlogbeat設定

解凍したディレクトリのymlファイルが設定ファイルです。

winlogbeat.yml

winlogbeat:
  registry_file: C:/ProgramData/winlogbeat/.winlogbeat.yml

  event_logs:
    - name: Application
      ignore_older: 72h 
    - name: Security
    - name: System

  #metrics:
    #bindaddress: 'localhost:8123'

output:
  elasticsearch:
    hosts: ["10.255.0.100:9200"]
  • registry_file :
    読み取り位置情報を記録するためのファイルパスです。サービスを再度起動しても重複なく継続した記録が可能です。logstashのsincedbのようなものだと理解しました。

  • event_logs :
    対象とするWindowsログをnameに指定します。nameは以下のコマンド結果に出力されるものを指定可能です。ignore_olderで取得する期間を指定します。

PS C:\> Get-WinEvent -ListLog * | Format-List -Property LogName

LogName : Application
LogName : HardwareEvents
LogName : Internet Explorer
LogName : Key Management Service
LogName : Security
LogName : System
LogName : Windows PowerShell
LogName : ForwardedEvents
LogName : Microsoft-Management-UI/Admin
LogName : Microsoft-Rdms-UI/Admin
LogName : Microsoft-Rdms-UI/Operational
LogName : Microsoft-Windows-All-User-Install-Agent/Admin
LogName : Microsoft-Windows-All-User-Install-Agent/Operational
LogName : Microsoft-Windows-AppHost/Admin
LogName : Microsoft-Windows-AppID/Operational
(略)
  • metrics :
    bindaddressを指定すると、http:///debug/varsにアクセスすることで、動作状況をJSON形式で取得することができます。

Winlogbeat用インデックステンプレート登録

Winlogbeatが流しこむスキーマ用にテンプレートが用意されています。そのままjsonファイルを流し込みます。

PS C:\winlogbeat-1.1.0-windows\winlogbeat-1.1.0-windows> Invoke-RestMethod -Method Put -InFile winlogbeat.template.json -Uri http://10.255.0.100:9200/_template/winlogbeat

                                acknowledged
                                ------------
                                True

起動

登録したwinlogbeatのサービスを起動します。

PS C:\winlogbeat-1.1.0-windows\winlogbeat-1.1.0-windows> Start-Service –Name winlogbeat

動作確認

Elasticsearchにデータ登録されているか確認します。
OSXから確認します。。

# curl 10.255.0.100:9200/_cat/indices
yellow open winlogbeat-2016.01.18 5 1  268 0 300.3kb 300.3kb
yellow open winlogbeat-2016.01.19 5 1   30 0  93.8kb  93.8kb
yellow open winlogbeat-2016.01.09 5 1  756 0 749.1kb 749.1kb
yellow open winlogbeat-2016.01.14 5 1  404 0 450.4kb 450.4kb
yellow open winlogbeat-2016.01.25 5 1   46 0    390b    390b
yellow open winlogbeat-2016.01.16 5 1  118 0 160.9kb 160.9kb
yellow open winlogbeat-2016.01.17 5 1   41 0 102.9kb 102.9kb
yellow open winlogbeat-2016.01.06 5 1 1527 0     1mb     1mb
yellow open winlogbeat-2016.01.21 5 1  563 0 573.2kb 573.2kb
yellow open winlogbeat-2012.07.26 5 1    8 0  31.6kb  31.6kb
yellow open winlogbeat-2016.01.22 5 1  684 0    260b    260b
yellow open winlogbeat-2016.01.11 5 1   34 0  65.3kb  65.3kb
yellow open winlogbeat-2016.01.12 5 1  943 0 667.8kb 667.8kb
yellow open winlogbeat-2016.01.24 5 1  165 0    260b    260b
yellow open winlogbeat-2016.02.03 5 1  694 0    390b    390b
yellow open winlogbeat-2016.01.20 5 1  212 0 212.5kb 212.5kb
yellow open .kibana               1 1    1 0   3.1kb   3.1kb

winlogbeat-から始まるインデックスがたくさん作成されています。

続いて、Kibanaで確認します。ブラウザからKibanaのUIにアクセスします。
INDEX(winlogbeat-*)を登録します。

Settings_-_Kibana

データは以下のようなものが登録されています。
Eventのレベル、EventID、メッセージ、ユーザー情報などWindowsログのデータが入っていますね。

Discover_-_Kibana

可視化のサンプルとして、Eventのレベル、Event IDで以下のような円グラフを作成したりできます。

count_level_eventid_-_Visualize_-_Kibana

まとめ

いかがでしょうか?
WindowsでもElastic社のProductはインストール・設定が簡単です。
それにしても、いつ見てもKibanaのグラフは素敵ですね〜。