【AWS初心者向け】GuardDutyで脅威検知をSNS通知する方法(テスト付き)

AWS環境での脅威検知サービス「Amazon GuardDuty」を使うと、アカウント内の不審な挙動を自動で検出できます。
今回は、GuardDutyの有効化から、EventBridgeとSNSを使って通知を受け取る設定手順をわかりやすく紹介します。
最後には、通知テストの方法も解説します。
・GuardDutyを使って監視設定を仕込みたい
・GuardDutyの通知をSNSに送りたい
事前準備
本記事では、SNSトピック(通知先)がすでに作成済みであることを前提としています。
まだ作成していない方は、先に「Amazon SNS」でトピックを作成し、メール購読を有効化しておきましょう。
Guard Dutyを有効化する
AWSにログインし、上部検索ペインより「GuardDuty」と入力しGuardDutyのサービスをクリック

下記画面に遷移したら「今すぐ始める」をクリック

下記の画面に遷移したらOKです。

EventBridgeの作成
GuardDutyで検出した脅威を自動でSNSに通知するため、Amazon EventBridgeにルールを作成します。
EventBridgeに移動し左側メニューより「ルール」を選択し
「ルールを作成」をクリックする。

名前を任意で入力し後はデフォルトで「次へ」をクリック

カスタムパターン(JSONエディタ)を選択します。
JSONは下記のように入力(今回の例は危険度がHigh以上のものを検出)
{
"source": ["aws.guardduty"],
"detail-type": ["GuardDuty Finding"],
"detail": {
"severity": [
7,
8,
9,
10
]
}
}
それ以外の設定は下記の通り

ターゲットを選択ではすでに作成済みのSNSトピックを選択します。
それ以外はデフォルト通りです。

タグは任意で入力します。

レビューと作成で確認し、問題ないようであれば「ルールの作成」をクリック
通知テスト(サンプル検知を作成)
GuardDutyで検出した脅威を自動でSNSに通知するため、Amazon EventBridgeにルールを作成します。
まずは低重要度の脅威を発生させ検出するもののメールが送付しないのを確認します。
赤枠内をクリックしCloud Shellをクリック

下記コマンドを実行しGuard DutyのDirector IDを確認
aws guardduty list-detectors

下記コマンドを実行
aws guardduty create-sample-findings --detector-id <あなたのDetector ID> --finding-types UnauthorizedAccess:EC2/SSHBruteForce

SSHBruteForceでは重要度が低いのでメールは飛びません

次は高重要度の脅威を発生させ通知を確認していきます。
下記のコマンドを実行
aws guardduty create-sample-findings --detector-id <あなたのDetector ID> --finding-types 'CryptoCurrency:EC2/BitcoinTool.B!DNS'
数分後発報しました

まとめと次回予告
これで、GuardDutyの脅威検知をSNS経由で通知する仕組みが完成しました。
ただし、現状の通知内容はやや見づらいです。
次回は、メール本文成形などを行なって見やすく通知する方法を紹介します!