先日、Splunk FreeをMacOSにインストールした後、Splunk 社が提供しているBOTS(Boss of the SOC)用のデータとQ&Aをダウンロードして、SPL(Search Processing Language) 言語の勉強中です。
SPL 言語が書けるようになれば、Splunk に取り込んだログデータを簡単に検索、分析できるようになり、また日本においても多くの企業でSpunkを導入している為、勉強しておいて損はないかと思います。
なお、以下サイトにSPL言語の入門書/説明書が置かれていますので、参考になるかと思います。
https://www.splunk.com/ja_jp/goto/book
ちなみに今年の3月にその最新版であるv3がリリースされたようですね。
https://www.splunk.com/en_us/blog/security/botsv3-dataset-released.html
また、私がAWS環境にSplunkをインストールした時の記事を以下に載せていますので興味があれば見てみてください。
BOTSv1をトライしたときに利用したSPL言語
まだSPL言語初心者ではありますが、BOTv1を通じて勉強したことを記載しておきたいと思います。
0.Splunk内のインデックスを確認
さっそくSPL言語を利用してみたいところですが、SPL言語を使う際に、indexを指定することが多々あります。
そこで、どんなインデックスがSplunkの中にあるのか確認する方法を記載しておきます。
いろいろ方法はありそうですが、まずはOSのコマンドで確認する方法を記載しておきます。
Splunk がインストールされているディレクトリ(Macの場合、通常、/Applications/Splunk ディレクトリにインストールされています)の配下のbinディレクトリに移動し、splunk list index とコマンドを入力します。
% /Applications/Splunk/bin
% ./splunk list index
すると、以下のようにインデックスの一覧が表示されます。
1.インデックスに取り込まれているデータの一覧表示
以下のように最初にパイプを書いた後、metadataコマンドを以下のようにつかうことで、botsv1インデックスに含まれるhostsの一覧と概要が表示されます。
| metadata type=hosts index=botsv1
また、hostsの代わりに sourcesや sourcetypes を指定することもできます。
| metadata type=sources index=botsv1
2.時間を整型する
上の例だと、各時間(*Time)がなにやら数字の羅列になっているので、これをわかりやすい表記にすることが可能です。
| metadata type=sourcetypes index=botsv1
| foreach *Time [eval <>=strftime(<>,”%d/%b/%y %H:%m:%S”)]
とりあえずSPL言語の出だしだけ書いてみましたが、また気が向いたら、続きを書いてみたいと思います。