脅威インテリジェンスによる自動検出と EventBridge + SNS によるリアルタイム通知を実装する
このハンズオンでは、Amazon GuardDuty を有効化して AWS アカウントの脅威検出を体験します。サンプル検出結果を生成して各 Finding タイプの意味を理解し、重大な検出結果を Amazon EventBridge と Amazon SNS で自動通知する仕組みを構築します。
| 項目 | 内容 |
|---|---|
| 所要時間 | 45〜60 分 |
| 難易度 | 入門〜中級 |
| 主要サービス | Amazon GuardDuty、Amazon EventBridge、Amazon SNS |
| 前提リソース | なし(新規アカウントでも実施可能) |
| 課金目安 | 初回有効化から 30 日間は無料トライアル。以降は処理データ量に応じた従量課金 |
GuardDuty は有効化したまま放置すると 月額数千円〜数万円 の請求が発生します(処理するログ量に依存)。ハンズオン完了後は必ず無効化してください。無料トライアル中でも、30 日経過後に課金が開始されます。
GuardDuty は VPC フローログ、DNS クエリログ、CloudTrail ログを機械学習と脅威インテリジェンスで分析し、不審なアクティビティを自動検出する脅威検出サービスです。エージェントのインストール不要で、有効化するだけで監視が開始されます。
GuardDuty を初めて有効化するアカウントでは 30 日間の無料トライアルが適用されます。トライアル期間中は GuardDuty の料金は発生しません。ただし、GuardDuty が収集する VPC フローログ等のログ自体は別途課金される場合があります(通常は微小)。
数秒後に GuardDuty のダッシュボードが表示されれば有効化成功です。画面上部に「Amazon GuardDuty が有効になっています。」と表示されます。
| 保護機能 | 説明 | デフォルト |
|---|---|---|
| S3 保護 | S3 バケットへの不審なアクセスを検出 | 有効 |
| EC2 マルウェア保護 | EC2 インスタンスのマルウェアスキャン | 有効 |
| EKS 保護 | EKS クラスターの不審なアクティビティを検出 | 有効 |
| Lambda 保護 | Lambda 関数の不審な動作を検出 | 無効(有料) |
| RDS 保護 | RDS への不審なログイン試行を検出 | 有効 |
実際に攻撃が発生するまで検出結果は生成されません。GuardDuty にはテスト用のサンプル検出結果生成機能があります。
サンプル生成を実行すると、GuardDuty が検出可能な全タイプの検出結果(約 40〜50 種類)が一度に生成されます。これらは実際の攻撃ではなく、テスト用のダミーデータです。検出結果の「サンプル」バッジが表示されます。生成には 1〜2 分かかることがあります。
左メニュー → 「検出結果」をクリックし、多数の検出結果が表示されれば生成成功です。各検出結果に「SAMPLE」タグが付いています。
| 検出結果タイプ | 説明 | 重大度 |
|---|---|---|
| UnauthorizedAccess:EC2/SSHBruteForce | EC2 インスタンスへの SSH ブルートフォース攻撃 | Medium |
| Recon:EC2/PortProbeUnprotectedPort | 開放ポートへのポートスキャン | Low |
| CryptoCurrency:EC2/BitcoinTool.B!DNS | 暗号通貨マイニングツールの DNS クエリ検出 | High |
| Backdoor:EC2/C&CActivity.B!DNS | C&C サーバーへの DNS クエリ(マルウェア感染の疑い) | High |
| UnauthorizedAccess:IAMUser/MaliciousIPCaller | 悪意ある IP からの IAM API 呼び出し | Medium |
| Policy:S3/BucketPublicAccessGranted | S3 バケットがパブリックに設定された | High |
| PrivilegeEscalation:IAMUser/AdministrativePermissions | IAM ユーザーが管理者権限を自己付与しようとした | High |
| スコア | 重大度 | 説明 |
|---|---|---|
| 7.0〜8.9 | High(高) | 即時対応が必要。深刻なセキュリティ侵害の可能性 |
| 4.0〜6.9 | Medium(中) | 調査推奨。悪用可能な可能性がある |
| 0.1〜3.9 | Low(低) | 把握しておくべき情報。通常は即時対応不要 |
GuardDuty の検出結果を Amazon EventBridge で受け取り、SNS でメール通知する仕組みを構築します。
handson-guardduty-alertshandson-guardduty-alerts の詳細ページを開くメールの確認が完了するまでサブスクリプションのステータスは「保留中の確認」になります。「Confirm subscription」をクリックするまで通知は届きません。確認メールが届かない場合は迷惑メールフォルダを確認してください。
handson-guardduty-rule{
"source": ["aws.guardduty"],
"detail-type": ["GuardDuty Finding"]
}
重大度 4.0 以上(Medium + High)のみ通知したい場合は、「カスタムパターン(JSON エディタ)」を選択し以下を入力:
{
"source": ["aws.guardduty"],
"detail-type": ["GuardDuty Finding"],
"detail": {
"severity": [{ "numeric": [">=", 4] }]
}
}
サンプル検出結果を再度生成して、メール通知が届くことを確認します。
登録したメールアドレスに GuardDuty の検出結果を含む通知メールが届きます。メールには JSON 形式で検出結果の詳細(Finding タイプ、重大度、影響リソース、検出時刻など)が含まれます。
GuardDuty は有効化したまま放置すると 月額数千円以上 の請求が発生します。ハンズオン完了後は必ず以下の手順で無効化してください。30 日間の無料トライアル終了後に課金が始まります。
disable」と入力 → 「確認」
「一時停止」はログ収集を停止するだけで GuardDuty のリソース(検出結果・設定など)は保持されます。課金も停止します。「無効化(Disable)」はすべてのデータを削除し完全に停止します。このハンズオンでは「無効化」を選択してください。
GuardDuty コンソールに「Amazon GuardDuty へようこそ」の初期画面が表示されれば無効化完了です。課金が停止します。