はじめてのSplunk ― 概要から応用までを体系的に学ぶ

3-4 SPLの実行とダッシュボードの作成

ログが取り込めたので、実際にサーチを実行してみましょう。 ここでは、WindowsとLinuxのサーバーそれぞれに対して、セキュリティを題材としてログインの成否を分析するためのSPLをいくつか紹介し、分析してみます。

実際にサーバーに対して、故意にログインを試行してログイン失敗ログなどを残して、その結果が表示されることを確認してもよいかもしれません。

1. SPL実行の基礎

データ取り込みを確認する際、すでにいくつかのSPLを実行してしまいましたが、改めてSPLの基礎を学びます。 最も基本的なSPLは、全てのインデックスを対象にサーチを行うSPLです。

Splunkにログインし、Search & Reporting Appを選択してください。 そして以下をSPLのサーチバーに入力し、サーチを実行(虫眼鏡アイコンをクリック)してみてください。

(虫眼鏡アイコンの左に、時間範囲を指定できるプルダウンが存在していることに気づくかもしれません。デフォルトの24時間をそのまま使用するか、必要に応じて全期間を選択してサーチを実行してください)

SPL: 全てのインデックスを対象としたサーチ
index=*

最近のログから時系列順にログが表示されることがわかると思います。 画面に表示されている内容の詳細については、公式ドキュメントなども参考にしてください。

実務上は、index、host、source、sourcetype、ログに含まれる文字列などを組み合わせてサーチを行うことが一般的です。 例えば以下です。

SPL: Linux認証ログを調査するサーチ
index=test-nix host=uf-ubuntu source=/var/log/auth.log "failed"

効率的なサーチを実行するためには、index、host、source、sourcetypeの4つのフィールドをできる限り指定することと、可能であれば時間範囲をできる限り限定することがポイントとなります。覚えておきましょう。

2. Windowsログインイベントを分析するSPL

では、具体的にWindowsログインイベントを分析するSPLをいくつか紹介します。

Splunkに取り込んだWindowsイベントログは以下でサーチできます。

SPL: Windowsイベントログのサーチ
index=test-win sourcetype=XmlWinEventLog

上記を実行することで、時系列順にログを表示することはできます。 ただ形式がxmlであるため、人間が分析するには不向きです。 この場合、tableというコマンドを使うことで、特定のフィールドのみを抜き出して表形式で表示させることができます。 いくつかのフィールドを抜き出して表示させてみましょう。

SPL: Windowsイベントログの表形式表示
index=test-win sourcetype=XmlWinEventLog
| table SystemTime Channel Computer EventCode Name ProcessID

これを使って、ログイン成否を一覧化してみます。 Windowsイベントログでは、Logon_Type=10がリモートデスクトップ接続試行のログと定義されています。 また一般的に、EventCode=4624がログオン成功、EventCode=4625がログオン失敗です。 これらを利用すると、Remote Desktop接続に成功/失敗したログの一覧を以下で表示させることができるようになります。

SPL: リモートデスクトップ接続のログイン成功/失敗ログ
index=test-win sourcetype=XmlWinEventLog Logon_Type=10
| table SystemTime Logon_Type EventCode action subject user Computer src_ip

tableコマンドの他に、統計処理を行うためのコマンドであるstatsも使用してみます。 これを使うことで、サーチしたログをフィールド毎に集計したりすることができます。 ここでは、ユーザー毎のログイン成功/失敗数を集計してみます。

SPL: リモートデスクトップ接続のログイン成功/失敗数を集計
index=test-win sourcetype=XmlWinEventLog Logon_Type=10
| stats count BY user

表形式だけでなく、グラフ表示に変えることでより見やすくなります。 サーチ結果下に表示されている「視覚エフェクト」タブを選択すると、視覚効果を変えることが可能です。 「視覚エフェクト」タブの下にある「グラフ:」を選択するとグラフの種類も変えることができます。 上記のサーチは、特定の期間を指定してユーザー毎の割合を集計しているため、円グラフを指定して表示を変えてみるのがお勧めです。

また、timechartコマンドを使用することで、リモートデスクトップ接続状況を時系列で表示することも可能です。 今度は、ソースIPアドレス毎のログイン成功/失敗状況を、1時間間隔で表示してみます。

SPL: リモートデスクトップ接続のログイン状況を1時間間隔で時系列表示
index=test-win sourcetype=XmlWinEventLog Logon_Type=10
| timechart count span=1h BY src_ip

上記のサーチは、タイムチャートであるため縦棒グラフまたは折れ線グラフがお勧めです。 サーチを実行後、「視覚エフェクト」タブを選択することで視覚効果を変えてみましょう。

次に、Linuxログの分析も試してみます。

3. Linuxログインイベントを分析するSPL

Linuxログも同様にサーチできます。 Windowsイベントログとは異なり、Linuxログはプレーンテキストであり、様々なファイルパスの様々な形式のログが含まれています。 以下を実行し、Windowsとは違って、Linuxではsourceやsourcetypeなど、様々なログが存在していることを確かめてみてください。

SPL: Linuxログのサーチ
index=test-nix

この中で、SSHログインの成功/失敗は/var/log/auth.logに含まれています。 以下のSPLを実行することで、SSHログインの失敗ログの分析が可能です。

SPL: SSHログイン失敗の推移
index=test-nix ("Connection reset by invalid user" OR "Connection reset by authenticating user" OR "Too many authentication failures")
| timechart count

4. ダッシュボードの作成手順

ダッシュボードの作成手順は以下です。

  1. パネルにしたいサーチを実行し、必要に応じて視覚効果を選択する。
  2. 結果画面右上にある「名前を付けて保存(Save As)」を選択した後、「新しいダッシュボード(New Dashboard)」を選択する。
  3. 「パネルを新しいダッシュボードに保存」画面が表示されるので、以下項目を入力する。
項目 値 説明
ダッシュボードのタイトル(Dashboard Title) test-dashboard ダッシュボードの名前を入力
ダッシュボードタイプ(Dashboard Type) クラシックダッシュボード クラシックダッシュボードとダッシュボードスタジオの二種類が可能。今回はクラシックを選択
  1. 「ダッシュボードに保存」を選択する。
  2. 既存ダッシュボードにパネルを追加したい場合は、サーチを実行し「名前を付けて保存(Save As)」を選択した後、「既存のダッシュボード」を選択して作成済みのダッシュボードを選択して保存する。

WindowsとLinuxのログインイベントそれぞれを集計するパネルを作成し、同一ダッシュボード上に表示させることで、異なるOSのログイン状況を把握できるようになります。