こんにちは、上野です。
みなさんAmazon GuardDutyで不正検知してますか?ONにするだけで使用できるGuardDuty、便利ですよね。
ただ、ONにするだけでは利用者にイベントが通知されるわけではないので、いち早く気づいて状況確認および対策できるよう、通知設定まで行うのが通常多いかと思います。
通知設定まで行い、検知後の状況確認、対策フローも決めて、AWSアカウントのリスクを減らす活動ができてこそGuardDutyの本領発揮というところですね。
通知設定
Amazon EventBridgeを使用するのが鉄板でしょう。通知先は、情報が見やすいAWS Chatbot(Slack)を使用することが私は多いです。
すべての結果を通知する場合、EventBridgeのルールは以下のようにシンプルになります。
{ "source": ["aws.guardduty"], "detail-type": ["GuardDuty Finding"] }
以下のように重要度が高いものを通知したり、条件を絞ってターゲット(SNS)に渡したい場合はルールが複雑になってきます。
{ "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail": { "severity": [ { "numeric": [ ">=", 4 ] } ] } }
通知のテスト(GuardDuty画面から発行)
複雑なルールを設定した場合(もちろんシンプルな場合でも)、「ちゃんと通知が飛んでくるかな」とテストがしたくなります。GuardDutyには便利なサンプルイベントの発行機能があります。
便利なのですが、イベント量が多いです。網羅性的には助かるのですが、気軽にテストしようものなら大量の通知が飛んできます。
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
重要度:中
aws guardduty create-sample-findings \ --detector-id $(aws guardduty list-detectors --query 'DetectorIds' --output text) \ --finding-types Behavior:EC2/NetworkPortUnusual
重要度:低
aws guardduty create-sample-findings \ --detector-id $(aws guardduty list-detectors --query 'DetectorIds' --output text) \ --finding-types Policy:S3/AccountBlockPublicAccessDisabled
以下のように、スペース区切りで複数イベントも発行可能です。
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で見ても関連情報はありません)
それではまた!