概要
やりたいこと
Slack に GuardDuty アラートを通知している。
- EventBridge, SNS, Chatbot で AWS Securtiy Hub から検出結果を Slack に飛ばす
- GuardDuty 委任管理者から特定アカウント・全リージョンの GuardDuty を有効化・マルチアカウント連携
問題として、既知の問題ないことが判明しているアラートも Slack 通知されてしまう。
これを解消するため、GuardDuty でフィルタリングを行う。
GuardDuty 抑制ルール
GuardDuty はフィルタリングの結果を自動的にアーカイブする機能がある。
「結果の抑制」より、フィルタリングを指定し、ルール名を指定して保存する。
抑制された結果は、AWS Security Hub、Amazon S3、CloudWatch Events には送られないため、 Slack へ通知されなくなる。
CloudFormation で書く場合、AWS::GuardDuty::Filter の Action に「ARCHIVE」を指定。
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
下記のように絞れた。
コメント