JP2010026572A - 仮想計算機の現出方法、この方法を実行するためのプログラム、及びこの方法を実行するサーバ - Google Patents
仮想計算機の現出方法、この方法を実行するためのプログラム、及びこの方法を実行するサーバ Download PDFInfo
- Publication number
- JP2010026572A JP2010026572A JP2008183697A JP2008183697A JP2010026572A JP 2010026572 A JP2010026572 A JP 2010026572A JP 2008183697 A JP2008183697 A JP 2008183697A JP 2008183697 A JP2008183697 A JP 2008183697A JP 2010026572 A JP2010026572 A JP 2010026572A
- Authority
- JP
- Japan
- Prior art keywords
- port
- virtual machine
- packet
- proxy
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】サーバ上で、サーバプログラム及びAPプログラムを動作させつつ、サーバプログラムを、APyプログラムを介した側面攻撃から保護する。
【解決手段】サーバ100上に第一のVM121aを現出させ、第一のVM121a上で、OSプログラム、サーバプログラムであるAPxプログラム、APyプログラムを起動させ、第一のVM121aをコピーして、サーバ100上に、OSプロセス124b、APxプロセス122b及びAPyプロセス123bを含む第二のVM121bを現出させる。第1のVM121a上のAPyプロセス123aを稼動不能にし、第二のVM121b上のAPxプロセス122bを稼動不能にする。外部記憶装置210a,210b中のAPx用ファイル210aには、第一のVM121aからのアクセスを認め、第二のVM121bからのアクセスを認めない。
【選択図】図2
【解決手段】サーバ100上に第一のVM121aを現出させ、第一のVM121a上で、OSプログラム、サーバプログラムであるAPxプログラム、APyプログラムを起動させ、第一のVM121aをコピーして、サーバ100上に、OSプロセス124b、APxプロセス122b及びAPyプロセス123bを含む第二のVM121bを現出させる。第1のVM121a上のAPyプロセス123aを稼動不能にし、第二のVM121b上のAPxプロセス122bを稼動不能にする。外部記憶装置210a,210b中のAPx用ファイル210aには、第一のVM121aからのアクセスを認め、第二のVM121bからのアクセスを認めない。
【選択図】図2
Description
本発明は、複数のアプリケーションプログラムを実行するため、計算機上に仮想計算機を現出させ、該複数のアプリケーションプログラムのうちの特定のアプリケーションプログラム及びそのファイル資源を保護する技術に関する。
関する。
関する。
コンピュータには、その適用環境に応じて、様々なセキュリティ上の課題が存在する。サーバと呼ばれるコンピュータは、このコンピュータを用いる組織の業務遂行のために最も重要な機能・サービスを提供する。このようなサーバコンピュータには、アクセスする情報も重要性の高いものが多く、そのため、セキュリティに関する要求も高い。
サーバにおけるセキュリティ上の目標は、サーバのサービス機能そのものの保護、及びサービスを実現するソフトウエアであるサーバプログラムが取り扱う情報の保護である。これらの目標を阻害する脅威としては、サーバプログラム自身の脆弱性、サーバ上で同時に稼動するサーバプログラム以外のソフトウエアの脆弱性、及びサーバの運用に関する脆弱性がある。
サーバプログラムの一般的な動作は、ユーザからのサービスリクエストに対する、その内容に応じた処理の実行と、処理結果に応じたレスポンスと、である。リクエストは、ネットワークを介して、通信によってもたらされるのが普通である。ユーザは、不特定多数の場合も含めて、あらかじめ定義されており、セキュリティポリシによっては、特定のリクエストは、特定の資格を有するユーザのみに許される、ということもある。これを実現するために、サーバプログラムは、ユーザ認証を行い、適切なアクセス制御を実施することがある。
ユーザ認証やアクセス制御に欠陥があれば、もちろん、それは、サーバプログラムの脆弱性である。また、サーバプログラムの実装上の欠陥(バグ)による脆弱性もある。バッファオーバフローと呼ばれる欠陥は、しばしば発生し、不正なサーバ侵入のような重大な事故につながる危険な脆弱性としてよく知られている。
ところで、サーバコンピュータ上では、サーバプログラム以外のプログラムも同時に走行していることが多い。例えば、あるサーバプログラムが稼動しているサーバコンピュータ上で、他のサービスを実現するためのプログラムが稼動していることがある。この他のプログラムも、ネットワークを介してリクエストを受け付けている場合、この他のプログラムに脆弱性があれば、この他のプログラムも、サーバプログラムと同様に、不正なサーバ侵入の危険にさらされることになる。この他のプログラムの脆弱性のためにサーバ侵入されると、サーバプログラムが攻撃されたり、サーバプログラムが使用するファイルなどの資源に不正にアクセスされたりする事態が生じる虞がある。これは、決してまれに生ずる事態ではなく、サーバにおいてしばしば発生する、不正アクセスの代表的なシナリオとされている。
このような側面攻撃、すなわち、サーバプログラムの正式のインタフェースを使用しない攻撃に対しては、サーバプログラムが自ら実施する認証やアクセス制御などの様々なセキュリティ対策は無効である。
このような脅威を回避するために、例えば、状況はやや異なるが、以下の非特許文献1に開示されている「サーバでは不要なプログラムは極力動かさない」という、システム運用上のノウハウが知られている。
なお、以上のサーバプログラムのセキュリティ技術とは異なるが、本願の発明に関連する技術として、以下の特許文献1には、あるコンピュータ上に現出されている仮想計算機(以下、VMとする)を他のコンピュータに移すVMマイグレーション技術が示されている。
しかしながら、上記非特許文献1に記載の技術では、サーバコンピュータ上で、サーバプログラムを除くアプリケーションプログラムの動作が極めて制限され、サーバコンピュータの利用価値を高めることができない、という問題点がある。また、上記非特許文献1に記載の技術を実際に実行することは極めて困難であるという問題点もある。
そこで、本発明は、以上の従来技術の問題点に着目し、保護の必要性の高いアプリケーションプログラムと共に、他のアプリケーションプログラムを同一コンピュータ上で動作させつつも、コンピュータのセキュリティを高めることができる技術を提供することを目的とする。
そこで、本発明では、保護の必要性の高いアプリケーションプログラムを、同時走行する他のアプリケーションプログラムの脆弱性から保護するために、他のアプリケーションプログラムの動作環境から孤立した環境で、保護対象野アプリケーションプログラムを動作させることで、上記目的を達成する。
具体的には、本発明では、
コンピュータ上に第一の仮想計算機を現出させ、該第一の仮想計算機上で、OS及び複数のAPプログラムを起動させて、該第一の仮想計算機上にOSプロセス及び複数のAPプロセスを展開させる。
コンピュータ上に第一の仮想計算機を現出させ、該第一の仮想計算機上で、OS及び複数のAPプログラムを起動させて、該第一の仮想計算機上にOSプロセス及び複数のAPプロセスを展開させる。
次に、前記OSプロセス及び記複数のAPプロセスが展開している前記第一の仮想計算機をプロセスコピーして、前記コンピュータ上に、該複数のAPプロセス及び該OSプロセスが展開している第二の仮想計算機を現出させる。
次に、前記コンピュータの記憶装置に予め格納されていた各AP用のデータファイルのうち、特定のAPプロセスが利用するファイルには、前記第一の仮想計算機からのアクセスを認め、前記第二の仮想計算機からのアクセスを認めず、前記複数のAPプロセスのうち該特定のAPプロセスを除く他のAPプロセスが利用するファイルには、該第二の仮想計算機からのアクセスを認める入出力制御を実行する。
さらに、前記第一の仮想計算機上の前記複数のAPプロセスのうち、前記他のAPプロセスを稼動不能にすると共に、前記第二の仮想計算機上の複数のAPプロセスのうちの前記特定のAPプロセスを稼動不能にする。
以上の結果、コンピュータ上に、複数の仮想計算機が現出されるものの、このコンピュータで、実質的に稼動するAPプログラムは全体として増減はなく、元のままとなる。また、第一の仮想計算機上では、保護対象である特定のAPプロセスのみが、他のAPプロセスが実質的に存在しない環境で稼動し、第二の仮想計算機上では、保護対象である特定のAPプロセスが実質的に存在しない環境で、他のAPプロセスが稼動する。さらに、第二の仮想計算機から、第一の仮想計算機上の特定のAPプロセスが利用するファイル資源には、アクセスできない。
なお、本明細書において、プロセスとは、実行中のプログラムを示す。また、あるプログラムに関するプロセスコピーとは、このプログラムを実行するために、メモリー上に展開されているプログラム、及びプログラムの実行で作成された及び用いるためにメモリ上に展開されているデータの一式をコピーすることである。
本発明によれば、特定のAPプログラムと共に、他のAPプログラムをコンピュータ上で同時走行させつつも、特定のAPプログラム及びこの特定のAPプログラムが利用するファイル資源を、他のAPプログラムを介した側面攻撃から保護することができる。
以下、本発明に係るサーバの一実施形態について、図面を用いて説明する。
図1に示すように、本実施形態のサーバ100は、サーバ本体101と、複数の外部記憶装置210,210a,210bと、表示装置201と、入力装置202とを備えている。
サーバ本体101は、各種演算処理を実行するCPU110と、CPU110のワークエリアとなるメモリ120と、各外部記憶装置210,210a,210b、表示装置201、入力装置202のインタフェースであるIOインタフェース140と、通信ネットワークNのインタフェースであるネットワークインタフェース150と、可搬型ディスク記憶媒体Dに対してデータの記録・再生を行うディスク記録・再生装置160と、を備えている。
複数の外部記憶装置210,210a,210bのうち、第三の外部記憶装置210には、コンピュータとしてのサーバ100上に仮想計算機(以下、VM)を現出させて、これを管理するためのVMモニタプログラム211と、サーバプログラムとしてのアプリケーション(以下、APxとする)プログラム212と、他のアプリケーション(以下、APyとする)プログラム213と、オペレーションシステム(以下、OSとする)プログラム214とが格納されている。また、第一の外部記憶装置210aには、APxプログラム212の実行で取り扱うデータがAPx用データファイル222として格納され、第二の外部記憶装置210bには、APyプログラム212の実行で取り扱うデータがAPy用データファイル223として格納されている。これらのプログラム211〜214やデータファイル222,223は、いずれも、可搬型ディスク記憶媒体Dに記憶されていたものをディスク記録・再生装置160で再生し、外部記憶装置210,210a,210bに格納したものである。なお、各プログラムやデータファイルは、以上のように、可搬型ディスク記憶媒体Dで提供されてもよいが、通信ネットワークNで提供されてもよい。また、ここでは、複数の外部記憶装置210,210a,210bがサーバ本体101に対して外付けされている形態をとっているが、複数の外部記憶装置210,210a,210bがサーバ本体101に内蔵されていてもよいことは言うまでもない。
CPU110は、機能的に、VMの現出及びこれの管理等を行うVMモニタ部111を有している。このVMモニタ部111は、VM121aを現出させて、これを起動させるVMイニシャライザ112と、VM121a,1211bの稼動を管理するVMディスパチャ113と、VM121aをコピーして新たなVM121bを生成するマイグレーションマネジャ114と、VM121a,121b上で動作するAPプロセス122b,123aを稼動不能にするAPセパレータ115と、VM121a,121bの入出力を制御するVM・IOマネジャ116と、VM121a,121bのネットワーク通信を制御するVルータ117と、を有している。なお、以上のVMモニタ部111は、外部記憶装置210に格納されているVMモニタプログラム211をCPU110が実行することで機能する。
ここで、VMモニタ部111の各部112〜117の機能について、図2を用いて、さらに説明する。
VMモニタ部111は、サーバ100のCPU110とメモリ120との複合体130上で機能する。このVMモニタ部111のVMイニシャライザ112は、複合体であるCPU・メモリ130上に、第一のVM121aを現出させる。この第一のVM121aは、仮想外部記憶装置126aと、この仮想外部記憶装置126aのインタフェースである仮想IOインタフェース125aと、仮想通信ネットワーク128aと、この仮想通信ネットワーク128aのインタフェースである仮想ネットワークインタフェース127aとを有している。さらに、この第一のVM121aは、OSプログラム214を起動させてOSプロセス124aを生成すると共に、各APプログラム212,213を起動させてAPプロセス122a,123aを生成する。
マイグレーションマネジャ114は、APプロセス122a,123aやOSプロセス124a等を含む第一のVM121aのプロセスコピーして、CPU・メモリ130上に、第二のVM121bを現出させる。なお、APプロセスやOSプロセス等のソフトウェアを除くハードウェア部分のみを模擬したものをVMと呼び、APプロセスやOSプロセス等のソフトウェア部分とハードウェア部分とをまとめたもの異なる名称で呼ぶことがあるが、ここでは、両者を区別することなく、単にVM(仮想計算機)と呼ぶ。但し、以下において、VMが、ハードウェア部分のみならずソフトウェア部分を含む場合には、APプロセスやOSプロセス等を含むVM、又はAPプロセス等を含むVM等と表現することにする。この第二のVM121bも、第一のVM121aと同様に、APプロセス122b,123bと、OSプロセス124bと、仮想IOインタフェース125bと、仮想外部記憶装置126bと、仮想ネットワークインタフェース127aと、仮想通信ネットワーク128aと、を有している。
各VM121a,121b上の各OSプロセス124a,124bは、各仮想IOインタフェース125a,125bや各仮想ネットワークインタフェース127a,127bを、実インタフェースと同様の手順で処理することにより、入出力処理を処理することでできる。
VMディスパチャ113は、VM管理テーブル133を参照して、各VM121a,121bの稼動を管理する。このVM管理テーブル133は、図7に示すように、各VM毎に存在し、各VM管理テーブル133a,133bには、VMのIDが格納されるVM・ID領域、利用メモリ範囲等の各種管理情報が格納される管理情報領域とがある。また、VMディスパチャ113は、現VM ID領域134を管理し、いずれかのVM121a,121bが入出力動作を行った際、この現VM ID領域134に入出力動作を行ったVMのIDを入力する。なお、各VM管理テーブル133は、VMが現出される際に作成される。すなわち、第1のVM管理テーブル133aは、第一のVM121aがVMイニシャライザ112により現出される際に、このVMイニシャライザ112により作成される。また、第2のVM管理テーブル133bは、第二のVM121bがマイグレーションマネジャ114により現出される際に、このマイグレーションマネジャ114により作成される。
APセパレータ115は、第一のVM121a上でAPyプロセス123aを稼動不能にして、サーバプロセスであるAPxプロセス122aからこれを分離すると共に、第二のVM121b上でサーバプロセスであるAPxプロセス122bを稼動不能にして、APyプロセス123bからこれを分離する。
V・IOマネジャ116は、各VM121a,121bからの入出力要求を適宜解釈して、実IOインタフェース140を介して、複数の実外部記憶装置210,210a,210b、表示装置201、入力装置202に対する入力処理又は出力処理を実行する。
Vルータ117は、各VM121a,121bからの通信パケットを、実ネットワークインタフェース150を介して、実通信ネットワークNに送出する一方で、実通信ネットワークNからの通信パケットを実ネットワークインタフェース150を介して受信し、これをいずれかのVM121a,121bへルーティングする。すなわち、Vルータは、各VM121a,121bによるネットワーク通信を制御する。
次に、図9に示すフローチャートに従って、VMモニタ部111が起動してから、サーバプログラムであるAPxプログラム212の動作及びこのAPxプログラム212が取り扱うデータの保護状態に移行するまでの処理内容について説明する。
VMモニタ部111が起動すると、図3に示すように、このVMモニタ部111のVMイニシャライザ112が複合体であるCPU・メモリ130上に第一のVM121aを現出する。そして、第1のVM121aは、OSプログラム214を読み込んで、これを動作させて、第1のVM121a内にOSプロセス124aを形成する。さらに、第1のVM121aは、各APプログラム212,213を読み込んで、これを動作させて、第1のVM121a内にAPプロセス122a,123aを形成する(S10)。なお、VMイニシャライザ112は、第一のVM121aの現出過程で、前述したように、図7に示す第一のVM管理テーブル133aを作成する。
次に、マイグレーションマネジャ114が、OSプロセス124a及び各APプロセス122a,123aを含む第一のVM121aのスナップショットデータを作成し、このデータをスナップショットファイル215として、複数の外部記憶装置のうち、例えば、第三の外部記憶装置210に格納する(S11)。続いて、マイグレーションマネジャ114は、図4に示すように、スナップショットデータをCPU・メモリ130上にリストアし、このCPU・メモリ130上に第二のVM121bを現出させる(S12)。すなわち、マイグレーションマネジャ114は、CPU・メモリ130上の第一のVM121aのプロセスコピーを、同じCPU・メモリ130上に、第二のVM121bとして展開する。この第二のVM121bは、前述したように、第一のVM121aと同様に、APプロセス122b,123bと、OSプロセス124bと、仮想IOインタフェース125bと、仮想外部記憶装置126bと、仮想ネットワークインタフェース127aと、仮想通信ネットワーク128aと、を有している。なお、マイグレーションマネジャ114は、第二のVM121bの現出過程で、前述したように、図6に示す第二のVM管理テーブル133bを作成する。
次に、V・IOマネジャ116は、図5に示すように、第1のVM121aから第一の記憶装置210a内のAPxプロセス用データファイル222にアクセスできるようにする一方で、第1のVM121aから第二の記憶装置210b内のAPyプロセス用データファイル223にアクセスできないように、アクセス制御の設定処理を行う。具体的に、V・IOマネジャ116は、第一の記憶装置210a内のAPxプロセス用データファイル222の実アドレスと第一のVM121a内の仮想外部記憶装置126aの同ファイルの仮想アドレスとのマッピング等を行う(S13)。このアクセス制御の設定処理が終了すると、以降、このV・IOマネジャ116により、第1のVM121aから第一の記憶装置210a内のAPxプロセス用データファイル222にアクセスできる一方で、第1のVM121aから第二の記憶装置210b内のAPyプロセス用データファイル223にアクセスできないように、アクセス制御が実行される。
以上のアクセス制御の設定処理が終了すると、APセパレータ115は、第一のVM121a上のAPyプロセス123bを稼動不能にする、つまり、APyプログラム213の実行を停止、又はこれを実行できない状態にする(S14)。特定のプログラムの実行を停止する方法としては、例えば、停止するためのインタフェースを利用する方法がある。この方法としては、いささか乱暴ではあるが、Unix(米国での登録商標)では、Killコマンドにより該当するプロセスを強制終了する方法等である。また、実行プライオリティを下げる方法もある。また、特定のプログラムを実行できない状態にする方法としては、例えば、特定のプログラムの稼動が外部からのリクエストメッセージの受信を契機とする場合、このリクエストメッセージを受信できないようにする方法がある。
以上のステップ13及びステップ14の処理と並行して、又は前後して、ステップ15及びステップ16が実行される。
ステップ15では、V・IOマネジャ116が、第2のVM121bから第二の記憶装置210b内のAPyプロセス用データファイル223にアクセスできるようにする一方で、第2のVM121bから第一の記憶装置210a内のAPxプロセス用データファイル222にアクセスできないように、アクセス制御の設定処理を行う。具体的には、前述のステップ13での処理と基本的に同様に、V・IOマネジャ116は、第二の記憶装置210b内のAPyプロセス用データファイル223の実アドレスと第二のVM121b内の仮想外部記憶装置126bの同ファイルの仮想アドレスとのマッピングを行う。以降、このV・IOマネジャ116により、第2のVM121bから第二の記憶装置210b内のAPyプロセス用データファイル223にアクセスできる一方で、第2のVM121bから第一の記憶装置210a内のAPxプロセス用データファイル222にアクセスできないように、アクセス制御が実行される。
ステップ16では、APセパレータ115が、第二のVM121b上のAPxプロセス123aを稼動不能にする、つまり、APxプログラム213の実行を停止、又はこれを実行できない状態にする。
以上で、サーバプログラムであるAPxプログラム212の動作及びこのAPxプログラム212が取り扱うデータの保護状態への移行が終了する。
次に、以上の処理による効果について説明する。
仮に、APyプログラム213が外部からの脅威に対する脆弱性があり、第二のVM121b上のAPyプロセス123bが何らかの手段により、図5に示すように、悪性ウィルス129に侵されたとする。
この悪性ウィルス129は、何らかの手段でいずれかの外部記憶装置210,210a,210bへアクセスを試みる。しかしながら、この悪性ウィルス129は、第二のVM121b上のAPyプロセス123b中に存在し、この第二のVM121bから外部記憶装置へのアクセスに関して、V・IOマネジャ116により、前述したアクセス制御がなされるため、この悪性ウィルス129は、第一の外部記憶装置210a内のAPx用ファイル222へはアクセスできない。よって、サーバプログラムであるAPxプログラム212の資源であるAPx用ファイル222は、この悪性ウィルス129に侵されずに済む。
以上のように、本実施形態では、一つのコンピュータ上でサーバプログラムであるAPxプログラム212及び他のAPyプログラム212を動作させているものの、サーバプログラムであるAPxプログラム212の動作環境やこのプログラム212のファイル資源へのアクセス環境が、他のAPyプログラム213の動作環境やこのAPyプログラム213のファイル資源へのアクセス環境から孤立しているため、サーバプログラムであるAPxプログラム212やその資源であるAPx用ファイル222が悪性ウィルス129に侵される可能性を最小限に抑えることができる。すなわち、保護対象外のAPyプログラム213に対する側面攻撃から、サーバプログラムであるAPxプログラム212やその資源であるAPx用ファイル222を保護することができる。
ところで、本実施形態では、各VM121a,121bからの実外部記憶装置210,210a,210bへのアクセス制御をV・IOマネジャ116により行っているが、各VM121a,121bのOSプロセス124a,124bで行うことも可能である。しかし、OSは、様々な機能を持ち、実装も巨大である。そのため、設定したアクセス制御だけで攻撃が確実に阻止できることを保証するのは一般に困難である。例えば、OSは、プロセス間の仮想メモリの共用や、プロセス間の通信手段などを提供しているが、このような豊かな機能が悪性ウィルス129に悪用されないとは限らない。
一方、VMモニタ部111のV・IOマネジャ116によってアクセス制御する場合、VMモニタ部111がVMに提供する機能はハードウエアの模擬だけであり、侵入プログラムからアクセスする手段がほとんどない。そのため、VMモニタ部111のV・IOマネジャ116よるアクセス制御は、OSによるアクセス制御より、セキュリティのレベルが遥かに高いと言える。
また、本実施形態では、一旦、一つのVMを現出し、このVM上で複数のAPプログラムを動作させた状態で、これをプロセスコピーして、新たなVMを現出することで、図5に示すような保護状態を創出しているが、直ちに、複数のVMを現出し、複数のVMのうちのいずれかに、APプログラムの実行を割り当てることも可能である。しかしながら、この方法では、コンピュータ上で実行予定の全てのAPプログラムを予め詳細に調べ、計画的にAPプログラムを選択して、いずれかのVMに実行を割り当てる必要がある。このように、APプログラムのセキュリティや実行重要度等を詳細に調べること等を前提として、サーバを運用することは現実には非常に難しい。また、サーバシステム構成が頻繁に変更される場合には、そのたびに実行計画を入念にチェックするのは骨の折れる作業である。
一方、本実施形態では、以上のような手順を踏んで、図5に示すような保護状態を創出しているため、起動前のAPプログラムの緻密な調査が不要になる上に、どのAPプログラムを保護対象にするかをAPプログラムの起動後に決めることができるので、少ない作業負荷で且つ容易に保護状態を創出することができる。
本実施形態では、以上のように、一つのコンピュータ上で、オリジナルVMと、そのコピーであるコピーVMを現出しているが、このようなことは従来技術では基本的に考えられない。これは、少なくとも、これまでのところ、このようなコンピュータの運用形態にメリットが見出せないことの他に、以下の二つの課題が存在するからである。
一つは、二つのVM上のそれぞれに同じAPプロセスが存在することで、各APプロセスが同じ実ファイル資源にアクセスすることになり、両者からのアクセスの調停が極めて難しいという課題である。この課題に関して、本実施形態では、オリジナルVMをコピーしてコピーVMを創出しているものの、オリジナルVMとコピーVMとに同じAPプロセスが存在しないように、一方のVMに存在すべきAPプロセスに関しては、他方のVMにおいて稼動不能にする共に、V・IOマネジャ116により二つのVMからのファイル資源へのアクセスを調整することで解決している。
他の一つは、二つのVMが同じネットワークアドレスを持つため、これらのVMを現出しているコンピュータに向けられたパケットを、二つのVMに対して、どのようにルーティングするかという課題である。
コンピュータの中には、特定のAPプログラムのみを実行するものがあり、このようなコンピュータでは、ネットワーク通信を行う必要がないことがある。しかしながら、本実施形態のように、サーバとしての役目を担うコンピュータの場合には、クライアントからのリクエストに応える必要性から、ネットワーク通信の実行は必須である。
そこで、次に、本実施形態のサーバ100でのネットワーク通信について説明する。
図6は、図5に示す状態と同じ保護状態を示している。この状態において、OSプロセス124aとOSプロセス124bは、それぞれ、IPアドレス21a,21bを持っている。しかしながら、OSプロセス124bは、OSプロセス124aのプロセスコピーであるから、OSプロセス124aのIPアドレス21aとOSプロセス124bのIPアドレス21bとは同じIPアドレスである。このため、前述したように、外部からこのサーバ100に送られてきたパケットを、二つのVM121a,121bに対して、どのようにルーティングして、二つのVM121a,121bのうち一方にのみ存在する目的のAPプロセスに確実に受け渡すのか、という課題が生じる。
ところで、今日の代表的な通信プロトコルであるTCP(Transmission Control Protocol)/IP(Internet Protocol)やUDP(User Datagram Protocol)/IPには、通信ポートの概念が存在し、OSプロセスは、このTCP/IP又はUDP/IPに従ってネットワーク通信をする場合、APプロセス毎にポートIDを設定する。そこで、本実施形態では、このポートIDを利用して、外部からサーバ100に送られてきたパケットを、二つのVM121a,121bのいずれか一方にのみ存在する目的のAPプロセスに確実に受け渡すようにしている。
ここで、TCP/IPパケット及びUDP/IPパケットの構造について、図12を用いて説明する。
IPパケット10は、ヘッダ11とペイロードとを有している。IPヘッダ11には、発信元IPアドレス12及び宛先IPアドレス13が収められている。また、ペイロードには、TCPパケット14が収められている。このTCPパケット14も、ヘッダ15とペイロードとを有している。TCPヘッダ15には、発信元ポートID16、宛先ポートID17、さらに、SYN、ACK、RST、FINなどを示すプロトコル制御フラグ18が収められている。また、このTCPパケット14のペイロードには、アプリケーションデータ19が収められている。
また、UDP/IPパケットの場合、UDPパケットは、前述のTCPパケットと同様に、IPパケットのペイロードに収められている。このUDPパケットは、TCPパケットと同様、このUDPパケットのヘッダ中に、発信元ポートID16及び宛先ポートID17が存在する。但し、UDPは、TCPと異なり、コネクションレスで、送達確認等を行わない関係上、UDPヘッダ中には、TCPヘッダ15中のプロトコル制御フラグ18は存在しない。
サーバ100が、上記TCP/IPやUDP/IPでネットワーク通信する場合、OSプロセスは、各APプロセスに対して、APプロセスがサーバとして機能する、つまりリクエストを受ける側として機能するときのサーバ機能用ポートと、APプロセスがクライアントとして機能する、つまりリクエストを発信する側として機能するときのクライアント機能用ポートと、を設定する。
ここで、第一のVM121a上のOSプロセス124aは、第一のVM121a上のAPxプロセス122aに対して、サーバ機能用ポート22sとして「s」を設定し、クライアント機能用ポート22cとして「p」を設定したとする。また、第二のVM121b上のOSプロセス124bは、第二のVM121b上のAPyプロセス123bに対して、サーバ機能用ポート23sとして「t」を設定し、クライアント機能用ポート23cとして「q」を設定したとする。
サーバ機能用ポートIDは、サービス毎に予め定めたれている。このため、提供するサービスが異なるAPxプロセス122aのサーバ機能用ポート「s」22sと、APyプロセス123bのサーバ機能用ポート「t」23sとが同一IDになることはない。よって、各APプロセス122a,123bがサーバとして機能する場合には、外部からのパケットを二つのVM121a,121bのそれぞれにルーティングすれば、このパケットの宛先ポートID(サーバ機能用ポート)が示すAPプロセスに、このパケットを確実に受け渡すことができる。
一方、クライアント機能用ポートIDは、APプロセスにより指定された後、この指定に従ってOSプロセスにより設定されることもあれば、OSプロセス自身により指定・設定がされることもある。仮に、一つのOSプロセス上に複数のAPプロセスが存在する場合、各APプロセスに対するクライアント機能用ポートのIDは同一になることはない。しかしながら、本実施形態のように、二つのVM121a,121bが存在し、それぞれに、OSプロセス124a,124b及びAPプロセス122a,123bが存在する場合、一方のVM121a上のAPxプロセス122aに対するクライアント機能用ポート「p」22cと、他方のVM121b上のAPyプロセス123bに対するクライアント機能用ポート「q」23cとが、同一IDになる可能性を秘めている。よって、各APプロセス122a,123bがクライアントとして機能する場合には、二つのVM121a,121bとのうちのいずれか一方がこのパケットの受取り先VMであると特定しない限り、外部からのパケット中に含まれている宛先ポートID(クライアント機能用ポート)だけでは、目的のAPプロセスに、このパケットを確実に受け渡すことができない。そこで、本実施形態では、このような場合、二つのVM121a,121bのうち、いずれか一方のVMのみと対応付けられた代理ポートIDという概念を導入して、Vルータ117により、代理ポートIDを管理させて、二つのVM121a,121bのうち、適切なVMに外部からのパケットをルーティングし、目的のAPプロセスに、このパケットを確実に受け渡すようにしている。
以下、Vルータ117での具体的な処理について、図10及び図11に示すフローチャートを用いて、以下で説明する。
まず、図10のフローチャートを用いて、Vルータ117によるパケット送出時の処理について説明する。
Vルータ117は、いずれかのVM121a,122bからパケットが送出され、これを受け取ると、VMディスパチャ113の管理下にある現VM IDフィールド134を参照して、このパケットを送出したVMのIDを取得する(S20)。なお、VMディスパチャ113は、図7に示す各VM管理テーブル133a,133bのそれぞれのVM・ID領域に格納されているIDのうちから、入出力処理を行ったVMのIDを選択して、これを現VM IDフィールド134に格納する。
次に、Vルータ117は、いずれかのVM121a,122bから受け取ったパケットを参照して、このパケット内に格納されている発信元ポートIDを取得する(S21)。そして、この発信元ポートIDがクライアント機能用ポートとして定められている多数のIDのうちのいずれかであるか否かを判断する(S22)。この発信元ポートIDがクライアント機能用ポートとして定められているIDではない、つまりサーバ機能用ポートとして定められているIDであると判断すると、ステップ29に進んで、VMから受け取ったパケットを実ネットワークインタフェース150を介して、通信ネットワークNへ送出する。一方、Vルータ117は、この発信元ポートIDがクライアント機能用ポートとして定められているIDであると判断すると、VM通信制御テーブル137中で空きレコードを選択し、この空きレコードに、ステップ21で取得した発信元ポートIDを格納する(S23)。
ここで、VM通信制御テーブル137の構成について、図8を用いて説明する。
このVM通信制御テーブル137は、通信パケットが示す実際のポートIDが格納される原ポートID領域137aと、代理ポートIDが格納される代理ポートID領域137bと、通信パケットが送出されたVMのIDが格納されるVM ID領域137cと、通信パケットがTCPに準拠するものであるかUDPに準拠するものであるかを示すTCP/UDP区別領域137dと、当該レコードが空いているか否かを示す空きフラグ領域137eとを有している。
前述のステップ23において、Vルータ117は、まず、VM通信制御テーブル137の空きフラグ領域137eを参照して、ここに「1(格納済み)」が格納されているか、「0「空き」」が格納されているかで、VM通信制御テーブル137中から空きレコードを選択する。そして、この空きレコード中の空きフラグ領域137eに、「1(格納済み)」を格納して、このレコードを確保してから、このレコードの原ポートID領域137に、ステップ21で取得した発信元ポートIDを格納する。
Vルータ117は、次に、ステップ22で格納した発信元ポートIDが、既に使用されているか否かを判断する(S24)。この判断は、VM通信制御テーブル137の代理ポートID領域137bを探索することで判断できる。例えば、VM通信制御テーブル137を代理ポートIDに関するハッシュテーブルとして構成するならば、発信元ポートID「p」に対するシノニムを探索すればよい。
Vルータ117は、ステップ24で、発信元ポートIDが既に使用されていると判断すると、予め定められている多数のクライアント機能用ポートのうちから一つの未使用ポートのIDを選択し、これを代理ポートIDとして、ステップ23で確保したレコードの代理ポートID領域137bに格納する(S25)。この際、Vルータ117は、予め定められている多数のクライアント機能用ポートであって、未使用ポートのうちから、ランダムに一つ選択してもよいし、所定の指針に基づいて一つ選択してもよい。続いて、Vルータ117は、パケット中の発信元ポートIDを、この代理ポートIDに書き換える(S26)。
例えば、いずれかのVM121a,122bからパケットを受け取った時点で、既に、図8に示すように、レコード137xの原ポートID領域137aにポートID「p」が格納されおり、このパケットに関して、ステップ21で取得した発信元ポートIDが「p」である場合、Vルータ117は、ステップ23で、例えば、空きレコード137yの原ポートID領域137aに、発信元ポートID「p」を格納する。続いて、ステップ24では、このパケットの発信元ポートID「p」は、レコード137xで既に使用済みであると判断して、ステップ25において、未使用ポートのID、例えば、「q」を、レコード137yの代理ポートID領域137bに格納する。そして、ステップ26において、パケット中の発信元ポートID「p」を代理ポートID「q」に書き換える。
一方、Vルータ117は、ステップ24で、発信元ポートIDが未だ使用されていないと判断すると、この発信元ポートIDを、ステップ23で確保したレコードの代理ポートID領域137bに格納する(S27)。
例えば、いずれかのVM121a,122bからパケットを受け取った時点で、レコード137xが空きレコードで、いずれのレコードの原ポートID領域137aにも発信元ポートID「p」が格納されておらず、このパケットに関して、ステップ21で取得した発信元ポートIDが「p」である場合、Vルータ117は、ステップ23で、例えば、空きレコード137yの原ポートID領域137aに、発信元ポートID「p」を格納する。続いて、ステップ24では、このパケットの発信元ポートID「p」は未使用であると判断して、ステップ27において、この発信元ポートID「p」を、レコード137xの代理ポートID領域137bに格納する。
ステップ26又はステップ27の処理が終了すると、Vルータ117は、ステップ23で確保したレコードに、VM ID及びTCP/UDPの区分を格納する(S28)。なお、ここで格納されるVM IDは、ステップ20で取得したVM IDである。また、TCP/UDPの区分は、ステップ21で、パケットから発信元ポートIDの取得に伴い、このパケットの制御フラグ18(図12に示す)有無等から判断されたTCP/UDPの区分である。
最後に、Vルータ117は、いずれかのVM121a,122bから受け取ったパケット、又はこのパケット中の発信元ポートIDのみを書き換えたパケットを、実ネットワークインタフェース150を介して、ネットワークNへ送出する。
なお、以上では、パケット発信元VMのIDを取得してから(S20)、パケットの発信元ポートIDを取得し(S21)、この発信元ポートIDがクライアント機能用ポートのIDであるか否かを判断しているが(S22)、先に、パケットの発信元ポートIDを取得し、この発信元ポートIDがクライアント機能用ポートのIDであるか否かを判断してから、パケット発信元VMのIDを取得するようにしてもよい。
まず、図11のフローチャートを用いて、Vルータ117によるパケット受信時の処理について説明する。
実ネットワークインタフェース150が通信ネットワークからパケットを受信すると、Vルータ117はこのパケットを受け取る。そして、このパケットのIPアドレスがVMのIPアドレスである場合、以下の処理を実行する。
Vルータ117は、まず、受け取ったパケットから宛先ポートIDを取得する(S30)。
次に、Vルータ117は、VM通信制御テーブル137の全レコードの代理ポートID領域137bから、ステップ30で取得した宛先ポートIDを検索し(S31)、この宛先ポートIDがVM通信制御テーブル137の代理ポートID領域137bにあるか否かを判断する(S32)。
Vルータ117は、この宛先ポートIDがあると判断すると、この宛先ポートIDが格納されているレコードの原ポートID領域137aから、ポートIDを取得し、このパケットの宛先ポートIDを、取得したポートIDに書き換える(S33)。なお、代理ポートID領域137bに格納されているポートIDと、原ポートID領域137aに格納されているポートIDとが同一である場合があるが、この場合、パケットの宛先ポートIDを、取得したポートIDに書き換えてもよいし、書き換えなくてもよい。
続いて、Vルータ117は、ステップ34でポートIDを取得したレコードのVM ID領域137cからVM IDを取得し、このVM IDが示すVMへ、ステップ34で書き直したパケットをルーティングする(S34)。このルーティングは、Vルータ117が、VM IDに対応するVMの仮想ネットワークインタフェースがアクセスするメモリに、ステップ34で書き直したパケットを格納した後、このVMの仮想ネットワークから仮想ネットワークインタフェースに対して割り込みを模擬させることにより、実行される。
パケットのルーティングが終了すると、所定時間経過後に、ステップ33で原ポートIDを取得したレコードを解放して(S35)、パケット受信時の処理を終了する。なお、ステップ35において、パケットのルーティングが終了してから、所定時間経過後に、該当レコードを解放するのは、外部から当該サーバ100のいずれかのVMに対してデータを送信する際、このデータの量が多く、このデータを複数のパケットに分けて送信することがあることから、これらの複数のパケットを該当レコードを参照してルーティングするためである。
例えば、ステップ30で受け取ったパケット中の宛先ポートIDが「q」であり、この時点で、図8に示すように、VM通信制御テーブル137のレコード137yの代理ポートID領域137bに代理ポートID「q」が格納されている場合には、Vルータ117は、ステップ32で、パケット中の宛先ポートID「q」がVM通信制御テーブル137中にあると判断する。そして、Vルータ117は、ステップ33で、レコード137yの原ポートID領域137aから、ポートID「p」を取得し、このパケットの宛先ポートIDを、取得したポートID「p」に書き換え、ステップ34で、レコード137yのVM ID領域137cに格納されているVM ID「02」に、宛先ポートIDを書き換えたパケットをルーティングする。
ところで、ステップ32の判断で、パケット中に含まれている宛先ポートIDがVM通信制御テーブル137のいずれかの代理ポートID領域137bにあるということは、以前に、いずれかのVM121a,121b上のAPプロセス122a,123bが、クライアントとして機能し、外部に対して何らかのサービスのリクエストパケットを送出し、このリクエストパケットに対するレスポンスパケットが外部から戻ってきたことを意味する。この際、外部に送出したリクエストパケット中の発信元ポートIDは、代理ポートIDであるため、外部からのレスポンスパケット中の宛先ポートIDも代理ポートIDである。そこで、Vルータ117は、レスポンスパケットを受け取ると、ステップ33で、このレスポンスパケット中の宛先ポートIDを、リクエストパッケットの当初の発信元ポートIDに書き換え、ステップ34で、この書き換え後のレスポンスパケットを該当VMへルーティングしている。
一方、ステップ32で、パケット中に含まれている宛先ポートIDがVM通信制御テーブル137のいずれの代理ポートID領域137bにもないと判断された場合、このパケットは、クライアントとして機能していないAPプロセス122a,123bに対するものであると言える。言い換えると、このパケットは、サーバとして機能しているAPプロセス122a,123bに対するものであると言える。したがって、このパケット中に含まれている宛先ポートIDは、予め定められた多数のサーバ機能用ポートIDのうちの一つである。前述したように、第一のVM121a上のAPxプロセス122aのサーバ機能用ポートのIDと、第二のVM121b上のAPyプロセス123bのサーバ機能用ポートのIDとは、同一になることはない。このため、このパケットを二つのVM121a,121bのそれぞれにルーティングすれば、このパケットの宛先ポートID(サーバ機能用ポート)が示すAPプロセスに、このパケットを確実に受け渡すことができる。
そこで、Vルータ117は、ステップ32で、パケット中に含まれている宛先ポートIDがVM通信制御テーブル137のいずれの代理ポートID領域137bにもないと判断した場合、このパケットをまず第一のVM121aへルーティングする(S36)。そして、Vルータ117は、このルーティングが成功あるか否かを判断する(S37)。
いずれかのVM121a,121bと外部とがTCPに従って通信している場合、適切なパケットを受け取った側は、このパケットの送信側に対してACKを返すので、パケットがルーティングされたVMからACKが返ってきた場合には、このルーティングが成功したことになる。一方、このパケットがルーティングされたVMから、所定時間経過しても、ACKが返ってこない場合には、このルーティングが失敗したことになる。また、UDPでは、前述したように、送達確認を行わないので、仮に、パケットのルーティングが成功した場合でも、このパケットがルーティングされたVMからACK等が返ってくることはない。Vルータ117は、ステップ37において、パケットがルーティングされたVMから所定時間以内にACKが返ってこない場合には、このパケットがTCPに従うものであろうが、UDPに従うものであろうが、一律に失敗と判断し、所定時間以内にACKが返ってきた場合にのみ、成功と判断する。
Vルータ117により、ルーティングが成功したと判断された場合、二つのVM121a,121bのいずれか一方にのみ存在する目的のAPプロセスに、このパケットが受け渡されたことになるので、パケット受信時の処理を終了する。
一方、Vルータ117は、ステップ37で、ルーティングが失敗したと判断すると、このパケットを第二のVM121bへルーティングする(S38)。このパケットがTCPに従ったものである場合、ステップ36での第一のVM121aへのルーティングが失敗であれば、このステップ38での第二のVM121bへのルーティングは成功することになる。また、このパケットがUDPに従ったものである場合、ステップ37において、パケットがルーティングされたVMから所定時間以内にACKが返ってこない場合には、このパケットがTCPに従うものであろうが、UDPに従うものであろうが、一律に失敗と判断するので、結果として、第一のVM121aにも、第二のVM121bにも、このパケットをルーティングすることになる。このように、二つのVM121a,121bのそれぞれに、このパケットをルーティングすることにより、このパケットは、二つのVM121a,121bのいずれか一方にのみ存在する目的のAPプロセスに受け渡されたことになる。
よって、Vルータ117は、ステップ38で、このパケットを第二のVM121bにルーティングした場合も、パケット受信時の処理を終了する。
なお、目的のAPプロセスが存在しないVMに送られたパケットは、このVM内で送り先が存在しないので、このVMにおいて、破棄されることになる。
以上のように、本実施形態では、二つのVMが同じネットワークアドレスを持つものの、パケット中に含まれている通信ポートを利用し、さらに、代理ポートという概念を導入して、ネットワーク通信を実現している。
なお、以上の実施形態では、V・IOマネジャ116により、保護対象外のAPyプロセス123bから保護対象のAPx用ファイル222へのアクセスを禁止すると共に、保護対象のAPx用ファイル222とその他のAPy用ファイル223とを異なる実外部記憶装置210a,210bに格納することにより、保護対象のAPx用ファイル222をソフトウェア的にもハードウェア的には孤立させることで、この保護対象のAPx用ファイル222の保護を図っている。しかしながら、システム設計指針が、保護対象のAPx用ファイル222をソフトウェア的に保護できれば十分であるとするならば、保護対象のAPx用ファイル222とその他のAPy用ファイル223とを異なる実外部記憶装置210a,210bに格納しなくてもよい。
また、以上の実施形態では、外部からのパケットを受信し、このパケット中の宛先ポートIDが代理ポート領域にない場合(図11中のS32)、受信パケットを第一のVM121aへルーティングした後(S36)、このルーティングが失敗したと判断したときに限り(S37)、受信パケットを第二のVM121bへルーティングしているが(S38)、ルーティングが成功したか失敗したかの判断を行わず、受信パケットを第一のVM121a及び第二のVM121bのそれぞれにルーティングするようにしてもよい。
また、以上の実施形態では、保護対象外のAPプログラムが一つの例を示しているが、保護対象外のAPプログラムが多数存在する場合でも、第二のVM121b上で、保護対象外の多数のAPプログラムを動作させることで、保護すべきサーバプログラムであるAPxプログラム212、及びこのプログラム212のファイル資源を、保護対象外の複数のAPプログラムに対する側面攻撃から保護することができる。
さらに、以上の実施形態では、保護すべきAPプログラムが一つの例を示しているが、保護すべきAPプログラムが複数存在する場合でも、保護すべきAPプログラム毎にVMを設けて、保護すべきAPプログラムのそれぞれを他のAPプログラムの動作環境から孤立させることで、保護すべきAPプログラムのそれぞれを、他のAPプログラムに対する側面攻撃から保護することができる。
100…サーバ、101…サーバ本体、110…CPU、111…VMM、112…VMイニシャライザ、113…VMディスパチャ、114…マイグレーションマネジャ、115…APセパレータ、116…V・IOマネジャ、116…Vルータ、120…メモリ、121a…第一のVM、121b…第二のVM、122a,122b…APxプロセス、123a,123b…APyプロセス、124a,124b…OSプロセス、125a,125b…仮想IOインタフェース、126a,126b…仮想外部記憶装置、127a,127b…仮想ネットワークインタフェース、130…CPU・メモリ、133…VM管理テーブル、134…現VM ID領域、137…VM通信制御テーブル、140…IDインタフェース、150…ネットワークインタフェース、160…ディスク記録・再生装置、201…表示装置、202…入力装置、210…第三の外部記憶装置、210a…第一の外部記憶装置、210b…第二の外部記憶装置、211…VMMプログラム、212…APxプログラム、213…APyプログラム、214…OSプログラム
Claims (11)
- オペレーティングシステム(以下、OSとする)プログラム、及び特に保護すべき特定のアプリケーションプログラムを含む複数のアプリケーション(以下、APとする)プログラムを実行するため、記憶装置を備えたコンピュータ上に、仮想計算機を現出させる仮想計算機プログラムにおいて、
前記コンピュータ上に第一の仮想計算機を現出させ、該第一の仮想計算機上で、前記OSプログラム及び前記複数のAPプログラムを起動させて、該第一の仮想計算機上にOSプロセス及び複数のAPプロセスを展開させる第一の仮想計算機現出ステップと、
前記OSプロセス及び記複数のAPプロセスが展開している前記第一の仮想計算機をプロセスコピーして、前記コンピュータ上に、該複数のAPプロセス及び該OSプロセスが展開している第二の仮想計算機を現出させる第二の仮想計算機現出ステップと、
前記記憶装置に予め格納されていた各AP用のデータファイルのうち、特定のAPプロセスが利用するファイルには、前記第一の仮想計算機からのアクセスを認め、前記第二の仮想計算機からのアクセスを認めず、前記複数のAPプロセスのうち該特定のAPプロセスを除く他のAPプロセスが利用するファイルには、該第二の仮想計算機からのアクセスを認める入出力制御ステップと、
前記第一の仮想計算機上の前記複数のAPプロセスのうち、前記他のAPプロセスを稼動不能にすると共に、前記第二の仮想計算機上の複数のAPプロセスのうちの前記特定のAPプロセスを稼動不能にするAPセパレーションステップと、
を前記コンピュータに実行させることを特徴とする仮想計算機プログラム。 - 請求項1に記載の仮想計算機プログラムにおいて、
前記入出力制御ステップでは、
前記記憶装置に格納されているファイルのうち、前記他のAPプロセスが利用するファイルには、前記第一の仮想計算機からのアクセスを認めない、
ことを特徴とする仮想計算機プログラム。 - 請求項1及び2のいずれか一項に記載の仮想計算機プログラムにおいて、
前記第一の仮想計算機及び前記第二の仮想計算機が、宛先ポートID及び発信元ポートIDが格納されているIP(Internet Protocol)パケットを用いて、前記実ネットワークインタフェースを介して、外部と通信するための通信制御ステップを、前記コンピュータに実行させ、
前記通信制御ステップでは、
前記実ネットワークインタフェースが受信した前記IPパケットから宛先ポートIDを取得する宛先ポートID取得ステップと、
前記宛先ポートID取得ステップで取得された前記宛先ポートIDが、予め定められた複数のサーバ機能用ポートIDのうちの一つであるか否かを判断する宛先ポートID判断ステップと、
前記宛先ポートID判断ステップで、前記宛先ポートIDが前記予め定められた複数のサーバ機能用ポートIDのうちの一つであると判断された場合、前記第一の仮想計算機と前記第二の仮想計算機とのそれぞれに、前記IPパケットをルーティングする、又は、該第一の仮想計算機と該第二の仮想計算機とのうち、一方の仮想計算機へ前記IPパケットをルーティングした後、該ルーティングが成功したか否かを判断して、該ルーティングが成功しなかったと判断した場合に、他方の仮想計算機へ該IPパケットをルーティングするルーティングステップと、
前記第一の仮想計算機と前記第二の仮想計算機とのうち、いずれかの仮想計算機から外部へ送出するIPパケットを受信すると、該IPパケットを前記実ネットワークインタフェースを介して、外部へ送出するパケット送出ステップと、
を前記コンピュータに実行させることを特徴とする仮想計算機プログラム。 - 請求項3に記載の仮想計算機プログラムにおいて、
前記通信制御ステップでは、
前記第一の仮想計算機と前記第二の仮想計算機とのうち、いずれかの仮想計算機から外部へ送出するIPパケットを受信すると、該IPパケットから発信元ポートIDを取得する発信元ポートID取得ステップと、
前記発信元ポートID取得ステップで取得された前記発信元ポートIDが、予め定められた複数のサーバ機能用ポートIDのうちの一つであるか否かを判断する発信元ポートID判断ステップと、
を前記コンピュータに実行させ、
前記パケット送出ステップでは、前記発信元ポートID判断ステップで、前記発信元ポートIDが前記予め定められた複数のサーバ機能用ポートIDのうちの一つであると判断された場合、前記いずれかの仮想計算機から受信した前記IPパケットを前記実ネットワークインタフェースを介して、外部へ送出する、
ことを特徴とする仮想計算機プログラム。 - 請求項4に記載の仮想計算機プログラムにおいて、
前記いずれかの仮想計算機から受信した前記IPパケット中の発信元ポートIDが格納される原ポートID領域と、該原ポートIDに格納されたポートIDの代理ポートIDが格納される代理ポートID領域と、該IPパケットを送出した仮想計算機のIDが格納される仮想計算機ID領域とを有するテーブルを、前記コンピュータのメモリ上に、予め設定させておき、
前記通信制御ステップでは、
前記いずれかの仮想計算機から外部へ送出するIPパケットを受信した場合、
前記発信元ポートID判断ステップでは、前記発信元ポートIDが前記予め定められた複数のサーバ機能用ポートIDのうちの一つではなく、予め定められた複数のクライアント機能用ポートIDのうちの一つであるか否かを判断し、
前記発信元ポートID判断ステップで、前記発信元ポートIDが前記予め定められた複数のクライアント機能用ポートIDのうちの一つであると判断された場合、前記テーブル中の空きレコードであって、前記原ポートID領域に該発信元ポートIDを原ポートIDとして格納する原ポートID格納ステップと、
前記発信元ポートIDが前記テーブル中の前記代理ポートID領域に既に格納されているか否かを判断する判断ステップと、
前記判断ステップで、前記発信元ポートIDが前記代理ポートID領域に既に格納されていないと判断された場合には、前記原ポートIDと関連付けて、該発信元ポートIDを代理ポートIDとして前記代理ポートID領域に格納する第一の代理ポートID格納ステップと、
前記判断ステップで、前記発信元ポートIDが前記代理ポートID領域に既に格納されていると判断された場合には、前記予め定められた複数のクライアント機能用ポートIDのうちから未格納ポートIDを代理ポートIDとして、前記代理ポートID領域に前記原ポートIDと関連付けて格納する第ニの代理ポートID格納ステップと、
前記第二の代理ポートID格納ステップで、前記未格納ポートIDが前記代理ポートIDとして格納されると、前記IPパケット中の前記発信元ポートIDを該代理ポートIDに書き換える発信元ポートID書換えステップと、
前記IPパケットを送出した前記いずれかの仮想計算機のIDを、前記原ポートIDと関連付けて前記仮想計算機ID領域に格納する仮想計算機ID格納ステップと、
を前記コンピュータに実行させ、
前記パケット送出ステップでは、前記第一の代理ポートID格納ステップで、前記発信元ポートIDが前記代理ポートとして格納された場合には、前記いずれかの仮想計算機から送出された前記IPパケットを外部へ送出し、前記第二の代理ポートID格納ステップで、前記未格納ポートIDが前記代理ポートIDとして格納された場合には、前記発信元ポートID書換えステップで前記発信元ポートIDが書換えられた前記IPパケットを外部へ送出し、
前記実ネットワークインタフェースが外部からIPパケットを受信した場合、
前記宛先ポートID判断ステップでは、前記宛先ポートID取得ステップで取得された前記宛先ポートIDが、前記予め定められた複数のサーバ機能用ポートIDのうちの一つではなく、前記テーブルの前記代理ポートID領域に格納されたポートIDであるか否かを判断し、
前記宛先ポートID判断ステップで、前記宛先ポートID取得ステップで取得された前記宛先ポートIDが、前記テーブルの前記代理ポートID領域に格納されたポートIDであると判断されると、外部から受信した前記IDパケット中の宛先ポートIDを、該テーブル中で該代理ポートID領域に格納された該ポートIDと関連付けられている前記原ポートIDに書換える宛先ポートID書換えステップと、
前記宛先ポートIDが書換えられた前記IDパケットを、前記テーブル中で前記代理ポート領域に格納された前記ポートIDと関連付けられている仮想計算機IDが示す仮想計算機へルーティングするルーティングステップと、
を前記コンピュータに実行させることを特徴とする仮想計算機プログラム。 - オペレーティングシステム(以下、OSとする)プログラム、及び特に保護すべき特定のアプリケーションプログラムを含む複数のアプリケーション(以下、APとする)プログラムを実行するため、記憶装置を備えたコンピュータ上に、仮想計算機を現出させる仮想計算機の現出方法において、
前記コンピュータ上に第一の仮想計算機を現出させ、該第一の仮想計算機上で、前記OSプログラム及び前記複数のAPプログラムを起動させて、該第一の仮想計算機上にOSプロセス及び複数のAPプロセスを展開させる第一の仮想計算機現出ステップと、
前記OSプロセス及び記複数のAPプロセスが展開している前記第一の仮想計算機をプロセスコピーして、前記コンピュータ上に、該複数のAPプロセス及び該OSプロセスが展開している第二の仮想計算機を現出させる第二の仮想計算機現出ステップと、
前記記憶装置に予め格納されていた各AP用のデータファイルのうち、特定のAPプロセスが利用するファイルには、前記第一の仮想計算機からのアクセスを認め、前記第二の仮想計算機からのアクセスを認めず、前記複数のAPプロセスのうち該特定のAPプロセスを除く他のAPプロセスが利用するファイルには、該第二の仮想計算機からのアクセスを認める入出力制御ステップと、
前記第一の仮想計算機上の前記複数のAPプロセスのうち、前記他のAPプロセスを稼動不能にすると共に、前記第二の仮想計算機上の複数のAPプロセスのうちの前記特定のAPプロセスを稼動不能にするAPセパレーションステップと、
を前記コンピュータが実行することを特徴とする仮想計算機の現出方法。 - 請求項6に記載の仮想計算機の現出方法において、
前記入出力制御ステップでは、
前記記憶装置に格納されているファイルのうち、前記他のAPプロセスが利用するファイルには、前記第一の仮想計算機からのアクセスを認めない、
ことを特徴とする仮想計算機の現出方法。 - 演算装置とメモリと外部記憶装置と外部とネットワーク通信するためのネットワークインタフェースとを備え、オペレーティングシステム(以下、OSとする)、サーバプログラム及び1以上のアプリケーション(以下、APとする)プログラムを実行するために、仮想計算機を現出させるサーバにおいて、
前記演算装置及び前記メモリ上に、第一の仮想計算機を現出させ、該第一の仮想計算機上で、前記OSプログラム及び前記サーバプログラムを起動させて、該第一の仮想計算機上に、OSプロセス及びサーバプロセスを展開させる第一の仮想計算機現出手段と、
前記演算装置及び前記メモリ上に、第二の仮想計算機を現出させ、該第二の計算機上で、前記OSプログラム及び前記1以上のAPプログラムを起動させて、該第二の計算機上に、OSプロセス及び1以上のAPプロセスを展開させる第二の仮想計算機現出手段と、
前記外部記憶装置に予め格納されていたデータファイルのうち、前記サーバプロセスが利用するファイルには、前記第一の仮想計算機からのアクセスを認め、前記第二の仮想計算機からのアクセスを認めず、前記1以上のAPプロセスが利用するファイルには、該第二の仮想計算機からのアクセスを認める入出力制御手段と、
前記第一の仮想計算機及び前記第二の仮想計算機が、宛先ポートID及び発信元ポートIDが格納されているIP(Internet Protocol)パケットを用いて、前記ネットワークインタフェースを介して、外部と通信するための通信制御手段と、
を備え、
前記通信制御手段は、
外部から前記ネットワークインタフェースが受信した前記IPパケットから宛先ポートIDを取得する宛先ポートID手段と、
前記宛先ポートID取得手段で取得した前記宛先ポートIDが、予め定められた複数のサーバ機能用ポートIDのうちの一つであるか否かを判断する宛先ポートID判断手段と、
前記宛先ポートID判断手段で、前記宛先ポートIDが前記予め定められた複数のサーバ機能用ポートIDのうちの一つであると判断された場合、前記第一の仮想計算機と前記第二の仮想計算機とのそれぞれに、前記IPパケットをルーティングする、又は、該第一の仮想計算機と該第二の仮想計算機とのうち、一方の仮想計算機へ前記IPパケットをルーティングした後、該ルーティングが成功したか否かを判断して、該ルーティングが成功しなかったと判断した場合に、他方の仮想計算機へ該IPパケットをルーティングするルーティング手段と、
前記第一の仮想計算機と前記第二の仮想計算機とのうち、いずれかの仮想計算機から外部へ送出するIPパケットを受信すると、該IPパケットを前記ネットワークインタフェースを介して、外部へ送出するパケット送出手段と、
を有することを特徴とするサーバ。 - 請求項8に記載のサーバにおいて、
前記入出力制御手段は、
前記外部記憶装置に格納されているファイルのうち、前記1以上のAPプロセスが利用するファイルには、前記第一の仮想計算機からのアクセスを認めない、
ことを特徴とするサーバ。 - 請求項8及び9のいずれか一項に記載のサーバにおいて、
物理的に互いに独立している複数の外部記憶装置を備え、
前記サーバプロセスが利用するファイルと、前記1以上のAPプロセスが利用するファイルとは、前記複数の外部記憶装置のうちの互いに異なる外部記憶装置に格納されている、
ことを特徴とするサーバ。 - 請求項8から10のいずれか一項に記載のサーバにおいて、
前記第一の仮想計算機と前記第二の仮想計算機とのうち、いずれかの仮想計算機から受信したIPパケット中の発信元ポートIDが格納される原ポートID領域と、該原ポートIDに格納されたポートIDの代理ポートIDが格納される代理ポートID領域と、該IPパケットを送出した仮想計算機のIDが格納される仮想計算機ID領域とを有するテーブルを、メモリ上に設定するテーブル設定手段を備え、
前記通信制御手段は、前記いずれかの仮想計算機から外部へ送出するIPパケットを受信した際の手段として、
前記外部へ送出するIPパケットから発信元ポートIDを取得する発信元ポートID取得手段と、
前記発信元ポートID取得手段で取得した前記発信元ポートIDが、予め定められた複数のサーバ機能用ポートIDのうちの一つであるか、該予め定められた複数のサーバ機能用ポートIDのうちの一つではなく、予め定められた複数のクライアント機能用ポートIDのうちの一つであるかを判断する発信元ポートID判断ステップと、
前記発信元ポートID判断手段で、前記発信元ポートIDが前記予め定められた複数のクライアント機能用ポートIDのうちの一つであると判断した場合、前記テーブル中の空きレコードであって、前記原ポートID領域に該発信元ポートIDを原ポートIDとして格納する原ポートID格納手段と、
前記発信元ポートIDが前記テーブル中の前記代理ポートID領域に既に格納されているか否かを判断する判断手段と、
前記判断手段で、前記発信元ポートIDが前記代理ポートID領域に既に格納されていないと判断した場合には、前記原ポートIDと関連付けて、該発信元ポートIDを代理ポートIDとして前記代理ポートID領域に格納する第一の代理ポートID格納手段と、
前記判断手段で、前記発信元ポートIDが前記代理ポートID領域に既に格納されていると判断した場合には、前記予め定められた複数のクライアント機能用ポートIDのうちから未格納ポートIDを代理ポートIDとして、前記代理ポートID領域に前記原ポートIDと関連付けて格納する第ニの代理ポートID格納手段と、
前記第二の代理ポートID格納手段で、前記未格納ポートIDが前記代理ポートIDとして格納されると、前記IPパケット中の前記発信元ポートIDを該代理ポートIDに書き換える発信元ポートID書換え手段と、
前記IPパケットを送出した前記いずれかの仮想計算機のIDを、前記原ポートIDと関連付けて前記仮想計算機ID領域に格納する仮想計算機ID格納ステップと、
を有し、
前記パケット送出手段は、前記第一の代理ポートID格納手段で、前記発信元ポートIDが前記代理ポートとして格納された場合には、前記いずれかの仮想計算機から送出された前記IPパケットを外部へ送出し、前記第二の代理ポートID格納手段で、前記未格納ポートIDが前記代理ポートIDとして格納された場合には、前記発信元ポートID書換え手段で前記発信元ポートIDが書換えられた前記IPパケットを外部へ送出し、
前記通信制御手段は、前記いずれかの仮想計算機から外部へ送出するIPパケットを受信した際、
前記宛先ポートID判断手段が、前記宛先ポートID取得手段で取得した前記宛先ポートIDが、前記予め定められた複数のサーバ機能用ポートIDのうちの一つではなく、前記テーブルの前記代理ポートID領域に格納されたポートIDであるか否かを判断し、
前記宛先ポートID判断手段で、前記宛先ポートID取得ステップで取得された前記宛先ポートIDが、前記テーブルの前記代理ポートID領域に格納されたポートIDであると判断されると、外部から受信した前記IDパケット中の宛先ポートIDを、該テーブル中で該代理ポートID領域に格納された該ポートIDと関連付けられている原ポートIDに書換える宛先ポートID書換え手段と、
前記宛先ポートIDが書換えられた前記IDパケットを、前記テーブル中で前記代理ポート領域に格納された前記ポートIDと関連付けられている仮想計算機IDが示す仮想計算機へルーティングするルーティング手段と、
を有する、
ことを特徴とするサーバ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008183697A JP2010026572A (ja) | 2008-07-15 | 2008-07-15 | 仮想計算機の現出方法、この方法を実行するためのプログラム、及びこの方法を実行するサーバ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008183697A JP2010026572A (ja) | 2008-07-15 | 2008-07-15 | 仮想計算機の現出方法、この方法を実行するためのプログラム、及びこの方法を実行するサーバ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010026572A true JP2010026572A (ja) | 2010-02-04 |
Family
ID=41732382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008183697A Pending JP2010026572A (ja) | 2008-07-15 | 2008-07-15 | 仮想計算機の現出方法、この方法を実行するためのプログラム、及びこの方法を実行するサーバ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010026572A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013546103A (ja) * | 2010-12-17 | 2013-12-26 | マイクロソフト コーポレーション | 仮想マシンの分岐および並列実行 |
JP2014016877A (ja) * | 2012-07-10 | 2014-01-30 | Nippon Telegr & Teleph Corp <Ntt> | 監視装置および監視方法 |
KR20140057467A (ko) * | 2010-10-31 | 2014-05-13 | 마크 로웰 터커 | 가상 컴퓨팅 환경들을 보안하는 시스템 및 방법 |
JP2017102823A (ja) * | 2015-12-04 | 2017-06-08 | 日本電信電話株式会社 | 解析装置、解析方法および解析プログラム |
-
2008
- 2008-07-15 JP JP2008183697A patent/JP2010026572A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140057467A (ko) * | 2010-10-31 | 2014-05-13 | 마크 로웰 터커 | 가상 컴퓨팅 환경들을 보안하는 시스템 및 방법 |
KR101881179B1 (ko) | 2010-10-31 | 2018-07-23 | 템퍼럴 디펜스 시스템즈 엘엘씨 | 가상 컴퓨팅 환경들을 보안하는 시스템 및 방법 |
JP2013546103A (ja) * | 2010-12-17 | 2013-12-26 | マイクロソフト コーポレーション | 仮想マシンの分岐および並列実行 |
JP2014016877A (ja) * | 2012-07-10 | 2014-01-30 | Nippon Telegr & Teleph Corp <Ntt> | 監視装置および監視方法 |
JP2017102823A (ja) * | 2015-12-04 | 2017-06-08 | 日本電信電話株式会社 | 解析装置、解析方法および解析プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10554622B2 (en) | Secure application delivery system with dial out and associated method | |
RU2714607C2 (ru) | Двукратная самодиагностика памяти для защиты множества сетевых конечных точек | |
Kourai et al. | Hyperspector: virtual distributed monitoring environments for secure intrusion detection | |
AU2015279922B2 (en) | Automated code lockdown to reduce attack surface for software | |
US7636943B2 (en) | Method and system for detecting blocking and removing spyware | |
US20180046479A1 (en) | On-demand disposable virtual work system | |
US8595480B2 (en) | Distributed computing network using multiple local virtual machines | |
US20060069692A1 (en) | Electronic computer system secured from unauthorized access to and manipulation of data | |
MXPA04011271A (es) | Interfase de programacion relacionada con la seguridad. | |
JP2002202952A (ja) | データ転送を制限し分散コンピュータのソフトウェアコンポーネントを管理するためのシステムおよび方法 | |
JPH09224053A (ja) | コンピュータ・ネットワーク・インタフェースにおけるデータ・パケットのパケット・フィルタリング・システム | |
US20210182388A1 (en) | Corrective action on malware intrusion detection using file introspection | |
US20070162909A1 (en) | Reserving resources in an operating system | |
US11178105B2 (en) | Secure enclave-based guest firewall | |
US8272031B2 (en) | Policy-based virtualization method involving adaptive enforcement | |
JP2010026572A (ja) | 仮想計算機の現出方法、この方法を実行するためのプログラム、及びこの方法を実行するサーバ | |
Zhao et al. | Svgrid: a secure virtual environment for untrusted grid applications | |
JP2007058862A (ja) | サーバ・プロセスを管理する方法および装置ならびにコンピュータ・プログラム(コンピュータ・システム内でサーバ・プロセスを管理する方法または装置) | |
KR101124634B1 (ko) | 임베디드 운영 체제에 기반한 네트워크 통합 관리 게이트웨이 | |
JP2010109955A (ja) | シンクライアントシステム | |
Both | Managing the Firewall | |
Lindskog et al. | An analysis of the security of Windows NT | |
Rader et al. | Public/Private/Wireless Information Security A blue print for safeguarding sensitive information | |
Bitan | Internet Draft James Pinkerton draft-ietf-rddp-security-03. txt Microsoft Corporation Category: Standards Track Ellen Deleganes Expires: February, 2005 Intel Corporation | |
Bergstrand et al. | Localization of Spyware in Windows Environments |