Edited at

Amazon GuardDutyのイベントをSplunkで検索・可視化

More than 1 year has passed since last update.

re:Invent 2017で発表されたGuardDutyですが、Splunkでそのデータを取り込んで分析できるとのことなので、さっそく試してみました。

記事(英語)

Splunk Announces New Integrations With Amazon Kinesis Firehose and Amazon GuardDuty


Amazon GuardDutyって?

Amazon GuardDuty – 継続したセキュリティ監視と脅威の検知

(抜粋)


GuardDutyは 脅威情報を含む複数のデータストリームから、悪意のあるIPアドレス、デバイスドメインを認識し、あなたのAWSアカウントで悪意のある、もしくは不正な行動があるか特定するために学習します。VPC Flow Logs、CloudTrail のイベントログ、DNS ログを集め組み合わせることにより、GuardDuty は非常に多くのことなったタイプの危険性のある、悪意のある行動を検知します。


なるほど、AWSリソースの脅威を機械学習で発見するんですね。


Splunkって?

https://www.splunk.com/

ログ分析のソフトウェア。

あらゆるマシンデータをインデックスして検索や可視化、アラート通知や分析ができるっていう優れモノ。


設定してみた

5つのステップで設定できます。

1. SplunkにAppインストール

2. Splunk HTTP Event Collector有効化

3. Amazon GuardDuty有効化

4. AWS Lambdaでテンプレから関数作成

5. AWS CloudWatchでGuardDutyとLambdaを設定したルールを作成

ということで、設定方法を書いていきます。


Splunk設定

まずはデータの受け口であるSplunkの設定から

App入れてHTTP Event Collector (HEC)有効化するだけです。


Appインストール

このApp↓をSplunkインスタンスにインストールしましょう。

AWS GuardDuty Add-on for Splunk


(補足)Appインストール方法

Splunkにログインした後、左側のメニューにある歯車アイコンをクリック

Screen Shot 2017-12-14 1.31.38 PM.png

上記リンク先からAppをダウンロードして ファイルからAppをインストール からインスコ、もしくは、 他のAppを参照 からGuardDutyを検索してインスコ

Screen Shot 2017-12-14 1.35.35 PM.png


データ入力設定

Appインストール完了後、ログイン後のトップ画面に aws_guardduty というAppが追加されています。

Screen Shot 2017-12-14 1.38.53 PM.png

早速 aws_guardduty に移動

Screen Shot 2017-12-14 1.41.51 PM.png

まだ何もデータが入ってきていない状態なので、データ受け取りとしてHTTP Event Collectorを設定します。

右上の 設定 から データ入力 をクリック

Screen Shot 2017-12-14 1.42.50 PM.png

HTTPイベントコレクタ をクリック

Screen Shot 2017-12-14 1.44.07 PM.png

別の記事でHECの設定方法は書いたので、これ以降の手順は割愛します。こちらを参照ください。

https://qiita.com/kikeyama/items/515d65906537239e04d2#splunk%E3%81%AE%E8%A8%AD%E5%AE%9A

(注意)ソースタイプは aws:cloudwatch:guardduty を選択してください。

設定後のトークンはどこかにコピペしておいてください。


GuardDuty設定

AWSコンソールからAmazon GuardDutyに行って有効化。

今すぐ始める をクリック

Screen Shot 2017-12-14 1.15.38 PM.png

GuardDutyの有効化 をクリック

Screen Shot 2017-12-14 1.16.47 PM.png

GuardDuty設定は完了

Screen Shot 2017-12-14 1.20.55 PM.png

今はまだ空っぽですけど、とりあえずGuardDutyの設定はこれでおしまいです。


Lambda設定

まずは 関数の作成

これでSplunkにHTTPでイベントをPOSTするインターフェースを作ります。

Screen Shot 2017-12-14 1.49.39 PM.png

設計図 (Blueprints) を選択して、検索画面に splunk と入力して検索

Screen Shot 2017-12-14 1.51.43 PM.png

Splunk Logging を選択

Screen Shot 2017-12-14 1.53.08 PM.png

下にスクロールすると環境変数の設定があるので、こちらにSplunkのHECエンドポイントURLとトークンを設定

Screen Shot 2017-12-14 1.58.09 PM_mosaic.png

で、名前をつけて保存

その後、作成した関数を編集して sourcetype の値を aws:cloudwatch:guardduty に上書き


index.js

    // Advanced:

// Log event with user-specified request parameters - useful to set input settings per event vs token-level
// Full list of request parameters available here:
// http://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTinput#services.2Fcollector
logger.logEvent({
time: Date.now(),
host: 'serverless',
source: `lambda:${context.functionName}`,
sourcetype: 'aws:cloudwatch:guardduty',
event: event,
});


CloudWatch設定

ルールを一個作りましょう

Screen Shot 2017-12-14 2.08.15 PM.png

サービス名は GuardDuty 、ターゲットは Lambda関数 から、先ほど作成したLambda関数を選択

Screen Shot 2017-12-14 2.09.28 PM.png

あとは名前をつけて保存

以上、すべての設定は完了!


GuardDutyイベントを検索

ということで、しばらく待つとGuardDutyデータがSplunkにインデックスされてきました。

Screen Shot 2017-12-14 2.16.08 PM_mosaic.png


ダッシュボード

GuardDuty Appには既成のダッシュボードがあるようです。

GuardDuty Examples からダッシュボードに移動してみましょう

Screen Shot 2017-12-14 2.19.22 PM.png

Screen Shot 2017-12-14 12.42.27 PM.png

早速脅威が検知されてしまったみたいですね・・・。

比較的シンプルなダッシュボードですが、可視化やモニタリングには十分かな、と。

運用してみて足りない部分は自前でダッシュボード作ってみよう。


最後に

どうやらダッシュボード内のテーブルをクリックすると、Splunk App for AWSにドリルダウンできるようです。

Kinesis FirehoseからSplunkにデータを流せるとのことですし、せっかくなので近日中にこのAppも設定してみて記事を書いてみようかなと思います。