このページの本文へ

知っておきたいクラウドのリスクとセキュリティ 第5回

VMwareのセキュリティ機能を知ろう!

クラウドを支える「サーバー仮想化」のセキュリティとは?

2010年12月09日 06時00分更新

文● 八田真成/ネットワールド

  • この記事をはてなブックマークに追加
  • 本文印刷

仮想ネットワークのセキュリティ

 サーバー仮想化ソフトウェアでは、1台のハードウェア(ホスト)に複数の仮想マシンを動作させる。そのため、ネットワーク機能として、仮想マシン同士や外部ネットワークなどをつなぐ「仮想的なブリッジ」や「仮想スイッチ」を実装しているのが一般的だ。VMware ESX/ESXiでは「vSwitch」と呼ばれる仮想レイヤ2スイッチを実装している。

図5 vSwitchの考え方

 vSwitchでは、自身宛以外の通信も受信する「プロミスキャスモード(Promiscuous Mode、無差別モード)」はデフォルトで無効になっているが、VLAN単位で有効に設定可能だ。一方、特定のポートの通信内容を別のポートにコピーする「ミラーポート」については、明示的な設定は行なえない。

 ハイパーバイザーは、多くの場合、同時に複数のセグメントとの通信が求められる。具体的には、管理OSは「管理LAN」に、仮想マシン(ゲストOS)は「サービスLAN」に、ハイパーバイザー本体は「iSCSI LAN」や「ハートビート用LAN」などへの通信が必要となるケースがある。また、複数のテナント向けにサービスを提供する場合は、テナントの数だけ「サービスLAN」や「バックアップLAN」が必要となるケースもあり得る。これらのネットワーク要件を満たすために、複数のvSwitchをハイパーバイザー内に構成するケースが出てくるのだ。

 本来であれば、vSwitchの数だけアップリンク(上位スイッチとの接続)があるのが理想だが、テナントの数だけNICのポートを用意するのは非現実的だ。そのため、上位スイッチ側でタグVLANを構成して、複数のタグVLANをトランクポートに集約する形がとられる。これにより、レイヤ2レベルでの独立性を確保した上で、1つのアップリンクに複数テナントのトラフィックを乗せることができる。加えて、複数のアップリンクで冗長化を図る形態が一般的である。

 このvSwitchは、それぞれが独立したレイヤ2スイッチとして動作する。そのため、あるvSwitchに接続された仮想マシンが、直接に別のvSwitch(もしくは別のVLAN)にアクセスすることはできない。たとえば、DMZで動作する仮想マシンとLANで動作する仮想マシンを、1台のハイパーバイザー上で動作させても、vSwitch(VLAN)さえ適切に構成されていれば、異なるテナントの通信が混じるといった問題は生じない。

 ただし、VLANでレイヤ2レベルでのセキュリティが確保されていたとしても、他のVLANと「帯域を共有」していることには留意しておこう。たとえば、VMware ESX/ESXiの標準的なvSwitchでは、帯域制御が可能なのはvSwitch(またはVLAN)から外部への送信トラフィックのみだ。こうした点には、注意が必要だろう。

分散仮想スイッチ(dvSwitch)の活用

 従来型のvSwitchには、いくつかの構造上の限界が存在する。たとえば、複数のユーザーがハイパーバイザーを共有する場合、最低でもユーザーごとにVLANを分ける必要があるが、これだけでは仮想マシン単位での帯域制御ができない。標準的なvSwitchでは内部ポートの概念が隠ぺいされているため、ポート単位で帯域制御などができないのだ。

 こうしたことから、最近では「分散仮想スイッチ」(dvSwitch)と呼ばれる機能も登場している。dvSwitchは、複数のハイパーバイザーにまたがって存在する仮想的なレイヤ2スイッチのインスタンスで、帯域制御の設定や統計情報などを一元管理できる(図6)。VMwareの場合、dvSwitchは従来型のvSwitchとは異なり、内部ポートの情報が閲覧可能で、個別に帯域制御やポートブロックなどの設定も可能だ。

図6 複数のハイパーバイザーにまたがって動作するdvSwitchの仕組み

 また、VMwareの分散仮想スイッチには、プライベートVLAN(PVLAN)を実装する機能もある。PVLANは、VLANの内部でサブネットを分割することなく、セキュリティレベルに応じて通信を制限する機能だ。たとえば、PCとゲートウェイは通信可能で、PCと他のPCは通信させない、といった制御がdvSwitchで実現できる。

Ethernet以外によるゲストOSへのアクセスとそのセキュリティ

 一般論として、ホストOS(ハイパーバイザーおよび管理OS)は仮想マシンという枠組みは提供するが、仮想マシンの中で動作するゲストOSに対しては関与を行なわない。これまで見てきたように、外部からゲストOSを制御したい場合は、そのゲストOSに対してEthernetレベルで通信できる必要がある。逆にいえば、Ethernetレベルで到達できない構成にしてしまえば、その仮想マシン(ゲストOS)はホストOSからであっても攻撃を受けることはない。

 ただし、VMware ESX/ESXiの場合は、いくつか例外的な手法が存在する。1つは、VMware Toolsを使用する方法だ。VMware ToolsとホストOSは、一種のプロセス間通信を行なう。

 VMware Toolsは、ゲストOS用に最適化されたデバイスドライバなどの集合体だが、ほかにもホストOSへのハートビート送信やゲストOSのシャットダウン/再起動などの機能を持つ。ホストOSとゲストOSの間にEthernetレベルでの接続が存在しないと、シャットダウン命令などを送ることができない。このため、ゲストOS内にVMware Toolsをインストールし、Ethernetを介さずにホストOSと通信を行なえるようにするのだ(図7)。このチャネルを応用して、ゲストOSにファイルをコピーする実装も存在する。VMware Workstationに実装されているフォルダ共有機能などだ。

図7 VMware ToolsによるゲストOSのシャットダウン

 2つ目が、前述のVMsafe APIを使用する方法だ。VMsafe APIは大別すると「vCompute API」「vNetwork Appliance API」「VDDK API」に分類できるが、これらのAPI群を悪用(駆使)できるとすると、ゲストOS内の情報をかすめ取ることも可能となってしまう。そのためもあってか、VDDK API以外のAPIは原則非公開で、ヴイエムウェアとアライアンスを組んだパートナー企業のみに限定的に公開されている。

 3つ目が、VMCI(Virtual Machine Communication Interface)を使用する方法となる。VMCIは仮想マシン間、または仮想マシンとホストOSの間のソケット通信インターフェイスだ。これにより、仮想ネットワーク(Ethernet)レイヤを経由することなく、より高速な通信が可能となる。VMware ESX/ESXi 4.xのデフォルト設定では仮想マシン間通信は無効だが、仮想マシンとホストOS間の通信はつねに有効になっている。

 以上のように、ホストOSとゲストOSの間の通信はEthernet以外にも存在するが、現時点ではこれらの手法を悪用した攻撃例は報告されていない。ただし、Windows用のVMware ToolsにおいてDLLのハンドリングに問題があり、攻撃者がマルウェアを植え付けられる脆弱性が見つかった例がある。そのため、必要に応じてVMware Toolsをアップデートする心構えは必要だ

 扱いようによってはセキュリティホールともなり得るVMsafe API群だが、本来のコンセプトに則った、仮想マシンのセキュリティを高めるための製品も増えている。ヴイエムウェア自体からも「vShield Family」と呼ばれる製品群がリリースされている。

 vShield Familyには、以前から提供されていたブリッジ型ファイアウォールの「vShield Zones」のほかに、その上位版で仮想NIC間のトラフィック監視などもできる「vShield App」、アンチウイルスエンジンをオフロード化する「vShield Endpoint」、VPNやNATの機能を持つ仮想ファイアウォールアプライアンスともいえる「vShield Edge」などの製品がラインナップされている(図8・9)。

図8 vShield Familyを使用しないネットワーク構成例

図9 vShield Familyを使用したネットワーク構成例

(次ページ、「バーチャルアプライアンスの活用」に続く)


 

カテゴリートップへ

この連載の記事