パブリッククラウド上のセキュリティを考える ~利用者に有益な10のヒント~(前編)

パブリッククラウドサービス利用時には、サービス事業者と利用者の相互が、セキュリティの確保に責任を持ち、安全な環境を維持する必要があります。今回は、Amazon Web Services(AWS)の共有責任モデルをベースに、利用者が行うべきパブリッククラウドサービス上のセキュリティ対策について、10 の役立つヒントを紹介します。

2012年11月、AWS の国際カンファレンス「re:invent」にて、Max Ramsay氏が AWS のセキュリティを CSIS20(サイバーディフェンスのための 20の重大なセキュリティコントロール)をフレームワークとしてマッピングした解説を行いました。この解説を参考にすることで、サービス事業者と利用者の相互で確保すべきパブリッククラウド上のセキュリティをより深く理解することができます。

本ブログ記事では、上記の解説や我々がAWS上で実際にセキュリティシステムを構築、運用した際の経験を踏まえ、利用者側で対処すべき実践的なセキュリティの対策ポイントとなる 10のヒントを前編、後編の 2回に分けて取り上げます。

#1 特権アカウントの管理があなたの重要データを守るのに役立つ
#2 パスワードポリシーと多要素認証に注目
#3 セキュアな AMI(Amazon Machine Image)構築のススメ
#4 ゲストOS を守るために必要な3つのアクションの実践方法
#5 ファイアウォールによる保護は、多階層、多段のアプローチで
#6 ホスト型IPSはあなたのアプリケーションを守る正義の味方
#7 システムの継続的な監視は、重要なセキュリティ戦略の一つ
#8 データセキュリティは暗号化で実現
#9 脆弱性管理の第一歩はアセスメントから
#10 ペンテストを実施する時におさえておきたいこと

■#1:特権アカウントの管理があなたの重要データを守るのに役立つ
仮想化やクラウド以前の環境では、各OS上の特権(root や Administrator)アカウントが最重要の管理対象でした。仮想化やクラウド環境では、管理対象の全インスタンスに対してフルアクセス権限を持つ、サービス全体の管理者アカウントがより重要なコントロール対象となります。AWS上では、AWS のマネジメントコンソールおよび各種API にアクセスできるAWS上の管理者(root)アカウントを指します。まずは、AWS上のフルアクセス権限を持つアカウントの利用をやめましょう。その代わりに、IAM(AWS Identity and Access Management)機能を使って、最低 2つのタイプのアカウントを作るところからはじめます。

 ・ 実際に AWSマネジメントコンソールにアクセスする個々のユーザ単位で作ったアカウント
 ・ API にアクセスするためにプログラムが利用する専用アカウント

どちらの場合も、該当のアカウントには、そのアカウントが実施する業務やタスクに応じ最低限必要なアクセス権のみをグループ経由で付与することで、適切な管理(監査を含む)、運用を実現することができるでしょう。万一、アカウントが侵害された場合も、被害の範囲を最小限に抑えることができます。

■#2:パスワードポリシーと多要素認証に注目
重要なアカウントに対して、パスワードの複雑性を保つことや適切な頻度で変更を行うことの重要性は、みなさんの中でも既知の事実でしょう。CSIS20 の「CC12:管理者権限のコントロールされた使用」内においても、管理者アカウントは長くて推測されにくいものを設定し、頻繁に変更することが推奨されています。前述した IAM機能では、パスワードの複雑性についてのポリシー強制機能が提供されています。

最重要アカウントの管理には、ログイン時のユーザID とパスワードにもう一つの認証要素を組み合わせた多要素認証の利用も検討しましょう。ワンタイムパスワードのトークンやスマートカード、生体認証などがそれにあたります。AWS では、マネジメントコンソールへのログイン時やサービス、リソースへのアクセス時に第三の認証要素である数値を表示させる MFA(Multi Factor Authentication、多要素認証)デバイスが提供されています。より強固な管理という意味では、アカウントを保持する人物と MFAデバイスを保持する人物を分けて運用することを検討してもよいでしょう。

■#3:セキュアな AMI(Amazon Machine Image)構築のススメ
AMI は、AWS上でインスタンスを構成する際にベースとなるマシンイメージ(テンプレート)です。このマシンイメージは、利用者自身で一から構築したり、コミュニティや AWS内のマーケットプレースから入手することができます。AMI は、OS のみインストールされた状態のものもあれば、いわゆる LAMP環境まで構築済みのもの、もしくは利用するアプリケーションが完全にインストール済みのものなど、さまざまな構築状態で保持することができます。仮想化やクラウド環境において、インスタンスのコピー元となるテンプレートでは、セキュアな環境を維持することが必須です。ここでは、セキュアな AMI を構築する上で必要なセキュリティ上の重要な 3ステップを確認します。

  1. 信頼出来るベースのイメージを利用して構築を始める
    最初の、そして最も重要なステップです。Amazonから公式提供されているものはもちろん、信頼出来るコミュニティやマーケットプレースを選別した上で、ベースのイメージを入手すべきです。
  2. サービスやOSの初期設定をチェックし、セキュアな状態に更新する
    デフォルトパスワードの変更や、利用しないサービスの停止、rootのリモートログイン禁止など、不要なオプションやデフォルトの設定に注意を払うべきです。
  3. 複数展開されることを前提に構築する
    Windows環境であれば、Sysprep を用いれば、環境毎の固有設定を容易に守ることができるでしょう。Linux環境の場合は、SSH認証部分などいくつか追加のセットアップが必要です。

もしくは、AMI を全く使わずに一からインスタンスを構成するという選択肢もあります。AMI のテンプレートを使うよりも、構築に時間がかかりますが、常に最新のソフトウェアを使って構成できるという、セキュリティ上の大きなメリットがあります。

■#4: ゲストOSを守るために必要な3つのアクションの実践方法
ここでは、「AWS Secuirty Best Practices」で紹介されている3つの推奨事項を実践するためのポイントを解説します。ゲストOSをセキュアな状態で維持するには、これらの推奨事項を継続して実施することが、非常に重要です。

  1. パッチを安全に適用してゲストOSを最新の状態に保つこと
    IT運用において当たり前の話ですが、ゲストOSは可能な限り短いタイムラグで最新パッチが適用されている状態に保つ必要があります。仮想化やクラウド環境ならば、本番環境と同じテンプレート(AWSであればAMI)で展開用の環境を新たに構築し、そこにパッチを適用してテストを実施します。問題がなければその環境を新たなAMIとして保持し、本番環境でアプリケーションが停止できるタイミングでの置き換えを計画しましょう。正規のパッチを適用するまでのタイムラグを補完するための仮想パッチの活用も有効な対処策の一つです。
  2. 推奨セキュリティ設定を適用すること
    OSや各種サービスベンダが公開している推奨設定のリストを参照すると同時に、それらの設定に対する評価の高い調査結果も参照すべきです。両者の情報をあわせた上で、自身のアプリケーションにおける要求事項を満たせることを確認しましょう。特に最小限の特権付与や、本当に必要なサービスしか起動させないという大原則は忘れないことです。OSや主要なサービスで推奨されるべき設定を自動展開できるツールの利用も検討しましょう。
  3. テストを繰り返し、設定やオペレーションの不備による脆弱性を解消すること
    セキュリティ上の脆弱性につながる設定ミスやオペレーションミスなどの不備を防ぐためには、システムに変更を加える度に、意図した範囲外への影響がないかをテストすることが必要です。AWS上のリソースは、全てAPI経由でのアクセスが可能なため、これらのテストを自動化することができるでしょう。インスタンスの展開状況の確認、パッチの適用状態の確認、セキュリティ設定の適用状況の確認といったテストを自動化することで、テストを省力化し、繰り返し実行できるようになります。単純なテストであっても、設定変更の度、変更箇所以外への影響が無いことを確認するのは、セキュリティの強化に役立ちます。

■#5:ファイアウォールによる保護は、多階層、多段のアプローチで
もっともシンプルで強力な対策であるファイアウォールについて言及します。AWS上では、セキュリティグループの指定によりポートを制御します。また、ホワイトリスト型で明示的に IPまたは CIDR単位にポート/プロトコルを許可します。これにより、例えば、一般的な Web の三層構造のアプリケーションの場合、インターネットに接するWebサーバでは、80 または 443ポートでのアクセスのみを受け付ける。アプリケーションサーバであれば、Webサーバからの通信と、運用セグメントからの SSH でのアクセスのみを許可する。DBサーバであれば、アプリケーションサーバからの通信とオンプレミス環境の DB との同期を行うアプリケーションのポートのみのアクセスを実現するといった階層ごとに異なる設定を実装できます。またこのような多階層でのファイアウォール機能をテンプレート化して容易に実装することができる点もメリットの一つです。

また、AWS のファイアウォール機能は、インスタンスの外側で構成され、かつ AWS の認証情報に基づいて制御されています。万が一、インスタンス内のゲストOS が侵害されるようなことがあってもこれらの基本的なファイアウォール機能は影響を受けずに機能します。

AWSの 「Overview of Security Processes」では、これらに加えて、ホスト型(インスタンス単位)ファイアウォールでのフィルタ機能の実装についても推奨しています。このフィルタ機能は、以下のような場合に役立つことが想定されます。また、万が一、インスタンス外で実装されているファイアウォールのポリシーが侵害されるようなことがあった場合に、多段のファイアウォールとして、補完的な役割を果たすことができるでしょう。

 ・ アウトバウンドの制御
   望まない外部への通信(例.不正プログラムによる C&Cサーバへの通信など)をホスト単位
   で制御することが可能になります。
 ・ よりきめ細かいポリシーの設定
   ホスト型のファイアウォールは、ステートフルインスペクション機能を使った動的プロトコル
   の処理や、SSH や RDP でアクセスする接続先IPリストの保持などより細かなポリシーの
   設定を実現できます。
 ・ ログの取得
   AWS側で実装されているファイアウォールでは、どのトラフィックがブロックされたかの
   確認はできません。ホスト型のファイアウォールを実装することで、これらのトラフィック
   をログとして記録し、可視化することができます。

次回は、後編#6~#10のヒントについて、引き続き解説します。

トレンドマイクロのクラウドセキュリティソリューションは、これらの対策の一助となります。詳細については、各ソリューションページを参照ください。

  • サーバ向け総合セキュリティ製品「Trend Micro Deep Security(トレンドマイクロ ディープセキュリティ)」(以下表中、DS)
  • クラウド向けデータ保護ソリューション「Trend Micro SecureCloud」(以下表中、SC)
  •     DS SC
    #1 特権アカウントの管理があなたの重要データを守るのに役立つ    
    #2 パスワードポリシーと多要素認証に注目    
    #3 セキュアな AMI(Amazon Machine Image)構築のススメ    
    #4 ゲストOS を守るために必要な3つのアクションの実践方法  
    #5 ファイアウォールによる保護は、多階層、多段のアプローチで  
    #6 ホスト型IPSはあなたのアプリケーションを守る正義の味方  
    #7 システムの継続的な監視は、重要なセキュリティ戦略の一つ  
    #8 データセキュリティは暗号化で実現  
    #9 脆弱性管理の第一歩はアセスメントから  
    #10 ペンテストを実施する時におさえておきたいこと    

    Trend Micro Deep Security、Trend Micro SecureCloud の実装、運用、およびセキュリティアセスメントについてのコンサルティングサービスを「Trend Micro Professional Services」として提供しています。

    参考記事:

  • Top 10 AWS Security Tips: #1 Using IAM To Protect Your Resources
      http://cloud.trendmicro.com/protecting-your-resources-with-aws-identity-and-access-management/
  • Top 10 AWS Security Tips: #2 Password Policies and Multi-Factor Authentication
      http://cloud.trendmicro.com/top-10-aws-security-tips-2-password-policies-and-multi-factor-authentication/
  • Top 10 AWS Security Tips: #3 Build a Secure Base Amazon Machine Image (AMI)
      http://cloud.trendmicro.com/top-10-aws-security-tips-3-build-a-secure-base-amazon-machine-image-ami/
  • Top 10 AWS Security Tips: #4 Protecting Guest Operating Systems
      http://cloud.trendmicro.com/top-10-aws-security-tips-4-protecting-guest-operating-systems/
  • Top 10 AWS Security Tips: #5 Create Restrictive Firewall Policies
      http://cloud.trendmicro.com/top-10-aws-security-tips-5-create-restrictive-firewall-policies/
  • Top 10 AWS Security Tips: #6 Secure Your Applications Using a Host-Based Intrusion Prevention System
      http://cloud.trendmicro.com/top-10-aws-security-tips-6-secure-your-applications-using-a-host-based-intrusion-prevention-system/
  • Top 10 AWS Security Tips: #7 Monitor Your Instances
      http://cloud.trendmicro.com/top-10-aws-security-tips-7-monitor/
  • Top 10 AWS Security Tips: #8 Encrypt Sensitive Data
      http://cloud.trendmicro.com/top-10-aws-security-tips-8-encrypt-sensitive-data/
  • Top 10 AWS Security Tips: #9 Conduct Vulnerability Assessments
      http://cloud.trendmicro.com/top-10-aws-security-tips-9-conduct-vulnerability-assessments/
  • Top 10 AWS Security Tips: #10 Penetration Testing
      http://cloud.trendmicro.com/top-10-aws-security-tips-10-penetration-testing/

      by Justin Foster(Senior Architect)and Mark Nunnikhoven(Senior Analyst)