抑制ルール - Amazon GuardDuty

抑制ルール

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

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

抑制された検出結果は、AWS Security Hub、Amazon S3、Detective、CloudWatch には送信されないため、Security Hub やサードパーティーの SIEM、その他のアラート、チケット発行アプリケーションなどを介して 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 を使用します。2 番目のフィルター条件は、オンプレミスインターネットゲートウェイの IP アドレスまたは CIDR 範囲を持つ [API caller IPv4 address] (API 発信者の IPv4 アドレス) です。次の例は、API 発信者の IP アドレスに基づいてこの検出結果タイプを抑制するために使用するフィルターを示しています。

    Finding type: UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration 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

GuardDuty で抑制ルールを作成するには

Console

GuardDuty コンソールでは、抑制ルールを簡単に視覚化、作成、管理することができます。抑制ルールはフィルターと同じ方法で生成され、既存の保存済みフィルターを抑制ルールとして使用できます。フィルター作成については、「検出結果のフィルタリング」を参照してください。

コンソールを使用して抑制ルールを作成するには

  1. GuardDuty の [Findings] (結果) ページで、[Suppress findings] (結果の抑制) を選択して、抑制ルールパネルを開きます。

  2. フィルターバーで [Add filter criteria] (フィルター条件を追加) を選択して、フィルター条件メニューを開きます。リストから基準を選択し、その基準に有効な値を入力します。使用する正しい値を判断するには、検出結果テーブルから抑制する検出結果を選択し、コンソールの同じページから詳細を確認します。抑制する検出結果のみが検出結果テーブルに表示されるまで、フィルター条件を追加し続けることができます。

  3. 抑制ルールの名前と説明を入力します。

  4. [Save] (保存) を選択します。

また、既存の保存済みフィルターから抑制ルールを作成できます。フィルター作成については、「検出結果のフィルタリング」を参照してください。

保存済みフィルターから抑制ルールを作成するには、次の手順を実行します。

  1. GuardDuty の [Findings] (結果) ページで、[Suppress findings] (結果の抑制) を選択して、抑制ルールパネルを開きます。

  2. [Saved rules] (保存済みのルール) ドロップダウンから、保存したフィルターを選択します。

  3. 抑制ルールの名前と説明を入力します。

  4. [Save] (保存) を選択します。

抑制ルールは、コンソールの [Saved rules] (保存済みのルール) ドロップダウンからルールを選択して、いつでも表示、編集、削除できます。

API

API を使用して抑制ルールを作成するには

  1. 抑制ルールは、CreateFilter API を使用して作成できます。これを行うには、次に示す例の形式に従って JSON ファイルでフィルター条件を指定します。次の例では、test.example.com への DNS リクエストが行われたアーカイブされていない検出結果を抑制します。

    { "Criterion": { "service.archived": { "Eq": [ "false" ] }, "service.action.dnsRequestAction.domain": { "Eq": [ "test.example.com" ] } } }

    JSON のフィールド名とそれに相当するコンソールのフィールド名の一覧については、「フィルターの属性」を参照してください。

    フィルター基準をテストするには、ListFindings API で同じ JSON 基準を使用し、正しい検出結果が選択されていることを確認します。フィルター条件をテストするには、AWS CLI で独自の detectorId と .json ファイルを使用して例に従ってください。

    https://console.aws.amazon.com/guardduty/ コンソールの [Settings] (設定) ページで、または ListDetectors API を使用して、現在のリージョンの detectorId を確認できます。

    aws guardduty list-findings --detector-id 12abc34d567e8fa901bc2d34e56789f0 --finding-criteria file://criteria.json
  2. 抑制ルールとして使用するフィルターを CreateFilter API を使用してアップロードするか、AWS CLI で次の例に従って独自のディテクター ID、抑制ルール名、.json ファイルを使用してアップロードします。

    https://console.aws.amazon.com/guardduty/ コンソールの [Settings] (設定) ページで、または ListDetectors API を使用して、現在のリージョンの detectorId を確認できます。

    aws guardduty create-filter --action ARCHIVE --detector-id 12abc34d567e8fa901bc2d34e56789f0 --name yourfiltername --finding-criteria file://criteria.json

ListFilter API を使用して、プログラムでフィルターのリストを表示できます。GetFilter API にフィルター名を指定すると、個々のフィルターの詳細を表示できます。フィルターを更新するには UpdateFilter API を使用し、フィルターを削除するには DeleteFilter API を使用します。