4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS CloudTrailとメトリクスフィルタでセキュリティ監視をしている人に向けたTips

Last updated at Posted at 2024-06-29

はじめに

こんにちは、クマ松です。

不正なログインや異常なアクティビティを即座に検知することは、AWSアカウントのセキュリティを確保するためには重要ですよね。

AWS CloudTrailAmazon CloudWatch Logs、そしてAmazon SNSを組み合わせて、不正なAPIコールを監視している人も居るのではないでしょうか。今回はこの構成の注意点と、代替案をご紹介します。

結論

  • AWS CloudTrailの操作ログがAmazon CloudWatch Logsに出力されるまでに15分かかることがあるため、迅速に何らかの異常操作を検知したい場合には不向きな構成
  • 不正な操作を迅速に検知したい場合はAmazon EventBridgeまたはAmazon GuardDutyを利用するのがおススメ

AWS CloudTrailとAmazon CloudWatch Logsを組み合わせた監視の仕組み

AWS CloudTrail→Amazon CloudWatch Logsへのログ配信

AWS CloudTrailを使えば、AWSサービスの操作履歴を証跡として残すことができます。 AWS CloudTrailAmazon S3Amazon CloudWatch Logsへの出力をサポートしており、証跡ログのモニタリングをすることが可能です。

image.png
(引用元:20210119 AWS Black Belt Online Seminar AWS CloudTrail)

ログ上に特定の文字列が出力されたらメールを配信

Amazon CloudWatch Logsのメトリクスフィルタという機能を使うことで、ログに特定の文字列が検知されたらAmazon SNSでユーザにメールを配信することが可能です。

image.png
(引用元:20210119 AWS Black Belt Online Seminar AWS CloudTrail)

アカウントアクティビティ発生からアラート配信まで最大15分かかることも・・・

AWS CloudTrailの証跡ログの出力は通常15分以内に配信する仕様です。
前述の「モニタリング例」の①の時点で15分かかった場合、当然ユーザがメールを受け取るまで15分かかります。

image.png
(引用元:20210119 AWS Black Belt Online Seminar AWS CloudTrail)

「不正なAPI呼び出し」や「MFAなしでのコンソールへのサインイン」、「ルートアカウントの使用」等、すぐにでも検知したいようなアカウント操作を監視する場合はこの設定では遅すぎるかもしれません。

Amazon EventBridgeによるアラート通知

Amazon EventBridgeを使うことで、AWS APIコールが発生した瞬間にイベントを検知し、指定したアクションを実行することが可能です。

image.png
(引用元:20200122 AWS Black Belt Online Seminar Amazon EventBridge)

例:MFAを使わずにログインしたアカウントの検知 例

一つ、試しにAmazon EventBridgeでイベントを検知してみましょう。

Amazon EventBridgeの画面から [バス] を選択し、イベントバスで[default]が選択されていることを確認のうえ、 [ルールを作成] を押します。
image.png

ルールの詳細を定義では [イベントバターンを持つルール] を選択します。
image.png

イベントパターンに以下のJSONを挿入し、「次へ」を押します。
image.png

Event Patern of SignInn Without MFA
{
  "detail-type": ["AWS Console Sign In via CloudTrail"],
  "detail": {
    "eventName": ["ConsoleLogin"],
    "additionalEventData": {
      "MFAUsed": ["No"]
    }
  }
}

ターゲットにはAmazon SNSを追加します。
※事前にメール配信用のSNSトピックを準備しておきましょう
image.png

次ページのタグの設定は不要ですので、「ルールの作成」を押します。

その後、MFAを利用していないユーザでログインをすると、10秒以内にメールが飛んできます。

image.png

Amazon EventBridgeによる監視のデメリット

AWSサービスのイベントが発生したことをAmazon EventBridgeAmazon SNSで検知したい場合、前述のとおり監視をしたい内容をイベントパターンでどのように定義するか、調査しなくてはいけません。

これは面倒ですね。

GuardDutyによる検知

Amazon GuardDutyを使えば、AWSアカウントへの脅威の検知を簡単に設定できます。Amazon EventBridgeのイベントパターンに詳しくなる必要はありません。

Amazon GuardDutyを有効化すると、セキュリティ上の脅威を検出してくれます。
脅威の検出結果は上記と同じくAmazon EventBridgeAmazon SNSでアラートの配信をすることができます。

Amazon GuardDutyにより検出された脅威をメールで確認するための設定

Amazon GuardDutyでは、検出された脅威(Fingings)を重要度「高/中/低」に応じて分類してくれるため、Amazon EventBridge側で「重要度 中以上の脅威が検出された場合のみアラートを配信する」という設定をすることができます。

image.png
(引用元:【AWS Black Belt Online Seminar】Amazon GuardDuty)

Event Patern of Severity High - GuardDuty Findings
{
  "source": ["aws.guardduty"],
  "detail-type": ["GuardDuty Finding"],
  "detail": {
    "severity": [{
      "numeric": [">=", 7.0]
    }]
  }
}

この機能を使えば、一つ一つの脅威に対してAmazon EventBridgeを作成する必要がなくなりますね。
Amazon EventBridgeでは、特定のAWS APIが操作された場合のみネクストアクションを起こすことができますが、Amazon GuardDutyは「悪意のあるIPアドレス、通常操作とは異なる何らかの異常の検出、機械学習などの統合脅威インテリジェンス」を使用した脅威検出をしてくれるため、「どのような脅威を検知したい」とユーザが事前に具体的に定義する必要がないところも良い点です。

もちろん、特定の検出結果だけアラートを配信する設定を入れることもできます。

Event Patern of Root User Usage - GuardDuty Findings
{
  "source": ["aws.guardduty"],
  "detail-type": ["GuardDuty Finding"],
  "detail": {
    "type": ["UnauthorizedAccess:IAMUser/RootCredentialUsage"]
  }
}

おわりに

いかがでしたでしょうか。
AWS CloudTrailのメトリクスフィルタを使った監視を利用しているユーザの皆さんの参考になりますと嬉しいです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?