AWS管理コンソールの不正ログインをCloudTrail と CloudWatch Logsで検知する

124件のシェア(ちょっぴり話題の記事)

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

はじめに

高橋です。

最近セキュリティについての意識が高くなってきていますね。
AWS管理コンソールへの不正ログインも心配事のひとつです。
またAWS管理コンソールへのログインは現状IP制限をすることができません。
下記ブログでは閲覧や操作が一切できない状態にする方法が紹介されています。

AWS管理コンソールへのアクセスをIPアドレスで制限したい | Developers.IO

今回は違ったアプローチでAWS管理コンソールに不正ログインがあった場合に
CloudTrailとCloudWatch Logsを使って検知する方法を試してみました。
※特定のIP以外からログインがあった場合にCloudWatchでアラームを飛ばします。

■参考URL
[新機能]CloudTrailでサインインが記録出来るようになった | Developers.IO
CloudTrailとCloudWatch Logsの連携によるログのアラーム設定 | Developers.IO

どうやって検知するのか

CloudTrail と CloudWatch Logs の統合を使って設定していきます。
またCloudTrailの画面を見たところ東京リージョンでもサポートされたようです。
※検証した時は使用できなかったのですがいつの間に...

Q: CloudTrail と CloudWatch Logs の統合とは何ですか?
CloudTrail を CloudWatch Logs と統合すると、CloudTrail が取得した API アクティビティが、指定した CloudWatch Logs ロググループの CloudWatch Logs ログストリームに送られます。

CloudWatch Logsログストリームに送られたログに対しフィルターをかけてアラームを飛ばします。

それではやっていきましょう。

CloudTrailの設定

CloudTrailの管理画面から設定していきます。

CloudTrail Configurationの設定

skitch

LoggingをONにする
S3バケットを作成する
Save

こちらの画面からS3バケットやSNSトピックが作成できるのは簡単でいいですね。

skitch

 

log groupを作成します。
CloudWatchのLogsのこのグループにCloudTrailのログが入ってきます。

skitch

IAMロールの設定です。CloudTrailのログをCloudWatchのLogsに書き込むことができます。

skitch

Additional ConfigurationのInclude global servicesはYesのまま
これはIAMやAWS管理コンソールへのログインなどグローバルサービスからのAPIコールを記録したい場合にYesにします。

これでCloudTrailの設定は完了です。

CloudWatchの設定

CloudTrailの設定が終わるとCloudWatchのLogsに先ほど作成したlog group名ができています。

skitch

ログが記録されているか確認してみましょう。

skitch

ログが記録されたことが確認できたら今回の本題
AWS管理コンソールログインで特定のIP以外からログインがあったらアラーム設定を行っていきます。

フィルターを設定する

skitch

AWS管理コンソールログインで特定のIP以外からログインがあるかを確認するので下記のようなフィルターを設定します。

skitch

 

Filter Patternに下記フィルターを入れます。

 { $.responseElements.ConsoleLogin = "Success" && $.sourceIPAddress !="***.***.***.***" } 

 

また今回の目的とは変わりますが下記のようにフィルター設定することでMFA対応していないユーザがログインしたら検知することも可能です。

 { $.responseElements.ConsoleLogin = "Success" && $.additionalEventData.MFAUsed = “No" } 

skitch

Metric Nameを入力して「Create Filter」をクリックして完了です。

 

skitch

アラームの設定

skitch

今回は1回でも検知したらEmailにアラームを飛ばすように設定しています。

設定したEmailアドレスに下記メールが来ますので「Confirm subscription」をクリックしてメールを受けとるよにしてください。

To confirm this subscription, click or visit the link below (If this was in error no action is necessary):
Confirm subscription

Please do not reply directly to this e-mail. If you wish to remove yourself from receiving all future SNS subscription confirmation requests please send email to sns-opt-out

skitch

View Alarmをクリックして設定は完了です。

skitch

実際に違うIPでログインしてアラームを検知するか確認してみます。

skitch

ちゃんとアラームを検知しましたね。

まとめ

AWS管理コンソールへの不正ログインを検知する方法を紹介しましたが
IAMユーザのMFA設定は確実に行っておきましょう!

今後はCloudTrailやCloudWatchLogsの統合を使用する機会が増えそうです。