GuardDuty のアラートをフィルタリング・自動アーカイブし、Slackへ通知されないようにする
目次
概要
やりたいこと
Slack に GuardDuty アラートを通知している。
- EventBridge, SNS, Chatbot で AWS Securtiy Hub から検出結果を Slack に飛ばす
- GuardDuty 委任管理者から特定アカウント・全リージョンの GuardDuty を有効化・マルチアカウント連携
問題として、既知の問題ないことが判明しているアラートも Slack 通知されてしまう。
これを解消するため、GuardDuty フィルタリングを行う。
GuardDuty Filter
GuardDuty はフィルタリングの結果を自動的にアーカイブする機能がある。
「結果の抑制」より、フィルタリングを指定し、ルール名を指定して保存する。

抑制された結果は、AWS Security Hub、Amazon S3、CloudWatch Events には送られないため、 Slack へ通知されなくなる。
CloudFormation で書く場合、AWS::GuardDuty::Filter の Action で指定する。
GuardDutyFilter: Type: AWS::GuardDuty::Filter Properties: Action: ARCHIVE Name : SampleFilter Description: SampleFilter Rank : 1 DetectorId: !Ref GuardDuty FindingCriteria: Criterion: resource.resourceType: Eq: - Instance
フィルターの対象
GuardDuty の結果タイプには 3 種類あり、これが GuardDuty のフィルタ(検索)に利用できる。
例えば、IAM の結果タイプのをフィルタリングしたい場合、リソースタイプを AccessKey に指定する。

フィルタに利用できるプロパティは下記参照。
CloudFormation
リソースタイプ が IAM を除外
IAM の結果タイプを抑制するサンプル。
Description: GuardDuty Resources: GuardDuty: Type: AWS::GuardDuty::Detector Properties: Enable: true FindingPublishingFrequency: FIFTEEN_MINUTES GuardDutyFilter: Type: AWS::GuardDuty::Filter Properties: Action: ARCHIVE Name : IAMFilter Description: IAMFilter Rank : 1 DetectorId: !Ref GuardDuty FindingCriteria: Criterion: resource.resourceType: Eq: - AccessKey
特定インスタンスの特定アラートを除外
特定インスタンスから継続的にアラートが出てしまう場合、インスタンスと検索タイプ(アラート名)を組み合わせたフィルターを作成する。
AWSTemplateFormatVersion: 2010-09-09 Description: GuardDuty Resources: GuardDuty: Type: AWS::GuardDuty::Detector Properties: Enable: true FindingPublishingFrequency: FIFTEEN_MINUTES GuardDutyFilter: Type: AWS::GuardDuty::Filter Properties: Action: ARCHIVE Name : AlertFilter Description: AlertFilter Rank : 1 DetectorId: !Ref GuardDuty FindingCriteria: Criterion: type: Eq: - Trojan:EC2/BlackholeTraffic!DNS resource.instanceDetails.instanceId: Eq: - i-99999999
こういう結果になる。

ディスカッション
コメント一覧
まだ、コメントがありません