はじめに
こんにちは、MSPチームの村上です。
今回は、GuardDutyで検知したイベントをNew Relicで検知するように設定してみたのでその内容をまとめてみました。
設定概要
今回の設定の概要は以下のような形です。
GuarDutyのイベントをEventBridgeで取得し、Kinesis Firehose ストリームに送り、そこからNew Relic Logsへと転送します。
※今回は1リージョンのみでの設定内容となります。
AWS側設定手順
① Amazon Data Firehoseでストリームを作成
以下のように項目を設定します。
- ソース・・・Direct Put
- 送信先・・・New Relic
- ストリーム名・・・任意
- HTTP エンドポイント URL・・・New Relic ログ 米国(米国か欧州かはお使いのNew Relicに準じます)
- APIキー・・・New Relicにて取得したAPIキー
②EventBridge Rule作成
次にEventBridgeのルールを作成します。
- ルール名・・・任意
- イベントバス・・・default
- ルールタイプ・・・イベントパターンを持つルール
- イベントソース・・・AWSイベント
- AWSのサービス・・・GuardDuty
- イベントタイプ・・・GuardDuty Finding
※EventBridgeの段階で送信するログを限定する場合はイベントソースを「その他」にし、以下のJSONをイベントパターンに入力します。
{ "source": ["aws.guardduty"], "detail-type": ["GuardDuty Finding"], "detail": { "severity": [7, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9, 8, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9] } }
- ターゲットタイプ・・・AWS のサービス
- AWS のサービス・・・Firehoseストリーム(対象ストリームに①で作ったストリームを指定)
New Relic側設定手順
New Relic側の設定は特になく、ログが正常に転送されているか確認します。
まずは、GuardDutyからテスト発砲させます。
GuardDutyの発砲テスト方法
cloudshellを起動し以下のコマンドを実行します。
aws guardduty create-sample-findings \
–detector-id $(aws guardduty list-detectors –query ‘DetectorIds[0]’ –output text) \
–finding-types “出したい検出結果”
「出したい検出結果」には以下のドキュメントの結果タイプを参考にし入力します。
- GuardDuty 検出結果タイプ
https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/guardduty_finding-types-active.html
例
aws guardduty create-sample-findings \
–detector-id $(aws guardduty list-detectors –query ‘DetectorIds[0]’ –output text) \
–finding-types “UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS”
挙動確認
上記画像のようにログが確認できれば設定完了です。
監視設定
New Relicへ正常にログが転送できることを確認したらNew Relicで任意のアラートを設定することができます。
NRQL例
SELECT count(*) FROM Log FACET detail.accountId, detail.region, detail.type WHERE detail.severity >= 7.0 AND detail.service.serviceName =’guardduty’
上記NRQLは重要度「高」以上の検出結果を絞ったものになります。
こちらの記事がどなたかの助けになれば幸いです。