WinlogbeatをMSIインストーラで導入してみた #elasticsearch
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
皆さん、Winlogbeatにインストーラが用意されていたことをご存知でしょうか?
2020年2月12日にリリースされたWinlogbeat 7.6.0からベータ版として
MSI形式のインストーラが用意されるようになりました^^
そもそも、以前からの圧縮ファイルを解凍して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インストーラを実行します。
- accept the terms in the License Agreementをチェックし、Installをクリックします。
- これでインストールは完了です。簡単ですね。
②ディレクトリとアクセス権限
-
無事にインストールが完了するとwinlogbeatがサービス登録されます。
-
インストール後、以下の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を開始します。
-
少しするとこんな感じでファイルが生成されました。
-
テキストエディタで開くと以下のようにイベントログがテキスト(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