GuardDuty の抑制ルール - Amazon GuardDuty

GuardDuty の抑制ルール

抑制ルールは、フィルター属性と値の組み合わせで構成される基準のセットで、指定した条件に一致する新しい検出結果を自動的にアーカイブして検出結果をフィルタリングするために使用する条件のセットのことです。抑制ルールを使用して、重要ではない検出結果、誤検出の検出結果、対応を行わない脅威をフィルタリングすることにより、環境に最も影響があるセキュリティの脅威を認識しやすくなります。

抑制ルールを作成すると、その抑制ルールが適用されている限り、ルールで定義された条件に一致する新しい検出結果が自動的にアーカイブされます。既存のフィルターを使用して抑制ルールを作成したり、定義した新しいフィルターから抑制ルールを作成することもできます。検出結果タイプ全体を抑制するよう抑制ルールを設定したり、特定の検出結果タイプの特定のインスタンスのみを抑制する、よりきめ細かいフィルター条件を定義したりできます。抑制ルールはいつでも編集できます。

抑制された検出結果は、AWS Security Hub、Amazon Simple Storage、Amazon Detective、Amazon EventBridge には送信されないため、Security Hub やサードパーティの SIEM、その他のアラート、チケット発行アプリケーションなどを介して GuardDuty の検出結果を利用する場合に検出のノイズが減ります。Malware Protection for EC2 を有効にした場合、抑制された GuardDuty の検出結果ではマルウェアスキャンは開始されません。

GuardDuty は、抑制ルールに一致している場合でも検出結果を生成します。ただし、これらの検出結果は自動的に [archived] (アーカイブ) としてマークされます。アーカイブされた検出結果は 90 日間 GuardDuty に保存され、その期間中いつでも表示することができます。抑制された検出結果は、GuardDuty コンソールで、検出結果の表から [Archived] (アーカイブ) を選択するか、service.archived 等式の findingCriteria 条件を true にした ListFindings API を使用して GuardDuty API を通じて表示できます。

注記

マルチアカウント環境では、GuardDuty 管理者のみが抑制ルールを作成できます。

抑制ルールの一般的ユースケースとその例

次の検出結果タイプには、抑制ルールを適用する一般的ユースケースがあります。検出結果名を選択すると、その検出結果の詳細を確認できます。ユースケースの説明を確認して、その検出結果タイプの抑制ルールを作成するかどうかを決定します。

重要

GuardDuty は、環境で誤検出を繰り返し特定した検出結果に対してのみ、抑制ルールを作成することをお勧めします。

  • UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS - VPC のインターネットゲートウェイからではなく、オンプレミスのゲートウェイからインターネットへのトラフィックをルーティングするように VPC ネットワークが設定されている場合に、生成された検出結果を自動的にアーカイブするために抑制ルールを使用します。

    この検出結果が生成されるのは、VPC インターネットゲートウェイ (IGW) からではなく、オンプレミスのゲートウェイから排出され、インターネットトラフィックがルーティングされるように、ネットワークが構成されている場合です。AWS Outposts や VPC VPN 接続などの一般的な構成では、このようにトラフィックがルーティングされる可能性があります これが予期した動作である場合は、抑制ルールを使用して、2 つのフィルター条件で構成されるルールを作成することをお勧めします。1 つ目の条件では、[finding type] (結果タイプ) に UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS を使用します。2 番目のフィルター条件は、オンプレミスインターネットゲートウェイの IP アドレスまたは CIDR 範囲を持つ [API caller IPv4 address] (API 発信者の IPv4 アドレス) です。次の例は、API 発信者の IP アドレスに基づいてこの検出結果タイプを抑制するために使用するフィルターを示しています。

    Finding type: UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS API caller IPv4 address: 198.51.100.6
    注記

    複数の API 発信者の IP を含めるには、それぞれに新しい API 発信者 IPv4 アドレスフィルターを追加します。

  • Recon:EC2/Portscan - 脆弱性評価アプリケーションを使用する場合に、検出結果を自動的にアーカイブするために抑制ルールを使用します。

    抑制ルールは、2 つのフィルター条件で構成する必要があります。1 つ目の条件では、[Finding type] (結果タイプ) 属性に Recon:EC2/Portscan という値を使用します。2 番目のフィルター条件は、これらの脆弱性評価ツールをホストする 1 つ以上のインスタンスと一致する必要があります。これらのツールをホストするインスタンスで識別可能な条件に応じて、[Instance image ID] (インスタンスイメージ ID) 属性または [Tag] (タグ) 値の属性のいずれかを使用できます。次の例は、特定の AMI を持つインスタンスに基づいてこの検出結果タイプを抑制するために使用するフィルターを示しています。

    Finding type: Recon:EC2/Portscan Instance image ID: ami-999999999
  • UnauthorizedAccess:EC2/SSHBruteForce - 踏み台インスタンスをターゲットとする場合に、検出結果を自動的にアーカイブするために抑制ルールを使用します。

    総当たり攻撃の対象が要塞ホストである場合、これはご利用の AWS 環境の想定内の動作を示している可能性があります。このような状況が発生した場合は、この検出結果に対する抑制ルールを設定することをお勧めします。抑制ルールは、2 つのフィルター条件で構成する必要があります。1 つ目の条件では、[Finding type] (結果タイプ) 属性に UnauthorizedAccess:EC2/SSHBruteForce という値を使用します。2 番目のフィルター条件は、要塞ホストとして機能する 1 つ以上のインスタンスと一致する必要があります。これらのツールをホストするインスタンスで識別可能な条件に応じて、[Instance image ID] (インスタンスイメージ ID) 属性または [Tag] (タグ) 値の属性のいずれかを使用できます。次の例は、特定のタグ値を持つインスタンスに基づいてこの検出結果タイプを抑制するために使用するフィルターを示しています。

    Finding type: UnauthorizedAccess:EC2/SSHBruteForce Instance tag value: devops
  • Recon:EC2/PortProbeUnprotectedPort - 意図的に公開しているインスタンスをターゲットとする場合に、検出結果を自動的にアーカイブするために抑制ルールを使用します。

    インスタンスがウェブサーバーをホストしている場合など、インスタンスが意図的に公開されている場合があります。ご利用の AWS 環境でこのような状況が発生した場合は、この検出結果に対する抑制ルールを設定することをお勧めします。抑制ルールは、2 つのフィルター条件で構成する必要があります。1 つ目の条件では、[Finding type] (結果タイプ) 属性に Recon:EC2/PortProbeUnprotectedPort という値を使用します。2 番目のフィルター条件は、要塞ホストとして機能する 1 つ以上のインスタンスと一致する必要があります。これらのツールをホストするインスタンスで識別可能な条件に応じて、[Instance image ID] (インスタンスイメージ ID) 属性または [Tag] (タグ) 値の属性のいずれかを使用できます。次の例は、コンソール内の特定のタグキーを持つインスタンスに基づいてこの検出結果タイプを抑制するために使用するフィルターを示しています。

    Finding type: Recon:EC2/PortProbeUnprotectedPort Instance tag key: prod

Runtime Monitoring 検出結果の抑制ルールの推奨

  • PrivilegeEscalation:Runtime/DockerSocketAccessed はコンテナ内のプロセスが Docker ソケットと通信するときに生成されます。環境内に、正当な理由で Docker ソケットにアクセスする必要があるコンテナが存在する可能性があります。このようなコンテナからアクセスすると、PrivilegeEscalation:Runtime/DockerSocketAccessed 検出結果が生成されます。ご利用の AWS 環境でこのような状況が発生した場合は、この検出結果タイプに対する抑制ルールをセットアップすることをお勧めします。1 つ目の条件では、値が PrivilegeEscalation:Runtime/DockerSocketAccessed に等しい [検出結果タイプ] フィールドを使用する必要があります。2 番目のフィルター条件は、生成された検出結果のプロセスの executablePath と同じ値を持つ [実行可能ファイルのパス] フィールドです。別の方法として、2 番目のフィルター条件では、生成された検出結果のプロセスの executableSha256 と同じ値を持つ [実行可能ファイル SHA-256] フィールドを使用できます。

  • Kubernetes クラスターは、独自の DNS サーバーを coredns などのポッドとして実行します。そのため、ポッドからの DNS 検索ごとに、GuardDuty は 2 つの DNS イベントをキャプチャします。1 つはポッドから、もう 1 つはサーバーポッドからキャプチャされます。これにより、以下の DNS 検出結果に重複が生じる可能性があります。

    重複した検出結果には、DNS サーバーポッドに対応するポッド、コンテナ、プロセスの詳細が含まれます。これらのフィールドを使用して、重複検出結果を抑制する抑制ルールをセットアップできます。最初のフィルター条件では、このセクションで前述した検出結果リストの DNS 検出結果タイプと同じ値の [検出結果タイプ] フィールドを使用する必要があります。2 つ目のフィルター条件は、お使いの DNS サーバー executablePath と同じ値の [実行可能ファイルのパス] か、生成された検出結果の DNS サーバー executableSHA256 と同じ値の [実行可能ファイル SHA-256] のいずれかです。オプションの 3 番目のフィルター条件として、生成された検出結果に含まれる DNS サーバーポッドのコンテナイメージと同じ値の [Kubernetes コンテナイメージ] フィールドを使用できます。