見出し画像

AWS CloudTrail+CloudWatchでユーザのログインを監視してみた

こんにちは。アイシーティーリンクの廣田です。
最近お客様とAWSのセキュリティについてお話ししていました。
その時に、ユーザのログインの試行回数とか失敗率を監視しておけば不正アクセスを検知できるのでは?ということになり、じゃあやってみようということで色々触ってみました。
今回は、その時の話をざっくり書いていこうと思います。

1.CloudTrailの有効化

IAMユーザのログインはCloudTrailがログを取ってくれますので、とりあえずポチポチと有効化します。
この時に、「CloudWatch Logs」のオプションを有効化しておく必要があります。

CloudTrailの設定画面

2.CloudWatch Logsのメトリクスフィルターの作成

CloudTrailから出力されているログには様々な情報が入っているため、必要な情報だけ抜き出します。
作成後の画面はこんな感じです。

CloudWatch Logsの設定画面

ログイン試行回数を数えるのは「ConsoleSignIn」の方です。
フィルターパターンを以下のように設定すればOKです。

{$.eventName = ConsoleLogin}

ログイン失敗回数を数えるのは「ConsoleSignInFailures」の方です。
先ほどと異なり、フィルターパターンは以下となります。

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

Metricはこの後に監視設定する時に出てきますので、分かりやすい名前を付けましょう。

3.CloudWatchのアラームの設定

最後に、CloudWatchのアラームを設定します。
アラームの作成画面の「カスタム名前空間」内に、先ほど作成したメトリクスがあります。

CloudWatchアラームの設定画面

5分以内のログイン試行回数が10回より多い場合、アラーム状態にする設定はこちらです。

ログイン試行回数アラームの設定画面

5分以内のログインの失敗率が5%より多い場合、アラーム状態にする設定はこちらです。
作成したメトリクス2種類(ログイン試行回数、ログイン失敗回数)を選択して数式で計算してログイン失敗率を監視しています。

ログイン失敗率アラームの設定画面

このようにして、ログインの試行回数や失敗率を監視することができました。
ただし、こちらのロジックではログインしようとして1回失敗→次にログイン成功した場合の失敗率は50%となってしまい、不正なアクセスではないのに検知されてしまいます。そのため、試行回数と失敗率を組み合わせて監視することになるのですが、それは次回にでも書こうと思います。
では、今回はこの辺で。


この記事が気に入ったらサポートをしてみませんか?