WindowsのイベントログをWinlogbeat経由でElastic Cloudに取り込み、Kibanaで確認する方法

# はじめに
WindowsのイベントログをWinlogbeat経由でElastic Cloudに取り込み、Kibanaで確認する方法をまとめました。

# 手順
## 1. Elastic Cloudの準備
今回は無料トライアルを使ってみたいと思います。
以下のページに移動してください。

https://www.elastic.co/jp/elasticsearch/service

次にメールアドレスを入力して、[トライアルを始める]をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/e07f59ef-df54-3211-b97f-8a16251ea85f.png)

しばらくするとメールが届きますので、メール本文中の[Verify and Accept]をクリックしてください。
以下のページが表示されたら適当なパスワードを入力して[Set password and login]をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/be36a253-8db8-34c4-b7e6-f5778e9278ab.png)

以下のページが表示されたら[Start your free trial]をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/b46888ba-caa7-abb6-0a10-4396bf9bb8c0.png)

名前の入力、Cloud Platformの選択、リージョンの選択をしたのち、[Create deployment]をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/6afc87a8-0c24-1a05-c06c-4ee708ebafb0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/01f64097-76cc-303c-7336-6456835ed265.png)

UsernameとPasswordが表示されますのでメモしてください。
次に[your deployments]をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/2de097e6-ea1f-3dfc-4177-76b41186f0fa.png)

Cloud IDの内容をメモしてください。
Winlogbeatの設定時に必要になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/6df0538e-e150-21a7-ff94-5d3c11854149.png)

1つ前の画面に戻り画面右の[Launch Kibana]をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/2de097e6-ea1f-3dfc-4177-76b41186f0fa.png)

ログインページが表示されたら先ほどメモしたUsernameとPasswordを入力し[Log in]をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/b3e8d894-39eb-993a-6041-993dd4754db8.png)

[Explore on my own]をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/e72796d1-4488-07d0-7294-5c7a9dcad5c4.png)

これでElastic Cloudの準備が完了です。

## 2. Winlogbeatの準備
### ダウンロード
以下からダウンロードします。
https://www.elastic.co/jp/downloads/beats/winlogbeat

### 展開
C:\Program Files に展開し、ディレクトリ名を`winlogbeat-<version>`から`Winlogbeat`に変更します。

### インストール
管理者権限でPowershellを起動し、以下のコマンドを実行します。

```powershell
cd 'C:\Program Files\Winlogbeat'
.\install-service-winlogbeat.ps1
```

以下の結果が出力されればOKです。

```powershell
Status   Name               DisplayName
------   ----               -----------
Stopped  winlogbeat         winlogbeat
```

## 3. Winlogbeatの設定
`C:\Program Files\Winlogbeat\winlogbeat.yml`を開き設定をします。

### 取得するログを選ぶ
以下で取得するログ種別を選びます。
私の場合、セキュリティイベントログだけを取得したいので`name: Security`の項目以外をコメントアウトしました。

```yml
winlogbeat.event_logs:
  # - name: Application
  #   ignore_older: 72h

  # - name: System

  - name: Security
    processors:
      - script:
          lang: javascript
          id: security
          file: ${path.home}/module/security/config/winlogbeat-security.js

  # - name: Microsoft-Windows-Sysmon/Operational
  #   processors:
  #     - script:
  #         lang: javascript
  #         id: sysmon
  #         file: ${path.home}/module/sysmon/config/winlogbeat-sysmon.js
```

### アウトプットの指定
今回はWinlogbeatからElastic Cloudに出力するので、まずElasticsearch outputをコメントアウトします。

```yml
#-------------------------- Elasticsearch output ------------------------------
# output.elasticsearch:
  # Array of hosts to connect to.
  # hosts: ["localhost:9200"]
```

次にElastic Cloudを指定します。
`cloud.id`にはCloud IDを、`cloud.auth`にはユーザ名とパスワードを`ユーザ名:パスワード`の形式で記入してください。


```yml
#============================= Elastic Cloud ==================================

# These settings simplify using Winlogbeat with the Elastic Cloud (https://cloud.elastic.co/).

# The cloud.id setting overwrites the `output.elasticsearch.hosts` and
# `setup.kibana.host` options.
# You can find the `cloud.id` in the Elastic Cloud web UI.
cloud.id: "test:********"

# The cloud.auth setting overwrites the `output.elasticsearch.username` and
# `output.elasticsearch.password` settings. The format is `<user>:<pass>`.
cloud.auth: "elastic:********"
```

### winlogbeat.ymlのテスト
以下のコマンドを実行してください。
実行結果の最後に`Config OK`と表示されていれば問題ありません。

```powershell
.\winlogbeat.exe test config -c .\winlogbeat.yml -e
```

## 4. Winlogbeatの起動
管理者権限でPowershellを起動し、以下のコマンドを実行してください。

```powershell
Start-Service winlogbeat
```

ちなみに停止は以下のコマンドでできます。

```powershell
Stop-Service winlogbeat
```

## 5. ログ可視化
### インデックスパターン作成
Kibanaでログ検索・可視化をするためにはインデックスパターンというものを作成する必要があります。

Kibanaの画面で[Discover]のアイコンをクリックしてください。
（もしくはManagement（左下の歯車のアイコン） -> Index Patterns -> Create index pattern をクリックしてください）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/ea861f03-bed5-4126-dae9-fda21e890166.png)

以下は現在存在するインデックスの一覧です。（システム的なインデックスは除く）
Winlogbeatのログは`winlogbeat-7.6.2-2020.04.02-000001`というような形式でElasticsearchに取り込まれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/8c938632-33e4-bb9c-7643-7fb500918df4.png)

`winlogbeat-*`と入力して[Next step]をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/1b2a92ea-ff36-f0cf-11b3-dc5b7574f50e.png)

時系列で使用するフィールドを選択します。
`@timestamp`を選択して[Create index pattern]をクリックしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/c650bdaf-456f-c9f3-2ec3-cf78c72064a1.png)

これでインデックスパターンが作成されました。

## 6. Kibanaでログ確認
Kibanaの画面で[Discover]のアイコンをクリックしてください。
以下のようにWindowsのイベントログが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402872/360d69d6-ae9e-930c-11c5-a3c54ccba504.png)

# 関連
WindowsのログをWinlogbeatとLogstash経由でBigQueryに取り込む
https://qiita.com/hanzawak/items/bb18a7b88c92bd488f33

Kibanaでログ検索・可視化をするために最低限必要な知識と技
https://qiita.com/hanzawak/items/c9a31f61cbec641d7140