fbpx

WinlogbeatをMSIインストーラで導入してみた #elasticsearch

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

皆さん、Winlogbeatにインストーラが用意されていたことをご存知でしょうか?

2020年2月12日にリリースされたWinlogbeat 7.6.0からベータ版として
MSI形式のインストーラが用意されるようになりました^^

image.png

そもそも、以前からの圧縮ファイルを解凍してPowerShellを叩く方式が
そんなに難しいわけではないので、あまり必要ないかもしれませんが...

しかし、環境によっては、気軽に管理者権限でPowerShellによる操作をさせてもらえない
という事情もあるかもしれませんので、今回はあえてインストーラでの導入を試してみました。

【参考】
Download Winlogbeat

利用環境

product version
Winlogbeat 7.8.0
OS(GCE VM) Windows Server 2019 Datacenter (n1-standard-1)
GCP Region us-central1 (アイオワ州)

※ 投稿時点における最新版を採用しています。
※ 今回は、GCP環境で動作確認していますが、他環境(オンプレ/別クラウド)でもOKです。

前提

  • 事前にWindows OSを日本語化しています。(英語版Windowsの日本語化)
  • 単純な動作確認のため、ログ出力先はローカル環境のファイルとしています。
  • まだベータ版のためか、公式ドキュメントに手順が掲載されていません。

①インストール

  • WINDOWS MSI 64-BIT(BETA)をダウンロードします。
  • ダウンロードしたMSIインストーラを実行します。
    image.png
  • accept the terms in the License Agreementをチェックし、Installをクリックします。
    image.png
  • これでインストールは完了です。簡単ですね。
    image.png

②ディレクトリとアクセス権限

  • 無事にインストールが完了するとwinlogbeatがサービス登録されます。
    image.png

  • インストール後、以下の2つのディレクトリが自動的に生成されます。

【バイナリファイル (¥Program Files¥Elastic)】

1.ディレクトリ構造

C:\PROGRAM FILES\ELASTIC
└─Beats
    └─7.8.0
        │  winlogbeat.cmd
        │
        └─winlogbeat
            │  .build_hash.txt
            │  LICENSE.txt
            │  NOTICE.txt
            │  README.md
            │  winlogbeat.exe
            │
            ├─kibana
            │  └─7
            │      └─dashboard
            │              01c54730-fee6-11e9-8405-516218e3d268.json
            │              71f720f0-ff18-11e9-8405-516218e3d268.json
            │              8223bed0-b9e9-11e9-b6a2-c9b4015c4baf.json
            │              bb858830-f412-11e9-8405-516218e3d268.json
            │              Winlogbeat-overview.json
            │
            └─module
                ├─security
                │  └─config
                │          winlogbeat-security.js
                │
                └─sysmon
                    └─config
                            winlogbeat-sysmon.js

2.アクセス権限

C:\Program Files\Elastic NT SERVICE\TrustedInstaller:(ID)F
                         NT SERVICE\TrustedInstaller:(CI)(IO)(ID)F
                         NT AUTHORITY\SYSTEM:(ID)F
                         NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(ID)F
                         BUILTIN\Administrators:(ID)F
                         BUILTIN\Administrators:(OI)(CI)(IO)(ID)F
                         BUILTIN\Users:(ID)R
                         BUILTIN\Users:(OI)(CI)(IO)(ID)(特殊なアクセス:)
                                                       GENERIC_READ
                                                       GENERIC_EXECUTE</p>

<pre><code>                     CREATOR OWNER:(OI)(CI)(IO)(ID)F
                     APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(ID)R
                     APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(OI)(CI)(IO)(ID)(特殊なアクセス:)
                                                                                            GENERIC_READ
                                                                                            GENERIC_EXECUTE

                     APPLICATION PACKAGE AUTHORITY\制限されたすべてのアプリケーション パッケージ:(ID)R
                     APPLICATION PACKAGE AUTHORITY\制限されたすべてのアプリケーション パッケージ:(OI)(CI)(IO)(ID)(特殊なアクセス:)
                                                                                           GENERIC_READ
                                                                                           GENERIC_EXECUTE
</code></pre>

<p>

【設定ファイル (¥ProgramData¥Elastic)】

1.ディレクトリ構造

C:\PROGRAMDATA\ELASTIC
└─Beats
    └─winlogbeat
            fields.yml
            winlogbeat.example.yml
            winlogbeat.reference.yml

2.アクセス権限

C:\ProgramData\Elastic NT AUTHORITY\SYSTEM:(OI)(CI)(ID)F
                       BUILTIN\Administrators:(OI)(CI)(ID)F
                       CREATOR OWNER:(OI)(CI)(IO)(ID)F
                       BUILTIN\Users:(OI)(CI)(ID)R
                       BUILTIN\Users:(CI)(ID)(特殊なアクセス:)
                                             FILE_WRITE_DATA
                                             FILE_APPEND_DATA
                                             FILE_WRITE_EA
                                             FILE_WRITE_ATTRIBUTES

※ 設定ファイル配置場所のProgramDataは隠しディレクトリになります。
※ 上記のディレクトリは、どちらもAdministratorsグループにフルアクセス権限が付与されています。

③Winlogbeat設定

  • 今回は、イベントID:4608以外のSecurityイベントをデスクトップ上のwinlogbeatフォルダに出力しました。
  • 作成したwinlogbeatの設定ファイルは以下の通りです。

</p>

<h1>======================== Winlogbeat specific options =========================</h1>

<p>winlogbeat.event_logs:
  - name: Security
    tags: ["security"]
    event_id: -4608</p>

<h1>-------------------------------- File Output ---------------------------------</h1>

<p>output.file:
  # Boolean flag to enable or disable the output module.
  enabled: true</p>

<p># Configure JSON encoding
  #codec.json:
    # Pretty-print JSON event
    #pretty: false</p>

<pre><code># Configure escaping HTML symbols in strings.
#escape_html: false
</code></pre>

<p># Path to the directory where to save the generated files. The option is
  # mandatory.
  path: "C:/Users/hisas32/Desktop/winlogbeat"</p>

<p># Name of the generated files. The default is <code>winlogbeat</code> and it generates
  # files: <code>winlogbeat</code>, <code>winlogbeat.1</code>, <code>winlogbeat.2</code>, etc.
  filename: winlogbeat</p>

<p># Maximum size in kilobytes of each file. When this size is reached, and on
  # every Winlogbeat restart, the files are rotated. The default value is 10240
  # kB.
  #rotate_every_kb: 10000</p>

<p># Maximum number of files under path. When this number of files is reached,
  # the oldest file is deleted and the rest are shifted from last to first. The
  # default is 7 files.
  #number_of_files: 7</p>

<p># Permissions to use for file creation. The default is 0600.
  #permissions: 0600

4608を除外したことに大した意味はないです。マイナス記号で特定IDのみ除外する練習です。

  • 以下は、ファイル出力時のオプションパラメータになります。

【File Outputのパラメータ】

設定項目 デフォルト値 説明
enabled true (任意) ファイル出力設定を有効にするか指定します。
path なし (必須) ログ出力先のファイルのディレクトリパスを指定します。
filename winlogbeat (任意) ログ出力先のファイル名を指定します。rotate_every_kbで指定されたファイルサイズに応じて、「winlogbeat」、「winlogbeat.1」、「winlogbeat.2」となります。
rotate_every_kb 1024 KB (任意) 各ファイルの最大サイズ(キロバイト)を指定します。サイズに達するとファイルがローテートします。
number_of_files 7 (任意) 指定したパスに保存されるファイル最大数(2〜1024個)を指定します。
permissions 0600 (任意) ファイル作成に使用する権限を指定します。デフォルトでは、所有者のみ読み書き可能になります。
codec json (任意) ファイル出力するフォーマットを指定します。
json.pretty false (任意) 有効化するとJSONオブジェクトをマルチライン表示します。
json.escape_html false (任意) 有効化するとHTMLシンボルは文字列でエスケープされます。
  • 上記のwinlogbeat.ymlをC:¥ProgramData¥Elastic¥Beats¥winlogbeat配下に保存します。
  • [タスクマネージャー] > [サービス]からwinlogbeatを開始します。
  • 少しするとこんな感じでファイルが生成されました。
    image.png

  • テキストエディタで開くと以下のようにイベントログがテキスト(ND JSON形式)で出力されています。

{"@timestamp":"2020-07-25T20:46:22.310Z","@metadata":{"beat":"winlogbeat","type":"_doc","version":"7.8.0"},"log":{"level":"情報"},"message":"オブジェクトの監査設定が変更されました。\n\nサブジェクト:\n\tセキュリティ ID:\t\tS-1-5-18\n\tアカウント名:\t\tWINLOGBEAT-TEST$\n\tアカウント ドメイン:\t\tWORKGROUP\n\tログオン ID:\t\t0x3E7\n\nオブジェクト:\n\tオブジェクト サーバー:\tSecurity\n\tオブジェクトの種類:\tFile\n\tオブジェクト名:\tC:\Windows\System32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.ODataUtils\ja-JP\Microsoft.PowerShell.ODataUtilsStrings.psd1\n\tハンドル ID:\t0xbf4c\n\nプロセス情報:\n\tプロセス ID:\t0x15e4\n\tプロセス名:\tC:\Windows\WinSxS\amd64_microsoft-windows-servicingstack_31bf3856ad364e35_10.0.17763.1337_none_56eec63b99185977\TiWorker.exe\n\n監査設定:\n\t元のセキュリティ記述子:\tS:AINO_ACCESS_CONTROL\n\t新しいセキュリティ記述子:\t\tS:ARAI(AU;SAFA;DCLCRPCRSDWDWO;;;WD)","tags":["security"],"ecs":{"version":"1.5.0"},"agent":{"type":"winlogbeat","version":"7.8.0","hostname":"winlogbeat-test","ephemeral_id":"62436bbc-0eb0-48af-a047-2889e4e61c4d","id":"e2413f49-e109-48c6-aede-083f3fb6ff78","name":"winlogbeat-test"},"winlog":{"api":"wineventlog","provider_guid":"{54849625-5478-4994-a5ba-3e3b0328c30d}","computer_name":"winlogbeat-test","process":{"pid":4,"thread":{"id":4824}},"opcode":"情報","event_data":{"SubjectLogonId":"0x3e7","ObjectServer":"Security","OldSd":"S:AINO_ACCESS_CONTROL","ProcessName":"C:\Windows\WinSxS\amd64_microsoft-windows-servicingstack_31bf3856ad364e35_10.0.17763.1337_none_56eec63b99185977\TiWorker.exe","HandleId":"0xbf4c","NewSd":"S:ARAI(AU;SAFA;DCLCRPCRSDWDWO;;;WD)","ProcessId":"0x15e4","SubjectUserSid":"S-1-5-18","SubjectDomainName":"WORKGROUP","ObjectType":"File","SubjectUserName":"WINLOGBEAT-TEST$","ObjectName":"C:\Windows\System32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.ODataUtils\ja-JP\Microsoft.PowerShell.ODataUtilsStrings.psd1"},"channel":"Security","event_id":4907,"record_id":6289,"keywords":["成功の監査"],"provider_name":"Microsoft-Windows-Security-Auditing","task":"Audit Policy Change"},"event":{"kind":"event","code":4907,"provider":"Microsoft-Windows-Security-Auditing","action":"Audit Policy Change","created":"2020-07-26T09:37:12.662Z"},"host":{"name":"winlogbeat-test"}}

【参考】
Configure Winlogbeat
Configure the File output

まとめ

さて、いかがでしたでしょうか?

非常に簡単にWinlogbeatを展開できるようになったのではないでしょうか。
まだベータ版ですが、どんな動きをするのか気になっていたので、今回確認できて良かったです^^v

Author

ログ分析基盤のアーキテクチャデザインやクラウドにおけるセキュリティ実装方式を研究するElasticエバンジェリスト。
国内エンジニアの貴重なリソースを効率良く活用できるよう、技術ナレッジを惜しみなく発信するよう心がけている。

日比野恒の記事一覧

新規CTA