AWS CloudTrailでIAMユーザーのサインイン失敗を検出してみる


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

AWS CloudTrailはセキュリティの観点から、クラウド運用において重要なサービスですよね。

 

しかし、AWS CloudTrailは名前や機能は知っているけど、実際には使っていない・放置してしまっている方は多いのではないでしょうか

 

正直に言うと、わたしもその一人です。

 

今回AWS CloudTrailについて調べるまで、自分のプライベートAWSアカウントのセキュリティに関しては多要素認証しただけで満足していました。

 

今回の記事ではAWSCloudTrailについて解説しつつ、IAMユーザーのサインインの失敗検出をする構築のハンズオンを紹介します。

 

 

AWS CloudTrailを使ってみよう

AWS CloudTrailはAWSクラウドを利用する上で、重要なサービスです。ハンズオンをやる前に、AWS CloudTrailについて知っておきましょう。

 

 

■AWS CloudTrailとは?

cloudtrail-icon
AWS CloudTrailは、AWSアカウントの運用とリスクの監査、ガバナンス、コンプライアンスを行えるように支援するAWSのサービスです。

 

AWS CloudTrailを使用すると、AWSインフラストラクチャ全体でアクティビティを記録し、モニタリング・保持できます。

 

仕組みとしては、APIのリクエストの証跡を取得することです。AWSはすべてのサービスをAPIを通じて提供していて、APIのエンドポイントに対して、リクエストを行っています。このAPIのリクエストの証跡を取得・保存しているのがAWS CloudTrailです

 

 

AWS CloudTrailが取得している証跡は以下の通りです。

 

●AWSCloudTrailが保存する証跡の種類

 

  • AWSCloudTrailがサポートするすべてのサービスのAPIイベント
  • APIリクエストによって直接トリガーされない一部のイベント
    ⇒AWSマネジメントコンソール試行、AWSフォーラム、およびさAWSサポートセンター
    ⇒すべてのIAMユーザーのサインインの試行
    ⇒AWSアカウントのルートユーザーの成功したサインイン試行

 

 

●AWS CloudTrailの証跡ログの出力先やタイミング

どれくらいの頻度で証跡を取得しているのでしょうか。
証跡ログの出力タイミングは、

 

  • ログファイルは1時間に複数回、約5分ごとに発行
  • アカウントアクティビティは通常15分位以内に配信
  • インサイトイベントは異常なアクティビティから通常30分以内にバケットに配信

 

 

証跡ログの出力先はAmazonS3バケットを基本に、AmazonCloudWatchログへの出力もサポートされています。証跡のログの保存だけではなく、他のサービスを併用してモニタリングも可能です。

 

モニタリングには有効化するだけでいいAmazonGuardDutyやCloudTrail Insightsがおすすめです。

 

 

■ハンズオン:AWS CloudTrailを使ってみましょう

AWS CloudTrailに関してまず伝えたいことは、すべてのAWSリージョンでAWSCloudTrailの証跡の有効化をしましょう、ということです。

 

トラブルシューティングをする際に、ログがないとどうしようもできないからですね。

 

そして、設定したら実際に使ってみましょう。

 

ということで、今回はAWS公式ドキュメントにあります「CloudTrailイベントのCloudWatchアラームの作成:例」から、「AWS ManagementConsoleサインインの失敗」のハンズオンをやってみます。

 

 

~構築の流れ~

aws-cloudtrail-guide-
実施する失敗検出の仕組みは以下の通りです。

 

CloudTrailで取得したログをCloudWatchログで保存し、メトリクスのフィルター機能を使って、任意のメトリクスの異常検知をCloudWatchAlarmで監視します。もし異常を検知したら、Amazon SNSから設定したメールアドレスに通知が来るようにします。

 

 

今回使用するAWSサービスは、

 

  • AWS CloudTrail
  • Amazon CloudWatch
  • Amazon Simple Notification Service(SNS)です。

 

 

1.CloudTrail証跡の作成

まずは証跡を作成します。CloudTrailのサービス画面から「証跡の作成」を押してください。
 

 

設定値は以下の通りです。

 

項目 設定値
証跡名 saitou-handson-cloudtrail
ストレージの場所 S3バケット新規作成
証跡ログバケット saitou-handson-cloudtrail-s3
CloudWatch Logs 有効化
ロググループ 新規
ロググループ名 デフォルト可(紛らわしいので名前を足しました)
IAMロール 新規
ロール名 saitou-handson-cloudtrail-iamrole

 

 

aws-cloudtrail-guide

aws-cloudtrail-guide

aws-cloudtrail-guide

aws-cloudtrail-guide

 

↓ログのイベントタイプが3種類あります。今回は“管理イベント”を選択します。

 

aws-cloudtrail-guide

 

↓最後のページは確認ページなので、問題なければ「証跡の作成」をクリックしてください。

 

aws-cloudtrail-guide
 

 

2.CloudWatchログでメトリクスフィルターを作成

次にメトリクスフィルターを作成します。CloudWatchのダッシュボード画面の左ペインから、ロググループをクリックしてください。

 

 

証跡を作成する際にロググループも一緒に新規作成しましたので、該当のロググループを押してください。

 

aws-cloudtrail-guide

aws-cloudtrail-guide

 

↓メトリクスフィルタータブから「メトリクスフィルター作成」を押してください。

 

 

作成画面で必要になるフィルターパターンは、以下の値を入力してください。

{ ($.eventName = ConsoleLogin) && ($.errorMessage = "Failed authentication") }

 

※「&&」がわからなかったので、調べてみました。

演算子 使用例 意味
&& x && y 左辺も右辺もtrueの場合にtrue(左辺かつ右辺)

 

 

その他の設定値は以下の通りです。

 

 

項目 設定値
フィルター名 ConsoleSignInFailures
メトリクス名前空間 CloudTrailMetrics
メトリクス名 ConsoleSigninFailureCount
メトリクス値 1
デフォルト値 (空白)

 

 

aws-cloudtrail-guide

aws-cloudtrail-guide

aws-cloudtrail-guide

 

 

3.CloudWatchアラームの作成

続いて、CloudWatchアラームを作成していきます。先ほど作成したメトリクスフィルターにチェックを入れ、「アラームを作成」をクリックしてください。

 

 

設定値は以下の通りです。

 

項目 設定値
メトリクス名 ConsoleSigninFailureCount
統計 合計
期間 5分
しきい値の種類 静的
いつ 以上
よりも 2
トリガー アラーム状態
次のSNSトピックを選択 既存のものでOK(私は新規作成しました)
アラーム名 Console sign-in failures
説明 Raises alarms if more than 2 console sign-in failures occur in 5 minutes

aws-cloudtrail-guide

aws-cloudtrail-guide

aws-cloudtrail-guide

aws-cloudtrail-guide

aws-cloudtrail-guide

aws-cloudtrail-guide

aws-cloudtrail-guide

 

 

※アラームの作成が完了しましたが、私はSNSトピックを新規で作成したので、認証アクションが必要です。トピックを新規作成した方は、下の画面のように“警告”が表示されているかと思います。

 

aws-cloudtrail-guide

aws-cloudtrail-guide

aws-cloudtrail-guide

aws-cloudtrail-guide

aws-cloudtrail-guide

 

警告が消えましたね。構築は以上です。

 

 

4.動作確認

構築が完了しましたので、実際にサインインの失敗が検出されて通知がくるか試してみましょう。

 

 

アラーム状態になるためには、マネージメントコンソールへのサインインを5分以内に2回失敗する必要があります。パスワードを間違えて、試してみましょう。

 

aws-cloudtrail-guide

aws-cloudtrail-guide

 

↓2回サインインに失敗したので、CloudWatchアラームを確認してみましょう。

aws-cloudtrail-guide

 

↓無事?にアラーム状態になっていることが確認できました。通知されているかも確認しましょう。設定したメールアドレスの受信トレイを見てみてください。

 

aws-cloudtrail-guide

aws-cloudtrail-guide

 

設定したアラーム名で通知が来ていますね。今回の構築検証はここまでです。

 

 

まとめ:AWS CloudTrailでIAMユーザーのサインイン失敗を検出してみる

AWSCloudTrailはセキュリティやトラブルシューティングにおいて重要なサービスだとわかりました。自分で設定することで、より細かいセキュリティを可能にしてくれそうですよね。

 

設定はAWSにお任せしたいという方には、GuardDutyやCloudTrailInsightがおすすめです。自動でモニタリングしてくれるので便利ですよ。

 

 

参考リンク:AWS公式ドキュメント【AWS Black Belt Online Seminar】AWS CloudTrail

 

 

↓ほかの協栄情報メンバーもAWS監視サービスに関する記事を公開しています。ぜひ参考にしてみてください。

 

■CloudWatch Logsのメトリクスフィルターでセキュリティイベントをチェックする(liyo)
https://cloud5.jp/cloudwatch_log_metric_filter/

 

■CloudWatchでサーバーを監視し、メトリクスの閾値を超えた時にメールで通知を受けとる。(nakaniwa)
https://cloud5.jp/cloudwatch-agent-nakaniwa/

 
■CloudWatchでWindowsサーバのポートを監視する(chin)
https://cloud5.jp/port-monitor-windows/

 
■CloudWatch Logs の利用量が急増の場合、問題ロググループを特定する方法(dapeng)
https://cloud5.jp/cloudwatch-logs-incomingbytes/

 

Last modified: 2022-10-20

Author