(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6046276
(24)【登録日】2016年11月25日
(45)【発行日】2016年12月14日
(54)【発明の名称】ネットワークでのアプリケーションアウェアネスの方法及び装置
(51)【国際特許分類】
G06F 21/55 20130101AFI20161206BHJP
H04L 12/70 20130101ALI20161206BHJP
【FI】
G06F21/55 340
H04L12/70 100Z
【請求項の数】23
【全頁数】14
(21)【出願番号】特願2015-557980(P2015-557980)
(86)(22)【出願日】2013年2月14日
(65)【公表番号】特表2016-514295(P2016-514295A)
(43)【公表日】2016年5月19日
(86)【国際出願番号】US2013026225
(87)【国際公開番号】WO2014126574
(87)【国際公開日】20140821
【審査請求日】2015年8月31日
(31)【優先権主張番号】13/767,686
(32)【優先日】2013年2月14日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】510149482
【氏名又は名称】ヴイエムウェア インコーポレイテッド
【氏名又は名称原語表記】VMware,Inc.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】フィローズ、アジーム
(72)【発明者】
【氏名】チェン、ビンユアン
(72)【発明者】
【氏名】チョプラ、アミット
【審査官】
宮司 卓佳
(56)【参考文献】
【文献】
特開2004−013608(JP,A)
【文献】
特開2006−107505(JP,A)
【文献】
米国特許出願公開第2005/0182958(US,A1)
【文献】
米国特許出願公開第2003/0131245(US,A1)
【文献】
米国特許出願公開第2010/0198698(US,A1)
【文献】
米国特許出願公開第2005/0182966(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55
H04L 12/70
(57)【特許請求の範囲】
【請求項1】
コンピュータデバイス上で第1のコンテキスト内で実行中のアプリケーションに対してネットワークポリシーを実施する方法であって、
前記第1のコンテキストのネットワークソケットを通じたデータフローについての統計を収集すること、
前記収集した統計に基づいて前記ネットワークポリシーを変更すること、
前記第1のコンテキスト内で実行中のエージェントにより、前記アプリケーションからのネットワークソケットイベント要求を、前記ネットワークソケットイベント要求が前記第1のコンテキストのネットワークスタック内のトランスポート層に到達する前にインターセプトすること、
前記エージェントにより、第2のコンテキスト内で実行中のセキュリティサーバに、前記インターセプトされたネットワークソケットイベント要求を許可するか拒絶するかについての判断についての要求を送信することであって、前記判断についての要求はアプリケーション識別子と前記アプリケーションのドメインとを含む、前記判断についての要求を送信すること、
前記エージェントにより、前記セキュリティサーバから前記ネットワークソケットイベント要求の許可又は拒絶を示す判断を受信することであって、前記アプリケーション識別子の指示、前記アプリケーションのドメイン、及び前記変更されたネットワークポリシーに少なくとも部分的に基づく当該判断を受信すること、
前記判断が前記ネットワークソケットイベント要求の拒絶である場合、前記エージェントにより、前記ネットワークソケットイベント要求が前記第1のコンテキスト内の前記トランスポート層に到達することを阻止すること、
を備える方法。
【請求項2】
前記アプリケーション識別子は、前記第1のコンテキストの前記トランスポート層のインタフェースから受信されたデータに基づく、請求項1に記載の方法。
【請求項3】
前記判断が前記ネットワークソケットイベント要求の許可である場合、前記ネットワークソケットイベント要求を前記第1のコンテキスト内の前記アプリケーションから前記第1のコンテキスト内の前記トランスポート層に送信することを更に備える請求項1に記載の方法。
【請求項4】
前記セキュリティサーバは、複数のコンテキスト内のネットワークソケットイベント要求を許可するか拒絶するかについての判断を行う、請求項1に記載の方法。
【請求項5】
前記第1のコンテキストからの前記ネットワークソケットを通じたデータフローについての前記統計を、複数のコンテキストの複数のネットワークソケットを通じたデータフローについての統計を受信するデータ収集モジュールに送信すること、
前記複数のコンテキストの前記複数のネットワークソケットを通じた前記データフローについての前記統計のリポートを生成すること、
を更に備える請求項1に記載の方法。
【請求項6】
前記ネットワークソケットイベント要求は、前記ネットワークソケットをオープンすること、クローズすること、及びリッスンすることのうちの何れかである、請求項1に記載の方法。
【請求項7】
前記アプリケーション識別子は、(i)オペレーティングシステムが前記アプリケーションの実行可能ファイルをロードし実行する場合に作成されるプロセスを識別するとともに(ii)前記アプリケーションの実行可能ファイルを識別するプロセス識別子に少なくとも基づく、請求項1に記載の方法。
【請求項8】
前記アプリケーション識別子の指示は、前記アプリケーションの実行可能ファイルのファイル名に少なくとも基づく、請求項1に記載の方法。
【請求項9】
前記アプリケーション識別子の指示は、前記アプリケーションの実行可能ファイルのハッシュに少なくとも基づく、請求項1に記載の方法。
【請求項10】
前記トランスポート層のインタフェースは前記ネットワークソケットイベント要求をインターセプトし、前記インタフェースはトランスポートドライバインタフェースである、請求項1に記載の方法。
【請求項11】
前記トランスポート層のインタフェースが前記ネットワークソケットイベント要求をインターセプトする、請求項1に記載の方法。
【請求項12】
コンテキストによって実行可能なコンピュータ可読命令を備えた非一時的コンピュータ可読媒体であって、
第1のコンテキストのネットワークソケットを通じたデータフローについての統計を収集することを実行する命令であって、アプリケーション当たり、ユーザ当たり、仮想マシン当たりのバイト数/パケット数として、ネットワークフロー情報を示す当該統計を収集することを実行する命令と、
前記収集した統計に基づいてネットワークポリシーを変更することを実行する命令と、
第1のコンテキスト内で実行中のエージェントにより、アプリケーションからのネットワークソケットイベント要求を、前記ネットワークソケットイベント要求が前記第1のコンテキストのネットワークスタック内のトランスポート層に到達する前にインターセプトすることを実行する命令と、
前記エージェントにより、第2のコンテキスト内で実行中のセキュリティサーバに、前記インターセプトされたネットワークソケットイベント要求を許可するか拒絶するかについての判断についての要求を送信することを実行する命令であって、前記判断についての要求はアプリケーション識別子と前記アプリケーションのドメインとを含む、前記判断についての要求を送信することを実行する命令と、
前記エージェントにより、前記セキュリティサーバから前記ネットワークソケットイベント要求の許可又は拒絶を示す判断を受信することを実行する命令であって、前記アプリケーション識別子の指示、前記アプリケーションのドメイン、及び前記変更されたネットワークポリシーに少なくとも部分的に基づく当該判断を受信することを実行する命令と、
前記判断が前記ネットワークソケットイベント要求の拒絶である場合、前記エージェントにより、前記ネットワークソケットイベント要求が前記第1のコンテキスト内の前記トランスポート層に到達することを阻止するように実行する命令と、
を備える非一時的コンピュータ可読媒体。
【請求項13】
前記アプリケーション識別子は、前記第1のコンテキストの前記トランスポート層のインタフェースから受信されたデータに基づく、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項14】
前記ネットワークソケットイベント要求を前記第1のコンテキスト内の前記アプリケーションから前記第1のコンテキスト内の前記トランスポート層に送信する命令を更に備える請求項12に記載の非一時的コンピュータ可読媒体。
【請求項15】
前記セキュリティサーバは、複数のコンテキスト内のネットワークソケットイベント要求を許可するか拒絶するかについての判断を行う、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項16】
前記第1のコンテキストからの前記統計を、複数のコンテキストの複数のネットワークソケットを通じたデータフローについての統計を受信するデータ収集モジュールに送信する命令と、
前記複数のコンテキストの前記複数のネットワークソケットを通じた前記データフローについての前記統計のリポートを生成する命令と、
を更に備える請求項12に記載の非一時的コンピュータ可読媒体。
【請求項17】
前記ネットワークソケットイベント要求は、前記ネットワークソケットをオープンすること、クローズすること、及びリッスンすることのうちの何れかである、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項18】
前記アプリケーション識別子は、(i)オペレーティングシステムが前記アプリケーションの実行可能ファイルをロードし実行する場合に作成されるプロセスを識別するとともに(ii)前記アプリケーションの実行可能ファイルを識別するプロセス識別子に少なくとも基づく、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項19】
前記アプリケーション識別子の指示は、前記アプリケーションの実行可能ファイルのファイル名に少なくとも基づく、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記アプリケーション識別子の指示は、前記アプリケーションの実行可能ファイルのハッシュに少なくとも基づく、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項21】
前記トランスポート層のインタフェースは前記ネットワークソケットイベント要求をインターセプトし、前記インタフェースはトランスポートドライバインタフェースである、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項22】
前記トランスポート層のインタフェースが前記ネットワークソケットイベント要求をインターセプトする、請求項12に記載の非一時的コンピュータ可読媒体。
【請求項23】
プロセッサと、コンテキストを有するメモリとを備えるコンピュータシステムであって、
前記コンテキストは、
第1のコンテキストのネットワークソケットを通じたデータフローについての統計を収集することを実行する命令であって、アプリケーション当たり、ユーザ当たり、仮想マシン当たりのバイト数/パケット数として、ネットワークフロー情報を示す当該統計を収集することを実行する命令と、
前記収集した統計に基づいてネットワークポリシーを変更することを実行する命令と、
第1のコンテキスト内で実行中のエージェントにより、アプリケーションからのネットワークソケットイベント要求を、前記ネットワークソケットイベント要求が前記第1のコンテキストのネットワークスタック内のトランスポート層に到達する前にインターセプトすることを実行する命令と、
前記エージェントにより、第2のコンテキスト内で実行中のセキュリティサーバに、前記インターセプトされたネットワークソケットイベント要求を許可するか拒絶するかについての判断についての要求を送信することを実行する命令であって、前記判断についての要求はアプリケーション識別子と前記アプリケーションのドメインとを含む、前記判断についての要求を送信することを実行する命令と、
前記エージェントにより、前記セキュリティサーバから前記ネットワークソケットイベント要求の許可又は拒絶を示す判断を受信することを実行する命令であって、前記アプリケーション識別子の指示、前記アプリケーションのドメイン、及び前記変更されたネットワークポリシーに少なくとも部分的に基づく当該判断を受信することを実行する命令と、
前記判断が前記ネットワークソケットイベント要求の拒絶である場合、前記エージェントにより、前記ネットワークソケットイベント要求が前記第1のコンテキスト内の前記トランスポート層に到達することを阻止することを実行する命令と、
を実行する、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
この開示は、ネットワークでのアプリケーションアウェアネスの方法及び装置に関する。
【背景技術】
【0002】
仮想化環境は、ファイアウォールルールに頼ってネットワークを悪意のあるトラフィックから保護する。そのようなファイアウォールルールは、ネットワークソケット情報に基づいて判断を行う。パケットヘッダから抽出されるポート情報が、トラフィックを許可するか、又は拒絶するためのファイアウォールルールの基本であり得る。例えば、ファイアウォールは、慣例によりHTTPトラフィックに割り当てられるネットワークポート、すなわち、ポート80上のトラフィックを遮断又は許可することにより、HTTPトラフィックを許可又は拒絶することができる。この手法は適用が容易であるが、その結果生成されるネットワークファイアウォールは信頼性が低い。例えば、アプリケーションは、HTTPトラフィックに向けてポート80を開放し、誤ってHTTPトラフィックとして識別された悪意のあるトラフィックを許可することがある。代替的には、悪意のないHTTPトラフィックが、ポート80以外のポートを通して発生し、非標準的なポートであることに起因して、悪意のある非HTTPトラフィックとして誤って処理されることがある。さらに、HTTPトラフィックとして正しく識別されるトラフィックであっても、悪意のあるトラフィックであることがある。
【0003】
ディープパケット検査(DPI)が、ポート遮断への代替である。ポート遮断と比較して、DPIを用いる場合、パケットペイロードを調べて、プロトコルを特定し、様々な技法を使用して悪意のあるコンテンツを検出することができる。したがって、DPIに基づくファイアウォールは、ポート遮断よりもはるかに高い精度で悪意のあるトラフィックを識別し遮断することができる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
不都合なことに、DPIには様々な欠点がある。パケット検査には、ネットワーク待ち時間を増大させ得る大きな処理リソースが必要である。さらに、DPIは、悪意のあるトラフィックを検出するために、生じ得るトラフィックシグネチャのバリエーションの大きさにより、トラフィックシグネチャの巨大なデータベースと、そのデータベースの頻繁な更新とを必要とする。最後に、ネットワークトラフィックが暗号化される場合、DPIは、ネットワークトラフィックの暗号化ペイロードの属性を抽出することができない。SSLプロキシがパケットを復号化し、この後者の欠点を解決する場合であっても、そのようなSSLプロキシはスループットを減少させる。
【課題を解決するための手段】
【0005】
ネットワークポリシーを実施する方法が、本明細書に記載される。本方法では、第1のコンテキスト内で実行中のアプリケーションからのネットワークソケットイベント要求は、その要求が第1のコンテキスト内のトランスポート層に到達する前に、エージェントによってインターセプトされる。コンテキストとは、仮想化ソフトウェア、物理的コンピュータ、又は仮想化ソフトウェア及び物理的コンピュータの組合せを指す。要求のインターセプトに応答して、エージェントは、ネットワークソケットイベント要求を、第1のコンテキストとは別個の第2のコンテキスト内で実行中のセキュリティサーバに通信することを許可するか拒絶するかについての判断を要求する。判断に対する要求は、アプリケーションの識別情報を含む。次に、エージェントは、セキュリティサーバからネットワークソケットイベント要求の許可又は拒絶の何れかを受信する。この許可又は拒絶は、アプリケーションの識別情報及びセキュリティポリシーに少なくとも部分的に基づく。エージェントは、拒絶がセキュリティサーバから受信される場合、ネットワークソケットイベントがトランスポート層に到達するのを阻止する。一実施形態では、本方法は、コンピュータによって実行可能なソフトウェア命令を実施する機械可読媒体を使用して実施される。
【図面の簡単な説明】
【0006】
【
図1】仮想マシンのネットワーク層スタック内で生成されるネットワークソケットイベント要求を示すブロック図である。
【
図2】複数の仮想マシンであって、間で、ネットワークソケットについての判断に対する要求及び対応する判断が通信される複数の仮想マシンを有するアーキテクチャを示す機能ブロック図である。
【
図3】アプリケーション識別情報に基づくネットワークソケットイベント要求についての判断を示す、仮想マシンコンテキストでのバウンス図である。
【
図4】アプリケーション識別情報に基づいてネットワークソケットイベント要求についての判断を示す、非仮想マシンコンテキストでのバウンス図である。
【
図5】複数の仮想マシンであって、間で、要求されたネットワークソケットを通るデータフローについての統計が通信される複数の仮想マシンを有するアーキテクチャを示す機能ブロック図である。
【
図6】仮想マシンとのデータフローについての統計の集計を示す、仮想マシンコンテキストでのバウンス図である。
【
図7】非仮想マシンエージェントとのデータフローについての統計の集計を示す、非仮想マシンコンテキストでのバウンス図である。
【発明を実施するための形態】
【0007】
図1は、仮想マシンのネットワーク層スタック内で生成されるネットワークソケットイベント要求を発行するプロセスでの仮想マシン20を示すブロック図である。仮想マシン20は、物理的サーバ10aで実行中の仮想化ソフトウェア30aによって管理される。仮想化ソフトウェア30aは、追加の仮想マシンを管理することもできる。仮想化ソフトウェア30aは、ネイティブであってもよく、又はホストされてもよく、1つ又は複数の仮想マシンを管理し、同じコンピュータハードウェアリソースでのオペレーティングシステムの複数の同時インスタンスを可能にする。コンピュータハードウェアリソースは、ネットワーククラウドとして示されるネットワーク2によって相互接続される物理的サーバ10a〜10zを含む。物理的サーバ10a〜10zは、プロセッサと、メモリと、本明細書に記載される技術を実行するコンピュータによって実行可能なコンピュータ可読命令を有する非一時的コンピュータ可読媒体とを含む。任意の数のサーバ10a〜10zがネットワーク2に存在し得、任意の数の仮想マシン20が各物理的サーバ10a〜10zに存在し得る。例えば、仮想化ソフトウェア30yは物理的サーバ10yで実行中であり、物理的サーバ10zは実行中の仮想化ソフトウェアを有さない。サーバ10a〜10zはセキュリティサーバを含み得る。
【0008】
仮想マシン20内で、複数のネットワーク層をスタックし得、物理層は概念的にスタックの一番下に配置される。物理層は仮想マシンハードウェア28aとして示される。仮想マシンハードウェア28aの上はデータリンク層27aである。データリンク層27aの上はネットワーク層26aである。ネットワーク層26aの上はトランスポート層25aである。トランスポート層25aの上はアプリケーション/プレゼンテーション/セッション層21aである。アプリケーション22aは、アプリケーション/プレゼンテーション/セッション層21a内で実行中であり得る。
【0009】
アプリケーション22aは、ネットワークソケットイベント要求23aを送信する。ネットワークソケットは、ローカルアドレスと、ローカルポートとを有するエンドポイントである。結果として生成されるネットワーク接続は、ソースIP、ソースポート、プロトコル、宛先IP、及び宛先ポートを含む。TCPソケット等のコネクション指向型ソケットは、コネクション状態を含み得るが、UDPソケット等のコネクションレス型ソケットは、コネクション状態を含まない。ネットワークソケットイベント要求23aは、ネットワークソケットでのステータス変更、例えば、ネットワークオープン、ネットワーククローズ、及びリッスン等の要求されたUDP又はTCPイベントであり得る。
【0010】
トランスポート層インタフェース24aは、トランスポート層25aとアプリケーション/プレゼンテーション/セッション層21aとの間に位置決めされる。一実施形態では、トランスポート層インタフェース24aは、アプリケーション/プレゼンテーション/セッション層21aからのネットワークソケットイベント要求23aを、ネットワークソケットイベント要求23aがトランスポート層25aに到達する前にインターセプトし得る。
【0011】
トランスポート層インタフェース24aの例は、トランスポートドライバインタフェース(TDI)及びウィンドウズ(Windows)(登録商標)プラットフォームでのウィンドウズ(Windows)(登録商標)フィルタリングプラットフォーム(WFP)である。他の実施形態では、トランスポート層インタフェース24aは、リナックス(Linux)(登録商標)プラットフォーム、MacOS(登録商標)プラットフォーム、又は他のプラットフォームで提供される。
【0012】
要求されたネットワークイベントは、以下のように要求側アプリケーションに結び付けることができる。幾つかの実施形態では、afd.sys等のトランスポート層25aの上のTDIクライアントは、TCPIP.sys及びTCPIP6.sys等のTDIトランスポートを有するI/O要求パケット(IRP:I/O request packet)を使用して通信する。IRPはアプリケーション22aのコンテキストで生成されるため、トランスポート層インタフェース24aは、オープン及びリッスン等のネットワーク接続を開始するネットワークソケットイベントのソースとして、アプリケーション22aを識別することができる。例えば、トランスポート層インタフェース24aは、IRPから要求側アプリケーション22aのプロセスIDを識別し、次に、プロセスIDを、プロセスIDへのアプリケーション22aのバイナリイメージにマッピングすることができる。ネットワーク接続の過程中、アプリケーション22aは、送信、受信、及びクローズ等の他のネットワークソケットイベントを生成し得る。TDIクライアントもIRPを使用してこれらのイベントを生成するため、トランスポート層インタフェース24も同様にして、それらのイベントを識別し、要求側アプリケーション22a及びプロセスIDにマッピングすることができる。
【0013】
トランスポート層インタフェース24aへの代替は、ネットワークソケットイベント要求23aを許可又は遮断し、概念的に、ベースのトランスポートプロバイダの上に存在することができる階層サービスプロバイダである。例えば、ウィンソック(Winsock)又はウィンソック2(Winsock 2)サービスプロバイダインタフェース(SPI)は、基礎となるベースのTCP/IPスタックに頼りながら、ネットワークソケットイベント要求23aを許可又は遮断するモジュールによって実施することができる。
【0014】
仮想マシン20は、仮想マシン20とは別個の仮想マシン(
図2に示されるセキュリティ仮想マシン80等)に頼り、ネットワークソケットイベント要求23aを許可するか、それとも拒絶するかを判断し得る。セキュリティ仮想マシン80は、中央管理し得るポリシーに基づいて判断し得る。幾つかの実施形態では、仮想マシン20内の、
図2を参照して後述するエージェント29は、トランスポート層インタフェース24aと通信し、ネットワークソケットイベントを許可するか、それとも拒絶するかについての判断に対する要求をセキュリティ仮想マシン80に送信する。要求は、アプリケーションファイル名、アプリケーション実行可能ハッシュ、アプリケーション識別子、及び/又はアプリケーション22aのユーザ/ドメイン等のアプリケーション22aについての情報を含み得る。エージェント29は、セキュリティ仮想マシン80から判断を受信し、次に、ネットワークソケットイベント要求23aを許可又は拒絶する。
【0015】
別の実施形態では、ネットワークポリシーは、セキュリティ仮想マシンとは異なる構成要素によって実施し得る。セキュリティ仮想マシンは、ネットワークソケットイベントからのアプリケーション情報を消費し、このアプリケーション情報を用いてネットワークポリシーを評価する。アプリケーション情報がネットワークポリシーの対象となるアプリケーションを識別するような一致が見つかる場合、セキュリティ仮想マシンは1つ又は複数の適切なファイアウォールルールを生成し、このルールは実施エンジンにプッシュされる。実施エンジンは、それ自体の物理的サーバマシンに存在してもよく、又は記載される技術の別の部分と物理的サーバマシンを共有してもよい。
【0016】
ネットワークソケットイベントを許可するか、それとも拒絶するかについての判断に基づいて、エージェント29は、ネットワークソケットイベント要求23aをトランスポート層25aに転送するか、又は破棄する。エージェント29がネットワークソケットイベント要求23aをトランスポート層25aに転送する場合、ネットワークソケットイベント要求23aは、トランスポート層25a、ネットワーク層26a、データリンク層27a、及び仮想マシンハードウェア28によって層毎に処理され、その後、ネットワーク2を介してネットワーク活動が生成される。
【0017】
物理的サーバ10zは、実行中の仮想化ソフトウェアを有さない。物理的サーバ10zは、アプリケーション/プレゼンテーション/セッション層21z、アプリケーション22z、ネットワークソケットイベント要求23z、トランスポート層インタフェース24z、トランスポート層25z、ネットワーク層26z、データリンク層27z、及びハードウェア28zを有する。ネットワークソケットイベント要求23zは、ネットワークソケットイベント要求23aと同様であるが、非仮想コンテキストで機能する。
【0018】
図2は、エージェント29と、セキュリティ仮想マシン80と、他の仮想マシン90と、ネットワークファイアウォールモジュール96と、ネットワークポリシー管理モジュール98と、アプリケーション識別モジュール100とを含む仮想マシン20を有するアーキテクチャを示すブロック図である。ネットワーク管理者は、ネットワークポリシー管理モジュール98を介してネットワークポリシーを決定することができる。ネットワークポリシーを実施するファイアウォールルールは、セキュリティ仮想マシン80によって決定することができる。アプリケーション識別モジュール100は、アプリケーション識別情報を提供して、仮想マシン20のエージェント29からのネットワークソケットイベント要求を許可するか、それとも遮断するかを判断するに当たり、セキュリティ仮想マシン80を支援することができる。この決定の実施は、仮想マシン20内でのネットワークソケットの更なる処理を阻止若しくは許可することができる仮想マシン20により、又は特定のネットワーク接続を阻止又は許可することができるファイアウォールモジュール96によって行うことができる。
【0019】
仮想マシン20内のエージェント29は、サービス又はデーモンとしてバックグラウンドで実行されるコンピュータプログラムとして実施し得る。様々な仮想マシン及びモジュールは、1つ又は複数の物理的サーバにあり得る。別の実施形態では、セキュリティ仮想マシン80は、仮想化ソフトウェア30a内のセキュリティモジュール又はネットワーク2(
図1に示される)に存在する物理的アプライアンスによって置換するか、又は補完し得る。様々な実施形態では、ネットワークファイアウォールモジュール96は、仮想であってもよく、又は物理的であってもよい。
【0020】
図3は、アプリケーション識別情報に基づいてネットワークソケットイベント要求についての判断を示す仮想マシンコンテキストでのバウンス図を示す。一実施形態では、エージェント29は、ネットワークソケットイベントを許可するか、それとも拒絶するかについての判断に対する要求81を、ネットワーク2を介してセキュリティ仮想マシン80に送信する。仮想マシン20によって要求される判断をするために、セキュリティ仮想マシン80は、アプリケーション識別モジュール100からの、ネットワークソケットイベントを許可するか、それとも拒絶するかについての判断に対する要求81を指示したネットワークソケットイベント要求23(
図1から)を送信したアプリケーション22についてのアプリケーション情報に頼る。したがって、要求81は、アプリケーション名、アプリケーションの実行可能ファイルのハッシュ、何らかの他のアプリケーション識別子、又はアプリケーション22のユーザ/ドメイン等のアプリケーションコンテキスト情報を含む。
【0021】
セキュリティ仮想マシン80は、ネットワーク2を介してアプリケーション識別要求101をアプリケーション識別モジュール100に送信する。アプリケーションコンテキスト情報は、アプリケーション識別モジュール100によって使用されて、製品名、ベンダー名、アプリケーションカテゴリ、アプリケーション脅威レベル等の、ネットワークソケットイベント要求23を送信したアプリケーション22についてのより多くの情報を生成する。セキュリティ仮想マシン80でのネットワークポリシーのファイアウォールルールは、このアプリケーションメタデータのうちの任意のデータに基づくことができる。
【0022】
アプリケーション識別要求101は、ネットワークソケットイベント要求を開始するアプリケーションのシグネチャと、アプリケーション識別モジュール100が頼っているシグネチャデータベース内の参照アプリケーションシグネチャとの照合に繋がる。
【0023】
様々な実施形態では、アプリケーションシグネチャは、少なくとも、アプリケーションの実行可能ファイルのファイル名、アプリケーションの実行可能ファイルのハッシュ、及び/又はアプリケーションの実行可能ファイルに基づく。アプリケーション識別モジュール100は、ネットワーク2を介してセキュリティ仮想マシン80に、アプリケーション識別情報102で応答する。
【0024】
アプリケーション識別情報102の例は、アプリケーションの名前、バージョン、カテゴリ、製造業者、信頼性レベル、及び脅威レベルである。アプリケーション識別情報102は、セキュリティ仮想マシン80によって使用されて、ネットワークソケットイベント要求を許可するか、それとも拒絶するかについてのファイアウォールルールに基づく判断を実施することができる。
【0025】
様々な実施形態では、ネットワークポリシーから生じるファイアウォールルール及び/又はネットワークポリシーは、セキュリティ仮想マシン80、又はセキュリティ仮想マシン80とは別個であり、セキュリティ仮想マシン80がアクセス可能な集中ネットワークポリシー管理モジュールに記憶され、更新される。集中ネットワークポリシー管理モジュールは、別個の集中ネットワークポリシー管理サーバにあってもよく、又は仮想マシンと物理的サーバを共有してもよい。集中ネットワークポリシー管理モジュールを介して、管理者は、ファイアウォールルールを決定するネットワークポリシーを定義することができる。新しいルールは、セキュリティ仮想マシン登録スキームに従ってセキュリティ仮想マシン80(及び他のセキュリティ仮想マシン)にプッシュし得る。
【0026】
ネットワークポリシー例としては、以下が挙げられる:
(i)「SYN_SENTイベント受信時、uTorrentによって開始される全てのTCPトラフィックを遮断」等のコネクション状態メッセージZを受信したとき、アプリケーションYによって開始されるプロトコルXの全トラフィックを遮断/許可する。
(ii)アプリケーションYによって開始される全てのTCPトラフィックを遮断/許可する。
(iii)カテゴリZ(例えば、P2P)に属する、アプリケーションYによって開始される全てのネットワークトラフィックを遮断/許可する。
(iv)ベンダーZによって作られたアプリケーションによって開始される全てのネットワークトラフィックを遮断/許可する。
【0027】
幾つかの実施形態では、アプリケーション識別は有利であり、その理由は、ネットワークソケットイベントを要求するアプリケーションの識別精度を犠牲にせずにネットワークソケットイベント要求の承認又は拒絶に関連する仮想マシン20又は他の仮想マシン90でのディープパケット検査が低減するか、又はなくなるためである。
【0028】
アプリケーション識別モジュール100は、クラウドベースのアプリケーション識別サービスとして実施することもできる。他の実施形態では、アプリケーション識別モジュール100は、セキュリティ仮想マシン80、仮想化ソフトウェア30a、又はネットワーク2によってアクセスされる別の仮想マシンに配置される。そのような比較的集中化された実施形態は、アプリケーションシグネチャ更新でのオーバーヘッドを最小に抑える。アプリケーション識別モジュール100は、アプリケーションシグネチャをアプリケーション識別情報にマッピングする中央シグネチャデータベースを含む。中央シグネチャデータベースは、シグネチャ更新に頼るロケーション数を低減する。シグネチャは、ネットワークソケットイベントを要求するアプリケーションを識別するのに十分に完全な指示であり得る。他の実施形態では、指示は、アプリケーションを識別するのに不十分な完全さであり得るが、それにもかかわらず、アプリケーションを安全(ネットワークソケットイベントを許可すべきであるような)又は非安全(ネットワークソケットイベントを拒絶すべきであるような)として識別するのに十分に完全な指示であり得る。
【0029】
更に別の実施形態では、アプリケーション識別モジュール100は仮想マシン20に配置されるが、これには、ネットワークソケットイベント要求を許可するか、それとも拒絶するかについての判断を要求するあらゆる仮想マシンでのアプリケーションシグネチャ更新が必要であるという欠点がある。
【0030】
ネットワークソケットイベント82について判断するために、セキュリティ仮想マシン80は、ネットワークセキュリティポリシーをアプリケーション識別情報102に適用し、ネットワークセキュリティポリシーを実施するファイアウォールルールが生成される。ネットワークソケットイベント82についての判断は、ネットワークソケットイベントについての判断要求を送信した仮想マシン20に返信される。別の実施形態では、ネットワークソケットイベント82についての判断は、判断を実施するファイアウォールに返信される。そのようなファイアウォールは、仮想ファイアウォールであってもよく、又は物理的なファイアウォールであってもよい。セキュリティ仮想マシン80のファイアウォールポリシー及び更新は、ネットワーク2から通信することができ、幾つかの実施形態では、別個のポリシー管理モジュール(図示せず)から通信することができる。
【0031】
更に別の実施形態では、セキュリティ仮想マシン80は、ネットワーク2を介して接続された他の仮想マシンでの、ネットワークソケットイベントを許可するか、それとも拒絶するかについての判断要求も処理する。他の仮想マシンは、そのような判断に対する要求をセキュリティ仮想マシン80に送信する。他の仮想マシンによって要求される判断を行うために、セキュリティ仮想マシン80は、アプリケーション識別モジュール100から要求されるアプリケーション情報に頼り、アプリケーション識別モジュール100は、アプリケーション識別情報をセキュリティ仮想マシン80に提供する。セキュリティ仮想マシン80は、ファイアウォールポリシーをアプリケーション識別情報に適用し、ネットワークソケットイベントについての結果として生成される判断を、ネットワークソケットイベントについての判断要求を送信した対応する他の仮想マシン90に返信する。
【0032】
図4は、アプリケーション識別情報に基づくネットワークソケットイベント要求についての判断を示す、非仮想マシンコンテキストでのバウンス図である。動作は
図3と同様である。しかし、物理的セキュリティサーバがセキュリティ仮想マシンに取って代わり、非仮想マシンエージェントが仮想マシンエージェントに取って代わる。別の実施形態では、物理的セキュリティサーバは、他の非仮想マシンエージェントのネットワークソケットイベントを許可するか、それとも拒絶するかについての要求も処理する。
【0033】
他の実施形態は
図3及び
図4の態様を組み合わせる。例えば、非仮想マシンエージェント及び仮想エージェントを組み合わせることができる。非VMエージェントをセキュリティ仮想マシンと併用することができる。VMエージェントを物理的セキュリティサーバと併用することができる。
【0034】
図5は、仮想マシン20と、セキュリティ仮想マシン80と、他の仮想マシン90と、データフロー可視性モジュール110とを有するアーキテクチャを示すブロック図である。様々な仮想マシン及びモジュールは、1つ又は複数の物理的サーバにあることができる。仮想マシン内で、TDI/WFPトランスポート層インタフェースは、ネットワークソケットについての統計を収集することができる。仮想マシン外で、コネクションレベル統計を収集又は追跡する任意のモジュールが、同じことを実行することができる。セキュリティ仮想マシン80は、仮想マシン20及び他のマシン90によって要求されるネットワーク接続を通じたデータフローについての統計を収集することができる。データフロー可視性モジュール110は、集計された統計を要求し受信することができる。別の実施形態では、セキュリティ仮想マシン80は、仮想化ソフトウェア30a又はネットワーク2(
図1に示される)に存在するアプリケーションで置換するか、補完することができる。他の実施形態では、ネットワークファイアウォール又はホストコネクション追跡モジュールは、仮想マシン20及び他のマシン90によって要求されるネットワーク接続を通るデータフローについての統計(例えば、接続単位でのアプリケーションについての情報)を収集することができる。
【0035】
図6は、仮想マシンとのデータフローについての統計の集計を示す、仮想マシンコンテキストでのバウンス図である。一実施形態では、仮想マシン20は、ネットワーク2を介して、(仮想マシン20の要求されたネットワークソケットを通じた)データフロー83についての統計をセキュリティ仮想マシン80に送信する。他の仮想マシン90も、ネットワーク2を介して、(各仮想マシンの要求されたネットワークソケットを通じた)データフロー95についての統計をセキュリティ仮想マシン80に送信する。そのような統計は、ある間隔で、例えば30秒毎にセキュリティ仮想マシン80に送信することができる。ネットワークソケットは、
図3及び
図4に関連して考察したように要求し、承認することができる。
【0036】
セキュリティ仮想マシン80は、仮想マシン20からのデータフロー83についての統計と、他の仮想マシン90からのデータフロー95についての統計とを集計する。集計された統計を処理して、アプリケーション当たり、ユーザ当たり、仮想マシン当たり等のバイト数/パケット数として、ネットワークフロー情報を示すことができる。幾つかの実施形態では、
図1及び
図2に関連して考察したアプリケーション識別プロセスにより、アプリケーション当たりの集計統計は特に信頼性が高い。同様に、ネットワークソケットイベントについての判断要求を続けて判断するためのファイアウォールポリシーを変更するに当たり、そのような集計統計を考慮することができる。そのような変更されたファイアウォールポリシー下で承認されるネットワークソケットを通じたデータフロー統計は、示されるように集計することができる。データフロー可視性モジュール110は、データフロー112についての統計を要求する。セキュリティ仮想マシン80は、集計統計111で応答する。
【0037】
図7は、非仮想マシンエージェントとのデータフローについての統計の集計を示す、非仮想マシンコンテキストでのバウンス図である。動作は
図8と同様である。しかし、物理的セキュリティサーバがセキュリティ仮想マシンに取って代わり、非仮想マシンエージェントが仮想マシンエージェントに取って代わり、他の非VMエージェントが他の仮想マシンに取って代わる。
【0038】
他の実施形態は
図7及び
図8の態様を組み合わせる。例えば、非仮想マシンエージェント及び仮想エージェントを組み合わせることができる。非VMエージェントをセキュリティ仮想マシンと併用することができる。VMエージェントを物理的セキュリティサーバと併用することができる。
【0039】
開示される技術を実施することができるアーキテクチャの例は、シトリックス(Citrix)(登録商標)、マイクロソフト(Microsoft)(登録商標)、VMウェア(VMWare)(登録商標)、及びゼン(Xen)(登録商標)コミュニティによるハイパーバイザ及び他の仮想化製品である。
【0040】
本発明は、上記で詳述される好ましい実施形態及び例を参照して開示されるが、これらの例が限定の意味ではなく例示を意図していることを理解されたい。当業者であれば変更形態及び組合せを容易に想到し、これらの変更形態及び組合せは本発明の趣旨及び以下の特許請求の範囲内にあると考えられる。