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

GuardDutyアイキャッチ

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経由で通知する仕組みが完成しました。
ただし、現状の通知内容はやや見づらいです。

次回は、メール本文成形などを行なって見やすく通知する方法を紹介します!