最近家の周りにはクワガタやカブトムシがごく自然に生息している事に気がついた小室@福岡です。
AWSからEC2インスタンスを起動する時に、
- Amazonが出しているAMI
- 企業が出しているAMI
- コミュニティが出しているAMI
- 自分で作成したAMI
から選ぶと思います。同じように見えて実は違うこれらのAMI。
セキュリティを高める為にはどのように使い分けるべきなのでしょうか?
今回頻繁に利用するけれど実際のセキュリティに関しては蔑ろにされがちな、AMIの使い方について注意すべき点を調べましたので、お知らせします!
※今回は無償のLinux系のAMIを想定していますので、Windows/Redhat、AWS Marketplace(有償イメージ)等のAMIは除きます
Amazon提供、企業提供のイメージ
Amazon、企業が出しているイメージを選ぶ理由は何があるでしょうか?
まず一番大きな理由として、そのイメージが動く事が保証されている、という事が上げられます。
また企業のサポートが受けやすい(動かない場合問い合わせが出来る)という事も選択の一つとしてあります。
Amazonが出している公式AMI ( Amazon Linux AMI ) は、CentOS/RedHat互換のAmazon EC2に最適化されたイメージです。
( 参考 : Amazon Linux AMI 2012.03(現時点での最新版) )
また有名な所で言うとRightScaleが提供しているRightImageがあります。
参考URL
Ubuntuを開発しているCanonical社が提供しているAMIもあります(有償サポートあり)( 参考: Ubuntu cloud images)
その他にもクラウド管理ツールを提供している会社は、大体独自のイメージを提供しており、管理ツール + 最適化されたイメージを両方セットで使えるようにしています。気になる会社からイメージを調べて利用するのもよいかもしれません。
コミュニティが出しているAMI
コミュニティで公開されているイメージは、色々なOSや、ミドルウェア、アプリが搭載された物が日々公開されていますが、これらを使う際に何を気をつけたらよいのでしょうか?
ありがたい事に多くの企業や個人が他ユーザーに役に立つよう色々なイメージを提供してくれていますが、これらはあくまでもユーザーが公開出来る状態だからそうしているのであって、そこに動く保証やセキュリティの保証はついてきません。
ほとんどは問題ないイメージだとは思いますが、中には悪意があるユーザーが不正なアプリを仕込んだイメージを公開している可能性も否定出来ないという事を知っておく必要はあると思います。
コミュニティAMIを選択する際に気をつけるべき事として「Safe Use of Shared AMIs 」として注意ページがありますので、そちらを参考にしながら利用方法リストを作成してみましょう。
- AMIsから起動させるのは自分のリスクで行なう
- Amazonは他のEC2ユーザーがシェアしたAMIの保全やセキュリティを保証しない
- 信用するウェブサイト、ユーザーからAMI IDを取得し使う
- AMIの出所が不明な場合は、フォーラムを検索、投稿をして聞いてみる
-
Amazonが提供している公開イメージはユーザーIDにamazonと表示されているので確認する
( 起動したEC2から新しいイメージを作成した際は、元のアカウント名を引き継ぐ事は出来ません(例えば企業提供のAMIから別のAMIを作っても企業アカウント名として成り代わる事が出来ない))
- SSH許可鍵のファイルを確認(起動時に選択した鍵のみがアクセス可能か確認)
- 空いているポートや起動しているサービスの確認
- 起動時にパスワードがランダムに発行されていなかったら、ルートのパスワードを変更する
- SSHでルートでのパスワードログインが出来るかどうか確認(通常は鍵式のログイン)
- 他のアカウントでログインが出来るかどうか調べる。スーパー権限を持っていないか特に確認
- CRONジョブに不正な物がないか確認
参考URL
- セキュリティを意識したAWS使用法 by @ar1さん
- Safe Use of Shared AMIs ( AWS Doc )
もちろん選択する際のセキュリティに気をつけるべきですが、イメージを公開する際に気をつける必要もあります( 参考: AMI公開時のセキュリティマナー TecTec Cloud by @SyotaroYさん)
まとめ
性善説でどのイメージも問題ないとは思いたい所ですが、OSから上のレベルのリスク、責任は利用するユーザーが負う必要が有る、という事をユーザー自信がしっかりと認識し、トラブル無くイメージを使う事が大事だと思いました。
Amazon Linuxしか使わない!というのもよいかもしれませんが、個々のOSならではの機能や、パッケージ等あるので、セキュリティに注意しつつ、より良くEC2を使って行きたいですね!