GuardDutyの検知テストにCLIとサンプルイベントを使用する

こんにちは、上野です。

みなさんAmazon GuardDutyで不正検知してますか?ONにするだけで使用できるGuardDuty、便利ですよね。

ただ、ONにするだけでは利用者にイベントが通知されるわけではないので、いち早く気づいて状況確認および対策できるよう、通知設定まで行うのが通常多いかと思います。

通知設定まで行い、検知後の状況確認、対策フローも決めて、AWSアカウントのリスクを減らす活動ができてこそGuardDutyの本領発揮というところですね。

通知設定

Amazon EventBridgeを使用するのが鉄板でしょう。通知先は、情報が見やすいAWS Chatbot(Slack)を使用することが私は多いです。

f:id:fu3ak1:20211112230445p:plain

すべての結果を通知する場合、EventBridgeのルールは以下のようにシンプルになります。

{
  "source": ["aws.guardduty"],
  "detail-type": ["GuardDuty Finding"]
}

以下のように重要度が高いものを通知したり、条件を絞ってターゲット(SNS)に渡したい場合はルールが複雑になってきます。

{
    "source": [
        "aws.guardduty"
    ],
    "detail-type": [
        "GuardDuty Finding"
    ],
    "detail": {
        "severity": [
            { "numeric": [ ">=", 4 ] }
        ]
    }
}

通知のテスト(GuardDuty画面から発行)

複雑なルールを設定した場合(もちろんシンプルな場合でも)、「ちゃんと通知が飛んでくるかな」とテストがしたくなります。GuardDutyには便利なサンプルイベントの発行機能があります。

f:id:fu3ak1:20211112231210p:plain

便利なのですが、イベント量が多いです。網羅性的には助かるのですが、気軽にテストしようものなら大量の通知が飛んできます。

f:id:fu3ak1:20211112231708p:plain

EventBridgeのルールを変更し、再テストとなると、これを繰り返すことになるため、通知量としては少し大げさになるかと思います。

※発行から実際の通知までには数分かかります。

CLIを使用した通知テスト

CLIを使用すると、指定したサンプルイベントを1件ずつ発行できます。ちょっとした通知をしたい場合におすすめです。(最近知りました)

レベル別に1つずつサンプルコマンドを書いておきます。

重要度:高

aws guardduty create-sample-findings \
--detector-id $(aws guardduty list-detectors --query 'DetectorIds' --output text) \
--finding-types Backdoor:EC2/DenialOfService.UnusualProtocol

f:id:fu3ak1:20211112233151p:plain

重要度:中

aws guardduty create-sample-findings \
--detector-id $(aws guardduty list-detectors --query 'DetectorIds' --output text) \
--finding-types Behavior:EC2/NetworkPortUnusual

f:id:fu3ak1:20211112233622p:plain

重要度:低

aws guardduty create-sample-findings \
--detector-id $(aws guardduty list-detectors --query 'DetectorIds' --output text) \
--finding-types Policy:S3/AccountBlockPublicAccessDisabled

f:id:fu3ak1:20211112234158p:plain

以下のように、スペース区切りで複数イベントも発行可能です。

aws guardduty create-sample-findings \
--detector-id $(aws guardduty list-detectors --query 'DetectorIds' --output text) \
--finding-types Backdoor:EC2/DenialOfService.UnusualProtocol Behavior:EC2/NetworkPortUnusual

まとめと参考情報

以上、自分のメモも兼ねて書いてみました。みなさまの通知テストの役に立てば幸いです!

ちなみに、GuardDutyの検知後の詳細状況確認は、検知画面からDetectiveに遷移して色々と状況を見てみるというやり方がおすすめです。

(↓の画像はサンプルイベントなので特にDetectiveで見ても関連情報はありません)

f:id:fu3ak1:20211112234459p:plain

それではまた!

f:id:fu3ak1:20210325095452j:plain

執筆者上野史瑛

Japan APN Ambassador 2020
AWSを中心としたクラウドの導入、最適化を専門に行っています。