LoginSignup
1
3

More than 5 years have passed since last update.

GuardDuty のログを Splunk で取り込む

Posted at

はじめに

Splunk を使って、GuardDuty のデータを収集するとの事。
出来るかどうか知らないので、調べて作ってみたのが今回のお話。

GuardDuty?

AWS のマネージド型脅威検出サービス。
悪意のある操作や不正な動作を継続的に監視し、AWS アカウントとワークロードを保護する。

Splunk?

スプランクと読む。
あらゆる種類のログ、テキスト、数値データをリアルタイムでインデックス化し、検索を出来るようにするソフトウェア。
GuardDuty のログを取り込む事が出来るとの事。

作ってみた

Splunk のインストール

適当に Linux サーバを立てます。今回は、AmazonLinux2 を使いました。
Splunk は Enterprise 版が60日間試用出来るとの事なので、DL してみた。
https://www.splunk.com/ja_jp/download.html

RedHat 系 OS なので、rpm をダウンロードし、インストールした。

# wget のコマンドをコピペできるようになっていたので、そのまま使った
wget -O splunk-7.1.2-a0c72a66db66-linux-2.6-x86_64.rpm 'https://www.splunk.com/~~~~~~'
rpm -ivh splunk-7.1.2-a0c72a66db66-linux-2.6-x86_64.rpm 

ダウンロード完了後は、/opt 配下にインストールされるので、下記コマンドで Splunk を起動する。

# systemd の登録はめんどくさいからやらなかった
cd /opt/splunk/bin/
./splunk start

初回起動時は利用規約?の表示と管理者ユーザのパスワード設定がある。
起動後は、http://IPアドレス:8000 でコンソールにログイン出来る。
screen_capture_08-21(11).png

ログイン後、/en-US/app/launcher/home ってなっている URL を /ja-JP/app/launcher/home に変えると、日本語化される。
日本語表示をデフォルトにする方法は調べていない。

プラグインの追加

GuardDuty はそのままでは取り込めないようで、プラグイン?を追加する必要がある
画面左側の Find More Apps をクリックし、guardduty で検索する。
すると、Amazon GuardDuty Add-on for Splunk が検索結果に表示されるので、インストールをする。
screen_capture_08-21(4).png

インストールする際、Splunk をダウンロード時に作成したユーザID/パスワードを入力する必要あり。

エンドポイントの作成

GuardDuty のログを受け付けるエンドポイント(のトークン)を作成する。
画面上部のメニューに表示されている設定から、データ入力を選択する。

HTTP イベントコレクタを選択する。
グローバル設定から、全トークンを有効に設定する。
screen_capture_08-21(7).png

次に、新規トークンを作成する。
適当な名前を入力し、次の設定に進む。
screen_capture_08-21.png

ソースタイプを選択に設定し、aws:cloudwatch:guardduty に設定する。
App コンテキストは、aws_guardduty(TA-aws_guardduty) に設定する。
インデックスは分からないから全部選択。デフォルトインデックスもよく分からないから、main を選択した。
screen_capture_08-21(6).png

で、作成されたトークンは次のステップで使うから忘れないように。

GuardDuty の有効化

前回、CloudFormation で有効化したから割愛。

Lambda の用意

GuardDuty は CloudWatch Events でしか拾えない。拾ったものを Splunk に投げつけるには何かしらの仕組みが必要。
Lambda にそんな設計図(splunk-logging)があらかじめ用意されているので、それを使う。
screen_capture_08-21(10).png

Lambda の環境変数に下記を設定する。
screen_capture_08-21(1).png

関数をデプロイ後、一部ソースを修正する。

logger.logEvent({
        time: Date.now(),
        host: 'serverless',
        source: `lambda:${context.functionName}`,
        //sourcetype: 'httpevent', ←これを↓に
        sourcetype: 'aws:cloudwatch:guardduty',
        event: event,
    });

CloudWatch Events の設定

ルールを作成し、GuardDuty に関するイベントを、さっき作った Lambda に紐づける。
screen_capture_08-21(0).png

完成

あとはデータが流れてくるのを待てばいいだけ。
最初から用意されているダッシュボードを眺めてよう。
あとは、これを使うなら、GuardDuty のマスターアカウントとメンバーの設定をやらないと。。
screen_capture_08-21(3).png

最後にいつものやつ

弊社ではエンジニアを募集中です。インフラからアプリ、ユーザサポートまで幅広く業務を行ってます。
https://www.nittsu-infosys.com/recruit/2019/index.html

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3