QRadar uDSM(標準外のログ)取り込み

# QRadarでのサポートされているログ
QRadarが標準でサポートしているログ種別は、DSM（Device Support Module)が対応します。
Google検索等で[Qradar supported DSM]と検索すると、ログ取り込みする際に開発いらずでパーシングされるログタイプ（製品名、ソフトウェアバージョン、プロトコル、ログフォーマット等）が確認できます。
https://www.ibm.com/docs/ja/dsm?topic=configuration-qradar-supported-dsms　
の一覧に含まれている場合には、QRadar側で何もせずともログ取り込み、ログ正規化、QRadarでのフィールドマッピング、ルールでの利用ができます。
しかし、リストに無いログに関してはuDSM開発が必要となります。
uDSMとは、universal Device Support Moduleの略であり、QRadarが標準でサポートしているログ種別以外を取り込みパーシングするために利用されます。




# サンプルログをQRadarに取り込む
## サンプルログ
QRadarにSSHログインして、以下の4行のログをPhysicalAccess.syslogという名前で保存する。
``` 
15/sep/2020:11:56:11	Location:HDQ	ID:046	Name:Susan Cameron	Entrance:Cafeteria	Access:Granted	Direction:In
15/sep/2020:12:02:31	Location:HDQ	ID:112	Name:Anthony Pease	Entrance:Main Entrance	Access:Granted	Direction:In
15/sep/2020:12:07:45	Location:HDQ	ID:828	Name:Eric Williams	Entrance:Back Door	Access:Denied	Direction:In
15/sep/2020:12:11:13	Location:HDQ	ID:046	Name:Susan Cameron	Entrance:Alley Garage	Access:Granted	Direction:Out 
```

## サンプルログをQRadarに取り込む
/opt/qradar/binディレクトリに存在しているlogrun.plを使ってログをQRadar自身に流す。
 Note: 
 PhysicalAccess.syslogファイルの中身のログを上から下に対して読み込んでログを投げる。
 元の時間を表すタイムスタンプの他にQRadarが現在の時間をヘッダーにつける
 
```/opt/qradar/bin/logrun.pl -f PhysicalAccess.syslog -l -u 10.0.120.12 2


More information about the logrun.pl utility:

logrun.pl [-d <host>] [-p <port>] [-f filename] [-u <IP>] [-l] [-t] [-b] [-n NAME] [-v] <messages per second>

Options:
-d : destination syslog host (default 127.0.0.1)
-p : destination port (default 514)
-f : filename to read (default readme.syslog)
-b : burst the same message for 20% of the delay time
-t : use TCP instead of UDP for sending syslogs
-v : verbose, display lines read in from file
-n : use NAME for object name in syslog header
-l : loop indefinately
-u : use this IP as spoofed sender (default is NOT to send IP header)
```
## ログの確認
QRadarのWebUIで[ログ・アクティビティ]をクリックする。
以下スクリーンショットのように[イベント名：Unknown log event]が発生するので右の赤枠のボタンを押してポーズする。対象のイベントをダブルクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/a2b0b71e-6224-1177-c77a-8b9b910abca0.png)

以下のようにイベントの中身を確認することができる。
[Payload Information]は、送信した生ログ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/39d3db81-2777-5d96-a114-aca7fe89e2cf.png)

# DSM Editorを使ったログソースタイプの作成
WebUIから[管理]->[DSM Editor]とクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/ac683c43-fd1c-266e-35cc-e6360882fc09.png)

[Create New]をクリックする
<img width="400" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/59cb83e7-6610-d877-3d14-6d3415b71156.png">

[Log Source Type Name]に"Physical Access"と入力して[Save]をクリックする。
<img width="400" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/30fd8111-0e7e-f40c-bbae-11c7142116d4.png">

[Cancel]で画面を閉じる。
<img width="400" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/60bbf05d-5ccc-4f96-a6d0-8d76afd435db.png">


[Cancel]ボタンをクリックしてDSM Editorを閉じる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/bce78060-d4c7-aa50-9031-5b0993ea4e5b.png)

# ログソースの追加
WebUIから[管理]->[Log Sources]とクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/15afd54c-3313-e92b-e9c6-a17270424ce6.png)

[Log Sources]をクリックする。
<img width="400" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/53853a90-fb4f-4f6c-7394-b240ceab3236.png">

[+New Log Source]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/da4db07c-9e74-e931-0cbb-f2785005c4a1.png)

[Single Log Source]をクリックする。
<img width="400" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/03019842-dd95-9e08-72e8-fbee1ee29459.png">

[Physical Access]を選び[Step2: Select Protocol Type]をクリックする。
<img width="400" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/b0adb51c-af2f-313d-5d62-cb1dad7baa7c.png">

[Syslog]を選び[Step 3: Configure Log Source Parameters]をクリックする。
<img width="400" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/223e9bc9-28cc-c6c6-bd9c-ac088c90818c.png">

[Name]に"Physical Access Headquarter"と入力、[Description]に"Physical Access Control System"と入力する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/2be0bbc1-e6a7-f058-13ed-e17fa7ce9ef3.png)

一番下までスクロールして、[Coalescing Events]をOffにする。[Step4: Configure Protocol Parameters]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/d7c64c2e-9055-a86d-a3ea-b3589c358598.png)

[Log Source Identifier*]に"10.0.120.12"と入力して、[Finish]ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/73243d4b-c3fa-d20a-8b45-ea6fa608513e.png)

以下のようにログソースが作成されたことを確認する。IDは自動採番される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/c346612b-cf2a-2167-c1e4-2dce5785057e.png)

[管理]に戻ると、黄色で[There are undeployed changes..]というメッセージが出るので、[Deploy Changes]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/a05cd30f-e182-74aa-8e77-309689c2de1f.png)

以下の画面で数分待つ。
<img width="400" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/f3061db6-8c04-b779-e769-5ef63b3521f7.png">

# DSM Editorでのイベントプロパティ設定
QRadar CLIにて再度logrun.plで同じコマンドを実行する。
```
/opt/qradar/bin/logrun.pl -f PhysicalAccess.syslog -l -u 10.0.120.12 2
```
QRadarのWebUIの[ログ・アクティビティ]にて今度は、[Event Name]が"Physical Access Messages",[Log Source]が"Physical Access Headquater"に変わったことを確認する。この状態は、[Low Level Category]が"Stored"なのでログ正規化が行われていないと解釈できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/8c65008d-81ce-1e5e-78d0-568211532481.png)

右のボタンでログの流れを停止させ、該当ログを選択した後に[Action]->[DSM Editor]ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/c1eebadd-1ca5-2f2a-8320-faaa9ff4398c.png)

以下の画面に遷移することを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/f66254b6-4e5c-0368-6969-8468556d4277.png)

右のレンチマークをクリックして、[Parsing Status],[Event ID],[Log Source Time],[Username]だけに☑がはいる状態にしてUpdateボタンをクリックする。
（ここに表示されるのはデフォルトでQRadarが定義しているイベントフィールドで、今回のサンプルログで利用するフィルードだけを表示するようにする）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/094d4266-4eeb-eabf-15e7-6aa0d95d976a.png)

以下の画面のようになることを確認する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/b749dfeb-3e23-8010-d8ea-f4807cd82f70.png)

ログの正規化において最低でもEventIDがマッピングされている必要がある。
左のパネルから[Event ID]を見つけて▼をクリックし、[Override system behavior]に☑を入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/9c1a3183-ac19-aeac-e80f-c3ced39b6d9f.png)

サンプルログの種別として以下の3種類があるためそれらをEventIDとして定義する。
1. Access:Out:Granted
1. Access:In:Granted
1. Access:In:Denied
Expressonは、正規表現で記述する。Format Stringは、正規表現でマッチしたグループ番号を$で定義する。
[Expression]に```\tAccess:(Granted|Denied)\tDirection:(In|Out) ```
[Format String]に```$2:$1```
を入れて[OK]ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/e1b35068-c0c5-6a0d-6558-f9b88aa66a10.png)

[Parsing Status*]が[Parsing Failed]から[Parsed but Not Mapped]に変わったことを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/8dd56db8-bacc-0945-71c8-af4df2587d65.png)

同じ要領で[Username]を次の通り定義するし[OK]ボタンをクリックする。
[Expression]に```Name:(\w+\s\w+)\s```
[Format String]に```$1```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/784b09d6-9bd7-14c1-1b32-63a344fa79c0.png)

以下のように[Username]に文字列が入ることが確認できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/f9b4d6b9-f406-19b6-aa41-5909d022f2c8.png)

同じ要領で[Log Source Time]を次の通り定義するし[OK]ボタンをクリックする。
[Expression]に```\s(\d{2}/\w{3}/\d{4}:\d{2}:\d{2}:\d{2})\tLocation:```
[Format String]に```$1```
[Date Format]に```dd/MMM/yyyy:HH:mm:ss```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/01c6673a-04c2-5d9f-ddb2-24ace532ad71.png)

以下のようになることを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/864fdfb5-b720-5a50-408a-ed487f920d9d.png)

# DSM Editorでのイベントマッピング
ここまでの手順で、ログのフィールドをQRadarが持っているイベントカラムにマッピングすることができた、しかしまだEventIDがQradar上のQIDとマッピングができていないためマッピングを行う。
QIDには、[High Level Category],[Log Level Category],[Severity],[Event Name],[Description]の定義が含まれる

[Event Mappings]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/2dcad8c7-73b8-0e32-a010-40ed842d6728.png)

[＋]ボタンをクリックすると小さいウィンドウが立ち上がる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/098186af-66d9-00d9-94b9-af979b2bdea0.png)

[Choose QID...]をクリックする。
<img width="400" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/ec343206-08a0-78d2-d4b3-b3da242abd23.png">

QID Recordsで[Search]ボタンをクリックするとQRadarが持っているQID全部を表示できる。対象のログソースが既存のfirewallやwindowsと同じような意味合いのものであれば[Search]して出てきた近しい意味合いのものを選択することができる。今回は、既存のものと違うため新にQIDを作成する。

[Create New QID Record]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/06502581-ba2b-77aa-65fa-79cdb79c7793.png)

Name：```Physical Exit Permitted```
Log Source Type: ```Physical Access```
High Level Category: ```Access```
Low Level Category: ```Access Permitted```
Severity:```2```
[Save]ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/af0dba16-5b10-4f11-46ce-ad6fedfa5773.png)

QIDが自動で採番される。[OK]をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/49a2480c-6f48-2809-e44c-2fff812d2fd8.png)


[Create]ボタンをクリックする。
<img width="400" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/a26eaf59-4549-e95a-981c-61d3d199ad95.png">

[Parsing Status*]が[Parsed and Mapped]に変わることを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/18c39376-57b4-3c84-1b48-e178a0dabb91.png)

その他2つのEvent IDは以下の表のとおり同様の手順でイベントMappingする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/5da50b27-3234-9cc5-4db4-349956030d78.png)

全ての[Parsing Status*]が[Parsed and Mapped]に変わることを確認する。
[Save]ボタンをクリック。[Close]ボタンでDSM Editorを閉じる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/0af7d0bb-4561-b6c8-0484-85cf8cc024ed.png)

# uDSM作成後のログ確認
Unknownだった項目に値が入ることを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/7976acb6-82c5-21af-3073-6a0c493f23e7.png)

これまで定義してきた項目(Event Name,Severity,Username,Log Source Time)が正しく表示されることを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/5fb77a90-579e-75c9-e407-1414e1a2f252.png)



これまで定義してきた項目(QID,EventID)が正しく表示されることを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307206/affb0f07-2315-5ea8-cf27-efe878d34be2.png)