- 限定コンテンツへのアクセス
- 他ユーザーとのつながり
- あなたの体験を共有
- サポート情報の発見
この記事ではParsing Rulesを使用してログを指定のDatasetへ振り分ける方法について説明します。
応用的な内容になるので、あらかじめSyslog collectorやParsing Rulesを理解しておくことをお勧めします。
Broker VMがセキュリティデバイスから異なるフォーマットのデータを受信しCortex XDRに転送する場合、
Parsing Rulesを使ってデータ内容を解析し、条件に応じて格納先のデータセットを選択することが可能です。
例えば、以下のようにあるセキュリティデバイスがBroker VM(Syslog Collector)にデータを送信する場合、
Parsing Rulesを使ってDataset A, B, C, Dといった具合に振り分けること可能です。
|----> dataset A
|
| Security Device | ---> syslog ---> | Broker VM | -----> | Cortex XDR | ---+----> dataset B
|
|----> dataset C
|
|----> dataset D
ここでは、以下4つのタイプのログが1つのデバイス(IPアドレスが192.168.68.15)から送信されてくるものと仮定し、
これらのログを個別のデータセット(青字の名前で)に送信したいと思います。
ログは説明のために単純化しており、現実に存在する形式のデータではありませんのであらかじめご了承ください。
データセット名:ipscompany_ips_100_raw
CEF:0|ipscompany|ips-100|1.1|4000000|traffic|9|date=2023-11-24 time=08:20:32 srcip=192.168.68.160 srcport=12345 dstip=8.8.8.8 dstport=443 hostname=server01 action=allowa bipsytes=200
データセット名:ifwcompany_fw_01_raw
CEF:0|fwcompany|fw-01|2.0|1200000|traffic|1|date=2023-11-24 time=08:20:32 srcip=192.168.100.10 srcport=12345 dstip=8.8.8.8 dstport=443 hostname=server01 action=allow bytes=100
データセット名:igwcompany_webproxy_raw
proxysvr 2023-11-24 18:00:10 44 172.16.10.1 200 TCP_ALLOW 1000 392 GET http aaa.example.com 80 /do/search ?hl=de-DE&q=t&client=chrome "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko" ALLOW 192.168.165.100
データセット名:logsvr_logsvr_raw
logsvr This is sample message.
上2つログはCEFフォーマット、下の2つのログは形式が指定されていない文字列になっています。
結果として以下の構成になることを想定しています。
|----> ipscompany_ips_100_raw
↓192.168.68.15 |
| Security Device | ---> syslog ---> | Broker VM | -----> | Cortex XDR | ---+----> fwcompany_fw_01_raw
|
|----> igwcompany_webproxy_raw
|
|----> logsvr_logsvr_raw
192.168.68.15から送信されるログに対する対応として、フォーマットは自動検出、VENDORをCOMPANY01、PRDUCTをCOLLECTORとしています。
Cortex XDRはCEFフォーマットのログを自動的にパースし、パースされたログをDevice Product、Device Vendorに書かれた名前を使用したデータセットに保存します。
ここでは特にParsing Rulesによる解析は行いません。
その結果、
・1行目のサンプルログの場合、ipscompany_ips_100_rawというデータセットに保存されます。
・2行目のサンプルログの場合、fwcompany_fw_01_rawというデータセットに保存されます。
一方で、下2つログはCEFフォーマットではありません。データの内容をParsing Rulesで解析し、
条件に一致したデータを指定のDatasetに保存するようにします。
3行目のサンプルログの場合、_raw_logを分割(split)した時に、5番目の要素(*1)をserver_nameというフィールドとし、
server_nameにproxysvrを持つログを指定のデータセットに保存するようにしています。
またログに"WEBPROXY"というタグも追加しています。
ヒットしないログは指定したデータセットに保存しません。
[INGEST:vendor = "COMPANY01" , product = "COLLECTOR" , target_dataset = igwcompany_webproxy_raw, no_hit = drop]
alter server_name = trim(arrayindex(split(_raw_log),4)) |
filter server_name="proxysvr" |
tag add "WEBPROXY";
4行目のサンプルログの場合、_raw_logを分割(split)した時に、5番目の要素(*1)をserver_nameというフィールドとし、
server_nameにlogsvrを持つログを指定のデータセットに保存するようにしています。
またログに"SYSLOGSVR"というタグも追加しています。
ヒットしないログは指定したデータセットに保存しません。
[INGEST:vendor = "COMPANY01" , product = "COLLECTOR" , target_dataset = logsvr_logsvr_raw, no_hit = drop]
alter server_name = trim(arrayindex(split(_raw_log),4)) |
filter server_name="logsvr" |
tag add "SYSLOGSVR";
*1.実際にsyslogでデータを転送した時にタイムスタンプなどのフィールドがメッセージの前部に付与されていたため、
5番目のフィールド(indexは4)としています。
例)<12> JUN 6 15:53:00 ubuntu logsvr This is sample message.
実際の画面
ログが取り込まれると以下のようにDatasetに作成されます。
ipscompany_ips_100_raw
CEFフォーマットのデータが自動でパースされています。
fwcompany_fw_01_raw
CEFフォーマットのデータが自動でパースされています。
igwcompany_webproxy_raw
タグ(_tag)が付与され、Broker VMで指定したVENDOR、PRODUCTが指定されています。
server_nameというフィールドが追加されています。
logsvr_logsvr_raw
タグ(_tag)が付与され、Broker VMで指定したVENDOR、PRODUCTが指定されています。
server_nameというフィールドが追加されています。
Broker VMで指定したVENDOR/PRODUCTを使って作成されたDataset(ここではcompany01_collector_raw)に保存されます。
Parsing RulesのINGESTセクションに関する詳細はこちら