抑制ルール - Amazon GuardDuty

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

抑制ルール

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

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

抑制された検出結果は、AWS Security Hub、Amazon Simple Storage、Amazon Detective、Amazon EventBridge には送信されないため、Security Hub やサードパーティの SIEM、その他のアラート、チケット発行アプリケーションなどを介して GuardDuty の検出結果を利用する場合に検出のノイズが減ります。GuardDuty Malware Protection を有効にした場合、抑制された 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

EKS 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 コンテナイメージ] フィールドを使用できます。

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

任意のアクセス方法を選択して、GuardDuty で抑制ルールを作成または管理します。

Console

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

コンソールを使用して抑制ルールを作成するには
  1. https://console.aws.amazon.com/guardduty/ で GuardDuty コンソールを開きます。

  2. [Findings] (検出結果) ページで、[Suppress findings] (検出結果の抑制) をクリックして、抑制ルールパネルを開きます。

  3. フィルター基準メニューを開くには、[Add filter criteria] (フィルター基準を追加) に filter criteria を入力します。リストから基準を選択できます。選択した基準の有効な値を入力します。

    注記

    有効な値を判断するには、検出結果テーブルを表示して、抑制する結果を選択します。検出結果パネルで詳細を確認します。

    複数のフィルター基準を追加して、抑制したい検出結果のみがテーブルに表示されるようにすることができます。

  4. 抑制ルールの [Name] (名前) と [Description] (説明) を入力します。有効な文字は、英数字、ピリオド (.)、ダッシュ (-)、アンダースコア (_)、空白スペースです。

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

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

保存済みフィルターから抑制ルールを作成するには、次の手順を実行します。
  1. https://console.aws.amazon.com/guardduty/ で GuardDuty コンソールを開きます。

  2. [Findings] (検出結果) ページで、[Suppress findings] (検出結果の抑制) をクリックして、抑制ルールパネルを開きます。

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

  4. 新しいフィルター基準を追加することもできます。フィルター基準を追加する必要がない場合は、この手順をスキップします。

    フィルター基準メニューを開くには、[Add filter criteria] (フィルター基準を追加) に filter criteria を入力します。リストから基準を選択できます。選択した基準の有効な値を入力します。

    注記

    有効な値を判断するには、検出結果テーブルを表示して、抑制する結果を選択します。検出結果パネルで詳細を確認します。

  5. 抑制ルールの [Name] (名前) と [Description] (説明) を入力します。有効な文字は、英数字、ピリオド (.)、ダッシュ (-)、アンダースコア (_)、空白スペースです。

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

抑制ルールを削除するには
  1. https://console.aws.amazon.com/guardduty/ で GuardDuty コンソールを開きます。

  2. [Findings] (検出結果) ページで、[Suppress findings] (検出結果の抑制) をクリックして、抑制ルールパネルを開きます。

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

  4. [Delete rule] (ルールを削除) を選択します。

API/CLI
API を使用して抑制ルールを作成するには
  1. 抑制ルールは、CreateFilter API を使用して作成できます。これを行うには、次に示す例の形式に従って JSON ファイルでフィルター条件を指定します。次の例では、test.example.com ドメインへの DNS リクエストが行われた未アーカイブの重要度の低い検出結果を抑制します。重要度が中の検出結果の場合、入力リストは ["4", "5", "7"] になります。重要度が高の検出結果の場合、入力リストは ["6", "7", "8"] になります。リスト内の任意の 1 つの値に基づいてフィルターすることもできます。

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

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

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

    https://console.aws.amazon.com/guardduty/ コンソールの [設定] ページで、現在のリージョンの独自の 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/ コンソールの [設定] ページで、現在のリージョンの独自の 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 を使用してフィルターを削除します。