4
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWSコンソールへの不正アクセスをSlackに通知する

Last updated at Posted at 2018-02-22

#この記事でやること
AWSへのアクセスキーが漏れて、xlargeインスタンスが立てられてしまったというのをちらほら聞きます。
そうなってからでは遅いので、万が一、不正なアクセスがあった場合に、一早く気づけるようにするために、不正ログインをSlackに通知するようにしておきましょう。
今回説明する仕組みは、CloudTrailに記録されているAWSコンソールへのログイン情報をCloudWatchのログに記録し、CloudWatchのアラート機能を利用し、指定IPアドレス以外からのログインを抽出、Lambaを利用してSlackの通知をするというものです。

以下の順番で説明していきます

  • CloudTrailとCloudwatchの統合
  • LambaでSlackに通知する関数を追加
  • Cloudwatchのalertを設定
  • SNSを利用して、CloudwatchのalertとLamba関数を紐付ける

#CloudTrailとCloudWatchの統合
CloudTrailに記録されるログイン情報をCloudWatchのログに記録するために、まずCloudtrailに行って、証跡を作ります。

手順は、

  1. CloudTrailの証跡情報に移動
  2. 「証跡の作成」をクリック、以下の情報を埋めていきます
    3. 証跡情報の作成>証跡名(slack-notifyなど)
    4. データイベント>S3パケット作成
    5. ストレージの場所>S3パケット(slack-strageなど)
  3. CloudTrail一覧に戻り、証跡が作成されていることを確認し、もう一度作成した証跡の詳細に移動します
    4. 右上の「ログの記録」がONになっていることを確認
    5. Cloudwatch Logs>設定で内容を確認し「次へ」をクリック、詳細を確認し、「許可」します
  4. これで、CloudTrailとCloudWatchの統合が完了です

cloudtrail.gif
cloudtrail2.gif

#LambaでSlackに通知する関数を追加
Slackに不正ログインを通知するために、Lamba関数を作成します。
その前に、下記のサイトを参考にSlackのWebhook URLを取得しておいてください。
slackのIncoming Webhookを試してみた。

それでは、早速、Lamba関数を作成していきます。

手順は、

  1. AWS Lambaに移動
  2. 「一から作成」を作成して、以下の情報を埋めて、「関数を作成」します
    3. 名前(slack-notifyなど)
    4. ランタイム(Node.jsなどお好きな言語を)
    5. ロール(既存のロールを選択)
    6. 既存のロール(先ほど作成したロールを選択します)
  3. すると詳細ページに移動するので、「関数コード」にスクリプトを記載します(こちらの方のコードが参考になります)
  4. これで、Slackに不正ログインを通知するためのLamba関数を作成が完了です

lamba.gif

CloudWatchのalertを設定

CloudWatchでAWSコンソールに不正ログインがあった際に、通知してくれるalertを作成していきます。
手順は以下です。

  1. CloudWatchのログに移動
  2. 「CloudTrailとCloudWatchの統合」で作成した、ロググループのメトリクスフィルタをクリック
  3. 「メトリクスフィルタの追加」をクリック、フィルタパターンに以下の関数を記載します(今回は指定したIPアドレス外からのアクセスを探知するため、***には限定するIPアドレスをご記載ください
{ $.responseElements.ConsoleLogin = "Success" && $.sourceIPAddress !="×××.×××.×××.×××" }

4.右下の「メトリクスの割り当て」をクリックし、必要な情報を記載したら、フィルタの作成をクリックします
5. フィルタが作成し終えたら、フィルタ詳細ページからアラームの作成します
6. これで、CloudWatchのalertを設定の完了です
alert01.png
alert02.png

#SNSを利用して、CloudwatchのalertとLamba関数を紐付ける
最後に、Amazon Simple Notification Service(SNS)を利用して、CloudWatchのalertがあった場合に、Lamba関数を実行するよう設定していきます。

手順は以下です。

  1. SNSのトピックに移動
  2. 新しいトピックを作成します
  3. トピックを作成できたら、詳細ページから、「サブスクリプションの作成」をクリックし、以下の情報を埋めていきます
    4. プロトコル(AWS Lamba)
    5. エンドポイント(Lambaに設定した関数)
  4. これで、CloudwatchのalertとLamba関数を紐付けの完了です(アラートが発生したら、Slackに通知が来ます)

sns.gif
sns-subscription.gif

#まとめ
セキュリティ関係はインシデントが起こってからでは遅いので、AWSのセキュリティベストプラクティスを読みながら、開発の最優先事項として、取り組むことをオススメします!
セキュリティのベストプラクティス

4
9
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
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?