AWS再入門2018 AWS Config編

AWSアカウントを守るためにもぜひ有効にしておきたいAWS Configを試してみました。
2018.06.27

こんにちは。池田です。もうすぐ7月だというのに札幌はまだあまり夏らしい陽気になっていません。夏生まれながら暑いのは(寒いのもですが)得意ではないので有難いといえばありがたいのですが、大好きなビアガーデンで寒い寒いと言いながら過ごすのはちょっと寂しい気分です。

はじめに

業務では検証作業で色々なAWSリソースを利用する機会があるのですが、プライベートで所有しているAWSアカウントでは滅多に大きなサイズのEC2インスタンスなどを起動することはありません。
先日、クラウドに関するセキュリティについて色々と調べている中で「そういえば、プライベートアカウントのセキュリティってどうなっていたかな」と気になりまして、弊社の無料サービスであるinsightwatch (インサイトウォッチ)を利用してチェックしてみました。

不正利用されそうなリスクは低いことが確かめられたので安心しましたが、万が一アカウントを不正に利用され様々なリソース消費や高価なインスタンスの大量起動などをされてしまった際に、少しでも早く気付くにはどうしたら良いのかと考えました。

少しドキュメントを読んで思い出しました。そう、AWS Configを使えば良いじゃないですか。

やってみた

今回は不正利用「っぽい」振る舞いとして以下の事象が発生した場合に、どういった通知が届くのかを体験しようと思います。

  • EC2インスタンスが作成される
  • IAMユーザーが作成される

手順や概要については既に当ブログでも記事が複数公開されていますので、興味のある方はそちらをご覧ください。今回は下記の記事で紹介されている手順を参考に設定しました。

AWS Configはとりあえず有効にしよう

監視対象を決める

不正利用されるケースを想定しますので、以下の項目に変化があった場合にSNS通知をさせてみることにします(本当に必要最低限の監視ならIAM:UserとEC2:Hostくらいで良いのかもしれませんね)。AWS Configの初期設定などは前述の記事を参照してください。

  • EC2:Host
  • EC2:SecurityGroup
  • EC2:Subnet
  • EC2:VPC
  • IAM:User
  • ElasticLoadBalancingV2:LoadBalancer

新規リソースを作成する

普通にマネジメントコンソールやAWS CLIでユーザーの追加やEC2インスタンスを起動させても良いのですが、今回はたまたま別件で動作確認を取りたかったCloudFormationテンプレートがありましたので、インスタンスの作成にはそれを利用することにしました。 このテンプレートはおおよそ以下の動作をします(詳細は割愛します)。

  • 既存VPCとサブネットを利用してロードバランサを配置してAutoScaringGroupを作成
  • 異なるAZにEC2インスタンスを1台ずつ配置
  • EC2インスタンス上でWebサーバを起動

通知内容を確認

CroufFormationによりスタックの作成が完了した時には30通ほどの通知メールが届いていました(やはりちょっと通知する項目が多すぎました…)。 インスタンスの作成などによる通知がどのような内容なのか確かめることができましたので、一応、AutoScaringによるインスタンスの立ち上げをさせてみて、その通知内容も確かめておきました。確認後は忘れずにスタックを削除します。 最後に、マネジメントコンソールからテスト用のIAMユーザーを作成して、その際の通知内容も確かめてみました。

  • CloudFormationでのリソース作成に関する通知

  • EC2インスタンスが新規作成された時の通知

  • IAMユーザーが新規作成された時の通知

まとめ

ネットで時々見かける不正利用の話題で共通していると感じたのは以下のパターンが多いという事でした。

  • うっかりミスや確認漏れでアカウント情報などを含んだコードを公開してしまう
  • その情報でアカウントにログインされ、管理者権限を持つユーザーAが作成される
  • ユーザーAにより、既存ユーザーが削除され本来のアカウント所有者がログイン出来なくなる
  • その間に大きなサイズのインスタンスを大量に起動され、侵入者の好き放題に利用されてしまう

ここからは推測ですが、おそらく不正利用者は、そのアカウントの持ち主に気付かれるギリギリまで一秒でも長く何かしら悪事を働きたいはずですから、邪魔されない状況をいち早く確保したいでしょう。

そうなると、正当なユーザーを締め出してしまうだけで、他の細かな設定は無視するかもしれません。EC2インスタンス上の各OSで侵入検知の仕組みを導入していても、AWSアカウントを不正利用された時には検知できません。ですので、MFAを含めたセキュリティ対策と一緒にAWS Configのような仕組みを用意しておくことで被害を最小限に抑えられる可能性が出てくるのではないでしょうか。