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つのステップで設定できます。
- SplunkにAppインストール
- Splunk HTTP Event Collector有効化
- Amazon GuardDuty有効化
- AWS Lambdaでテンプレから関数作成
- AWS CloudWatchでGuardDutyとLambdaを設定したルールを作成
ということで、設定方法を書いていきます。
Splunk設定
まずはデータの受け口であるSplunkの設定から
App入れてHTTP Event Collector (HEC)有効化するだけです。
Appインストール
このApp↓をSplunkインスタンスにインストールしましょう。
AWS GuardDuty Add-on for Splunk
(補足)Appインストール方法
Splunkにログインした後、左側のメニューにある歯車アイコンをクリック
上記リンク先からAppをダウンロードして ファイルからAppをインストール からインスコ、もしくは、 他のAppを参照 からGuardDutyを検索してインスコ
データ入力設定
Appインストール完了後、ログイン後のトップ画面に aws_guardduty というAppが追加されています。
まだ何もデータが入ってきていない状態なので、データ受け取りとしてHTTP Event Collectorを設定します。
別の記事でHECの設定方法は書いたので、これ以降の手順は割愛します。こちらを参照ください。
https://qiita.com/kikeyama/items/515d65906537239e04d2#splunk%E3%81%AE%E8%A8%AD%E5%AE%9A
(注意)ソースタイプは aws:cloudwatch:guardduty
を選択してください。
設定後のトークンはどこかにコピペしておいてください。
GuardDuty設定
AWSコンソールからAmazon GuardDutyに行って有効化。
今はまだ空っぽですけど、とりあえずGuardDutyの設定はこれでおしまいです。
Lambda設定
まずは 関数の作成
これでSplunkにHTTPでイベントをPOSTするインターフェースを作ります。
設計図 (Blueprints) を選択して、検索画面に splunk
と入力して検索
下にスクロールすると環境変数の設定があるので、こちらにSplunkのHECエンドポイントURLとトークンを設定
で、名前をつけて保存
その後、作成した関数を編集して sourcetype
の値を aws:cloudwatch:guardduty
に上書き
// 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設定
サービス名は GuardDuty
、ターゲットは Lambda関数
から、先ほど作成したLambda関数を選択
あとは名前をつけて保存
以上、すべての設定は完了!
GuardDutyイベントを検索
ということで、しばらく待つとGuardDutyデータがSplunkにインデックスされてきました。
ダッシュボード
GuardDuty Appには既成のダッシュボードがあるようです。
GuardDuty Examples からダッシュボードに移動してみましょう
早速脅威が検知されてしまったみたいですね・・・。
比較的シンプルなダッシュボードですが、可視化やモニタリングには十分かな、と。
運用してみて足りない部分は自前でダッシュボード作ってみよう。
最後に
どうやらダッシュボード内のテーブルをクリックすると、Splunk App for AWSにドリルダウンできるようです。
Kinesis FirehoseからSplunkにデータを流せるとのことですし、せっかくなので近日中にこのAppも設定してみて記事を書いてみようかなと思います。