じゅのぶろ

社内SEが自宅でSOC/CSIRTするために色々頑張っていきたいブログ 画像が見れない場合はjavascriptを有効にするかデスクトップからご覧下さい。

Splunk CSV Lookup Tableを使ったログのフィルタリング(ルックアップ活用編)

SplunkでCSV Lookup Tableを使いログのフィルタリング(ブラックリスト/ホワイトリスト)をするためのルックアップの使い方をご紹介します。
前回の続きです。

lookupコマンド

以下はlookupコマンドの使用例です。

...| lookup <ルックアップテーブル名> <ルックアップフィールド名1> AS <イベントフィールド名1>, <ルックアップフィールド名2> AS <イベントフィールド名2> [OUTPUT|OUTPUTNEW] <ルックアップフィールド名3> AS <イベントフィールド名3>, <ルックアップフィールド名4> AS <イベントフィールド名4>

第一引数はルックアップテーブル名です。
OUTPUT/OUTPUTNEWの前に検索したいフィールド名、 OUTPUT/OUTPUTNEWの後にルックアップテーブルから参照したいカラム名を指定します。

lookup - Search Reference

具体的にはこのように使います。
lookupコマンドでlistを参照し、ルックアップのdomainカラムとイベントのdomainフィールドがマッチするか検索します。
マッチした場合、OUTPUTの後ろに記載した「listcategory details」カラムがフィールドとして出力されます。

index=squid 
|  lookup list domain OUTPUT listcategory details
| search listcategory=*
| stats values(domain) values(details) by listcategory

f:id:jnox:20190728004725p:plain
ルックアップテーブル内のカラム名とイベントフィールド名が同一であればASを使用する必要はありません。

OUTPUT/OUTPUTNEWの違い

OUTPUTは後ろに指定したフィールドが存在していた場合に値を上書きします。
OUTPUTNEWは後ろに指定したフィールドが存在していた場合に値を上書きしません。
f:id:jnox:20190728010934p:plain

使用例

ルックアップテーブルとのデータマッチングができれば、
後はsearchコマンドでフィルタをするだけです。

ブラックリスト

この送信元がブラックリストドメインにアクセスしてるのか。
といった使い方。
f:id:jnox:20190728012949p:plain

ホワイトリスト

全てのログを見るのは量が多くて大変なので、このドメインは除外する。
といった使い方。
f:id:jnox:20190728013013p:plain