Amazon GuardDuty で実現する脅威検出 - ML ベースの異常検知とインシデント対応
GuardDuty による脅威検出の仕組み、検出結果の分類、Security Hub との統合によるインシデント対応を解説します。
GuardDuty の概要
GuardDuty は AWS アカウントとワークロードの脅威を継続的に検出するサービスです。CloudTrail イベント、VPC Flow Logs、DNS クエリログを自動的に分析し、不正な API 呼び出し、暗号通貨マイニング、C&C サーバーとの通信、ブルートフォース攻撃などを検出します。有効化した後に、ほかの設定を有効にしなくても分析が始まり、既存のログ設定を変える必要はありません。GuardDuty は独自にログを取得するため、ユーザーが VPC Flow Logs や CloudTrail を手動で有効にしている必要はありません。検出エンジンは AWS が管理する脅威インテリジェンスフィード (既知の悪意ある IP アドレス、ドメインリスト) と、アカウント固有の行動ベースライン ML モデルの 2 つを組み合わせています。
検出結果と対応
検出結果は Recon (偵察)、UnauthorizedAccess (不正アクセス)、CryptoCurrency (暗号通貨マイニング)、Trojan (トロイの木馬) などのタイプに分類されます。重要度 High の検出結果には、EventBridge ルールで Lambda を起動し、侵害された IAM 認証情報の無効化や EC2 インスタンスの隔離を自動実行できます。Security Hub との統合で GuardDuty の検出結果を他のセキュリティサービスの結果とまとめて確認できます。実践的な自動修復アーキテクチャとしては、GuardDuty が High severity の UnauthorizedAccess:IAMUser 検出結果を生成 → EventBridge → Lambda が該当 IAM ユーザーのアクセスキーを無効化し、MFA リセットを要求 → SNS で運用チームに通知する、という流れです。
保護プランと Organizations 統合
GuardDuty の保護プランには、S3 Protection、EKS Protection、Runtime Monitoring (Amazon EKS、Amazon EC2、AWS Fargate を含む Amazon ECS のランタイム脅威検出)、Malware Protection for EC2 (EC2 インスタンスに関連付けた EBS ボリュームのスキャン)、Malware Protection for S3、RDS Protection、Lambda Protection などがあります。Organizations の委任管理者で複数アカウントの GuardDuty をまとめて管理し、新規アカウントの自動有効化を設定します。検出結果は Security Hub に送って集約できます。Runtime Monitoring は GuardDuty エージェントをホストまたはコンテナに配置し、ファイルアクセス、プロセス実行、ネットワーク接続をカーネルレベルで監視します。これはプロセスインジェクションやリバースシェルなどのランタイムの脅威の検出に使えます。
GuardDuty の料金最適化
GuardDuty の基本の脅威検出の料金は、分析するイベントとログの量に応じて決まります。各保護プランは、有効にした分の料金が別途発生します。初めて有効化すると Runtime Monitoring を除く保護プランも 30 日間の無料トライアルに含まれるため、その間にコストを確かめます。Malware Protection はスキャン対象のデータ量で課金されるため、スキャン対象を重要なワークロードに限定してコストを管理します。利用開始後に料金が予想以上に高い場合は、GuardDuty コンソールの Usage ページでデータソース別のコスト内訳を確認し、不要な保護プランを無効化するか、S3 保護のイベント頻度が高い場合は対象バケットのアクセスパターンを見直します。
検出精度チューニングと誤検知対策
GuardDuty を有効化した直後は誤検知 (false positive) が出ることがあるため、検出の設定を調整して運用を安定させます。信頼済みの IP リスト (Trusted IP Lists) に社内のグローバル IP や VPN 出口 IP を登録すると、これらからのアクセスに対する検出結果が自動的に抑制されます。同様に、脅威 IP リスト (Threat IP Lists) に独自の脅威インテリジェンスを追加して検出精度を強化することもできます。特定のリソースに対する反復的な検出結果は Suppression Rules で非表示にできますが、安易に広範囲のルールを設定すると本物の脅威を見落とすリスクがあるため、条件は特定のアカウント ID + 特定のリソース ARN + 特定の検出タイプのように狭く設定します。検出結果を Amazon Detective に連携すれば、GuardDuty が「何が起きたか」を示し、Detective が「なぜ / どのように起きたか」を IP アドレスの行動履歴や API コールのタイムラインで可視化するため、調査と誤検知の判定に使えます。
他のセキュリティサービスとの役割分担
AWS のセキュリティサービスは検出対象と目的が異なるため、GuardDuty を中心に複数のサービスを組み合わせて多層防御を構成できます。GuardDuty はアカウント行動とネットワーク通信の異常を「継続的に」検出するのが主目的で、事後調査には Amazon Detective、脆弱性スキャンには Amazon Inspector、IAM ポリシーの設定不備には IAM Access Analyzer をそれぞれ使い分けます。Security Hub がこれらの検出結果を一元集約するハブとなり、AWS Foundational Security Best Practices 等のスタンダードに基づくコンプライアンスチェックも提供します。GuardDuty を先に有効化し、検出結果を見てから Detective や Inspector を追加する進め方では、コストを確かめながら導入します。マルチアカウント環境では、セキュリティアカウントを委任管理者として指定し、全メンバーアカウントの GuardDuty 検出結果をこのアカウントに集約する構成にできます。
まとめ
GuardDuty は ML と脅威インテリジェンスで AWS 環境の脅威を自動検出するサービスです。S3、EKS、Lambda、RDS、Runtime Monitoring の保護プランで検出の範囲を広げ、Organizations との統合で複数アカウントの GuardDuty をまとめて管理します。EventBridge 連携で、検出結果に対する修復の処理を自動で実行できます。信頼済み IP リストと Suppression Rules で誤検知を抑え、Detective との連携で調査を進めます。
参考資料 (AWS 公式)
本ページの一次情報は AWS 公式サイトと公式ドキュメントです。最新の仕様と料金は次の公式ページで確認できます。
本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。