(57)【特許請求の範囲】
【請求項１】
コンピュータデバイス上で第１のコンテキスト内で実行中のアプリケーションに対してネットワークポリシーを実施する方法であって、
前記第１のコンテキストのネットワークソケットを通じたデータフローについての統計を収集すること、
前記収集した統計に基づいて前記ネットワークポリシーを変更すること、
前記第１のコンテキスト内で実行中のエージェントにより、前記アプリケーションからのネットワークソケットイベント要求を、前記ネットワークソケットイベント要求が前記第１のコンテキストのネットワークスタック内のトランスポート層に到達する前にインターセプトすること、
前記エージェントにより、第２のコンテキスト内で実行中のセキュリティサーバに、前記インターセプトされたネットワークソケットイベント要求を許可するか拒絶するかについての判断についての要求を送信することであって、前記判断についての要求はアプリケーション識別子と前記アプリケーションのドメインとを含む、前記判断についての要求を送信すること、
前記エージェントにより、前記セキュリティサーバから前記ネットワークソケットイベント要求の許可又は拒絶を示す判断を受信することであって、前記アプリケーション識別子の指示、前記アプリケーションのドメイン、及び前記変更されたネットワークポリシーに少なくとも部分的に基づく当該判断を受信すること、
前記判断が前記ネットワークソケットイベント要求の拒絶である場合、前記エージェントにより、前記ネットワークソケットイベント要求が前記第１のコンテキスト内の前記トランスポート層に到達することを阻止すること、
を備える方法。
【請求項２】
前記アプリケーション識別子は、前記第１のコンテキストの前記トランスポート層のインタフェースから受信されたデータに基づく、請求項１に記載の方法。
【請求項３】
前記判断が前記ネットワークソケットイベント要求の許可である場合、前記ネットワークソケットイベント要求を前記第１のコンテキスト内の前記アプリケーションから前記第１のコンテキスト内の前記トランスポート層に送信することを更に備える請求項１に記載の方法。
【請求項４】
前記セキュリティサーバは、複数のコンテキスト内のネットワークソケットイベント要求を許可するか拒絶するかについての判断を行う、請求項１に記載の方法。
【請求項５】
前記第１のコンテキストからの前記ネットワークソケットを通じたデータフローについての前記統計を、複数のコンテキストの複数のネットワークソケットを通じたデータフローについての統計を受信するデータ収集モジュールに送信すること、
前記複数のコンテキストの前記複数のネットワークソケットを通じた前記データフローについての前記統計のリポートを生成すること、
を更に備える請求項１に記載の方法。
【請求項６】
前記ネットワークソケットイベント要求は、前記ネットワークソケットをオープンすること、クローズすること、及びリッスンすることのうちの何れかである、請求項１に記載の方法。
【請求項７】
前記アプリケーション識別子は、（ｉ）オペレーティングシステムが前記アプリケーションの実行可能ファイルをロードし実行する場合に作成されるプロセスを識別するとともに（ｉｉ）前記アプリケーションの実行可能ファイルを識別するプロセス識別子に少なくとも基づく、請求項１に記載の方法。
【請求項８】
前記アプリケーション識別子の指示は、前記アプリケーションの実行可能ファイルのファイル名に少なくとも基づく、請求項１に記載の方法。
【請求項９】
前記アプリケーション識別子の指示は、前記アプリケーションの実行可能ファイルのハッシュに少なくとも基づく、請求項１に記載の方法。
【請求項１０】
前記トランスポート層のインタフェースは前記ネットワークソケットイベント要求をインターセプトし、前記インタフェースはトランスポートドライバインタフェースである、請求項１に記載の方法。
【請求項１１】
前記トランスポート層のインタフェースが前記ネットワークソケットイベント要求をインターセプトする、請求項１に記載の方法。
【請求項１２】
コンテキストによって実行可能なコンピュータ可読命令を備えた非一時的コンピュータ可読媒体であって、
第１のコンテキストのネットワークソケットを通じたデータフローについての統計を収集することを実行する命令であって、アプリケーション当たり、ユーザ当たり、仮想マシン当たりのバイト数／パケット数として、ネットワークフロー情報を示す当該統計を収集することを実行する命令と、
前記収集した統計に基づいてネットワークポリシーを変更することを実行する命令と、
第１のコンテキスト内で実行中のエージェントにより、アプリケーションからのネットワークソケットイベント要求を、前記ネットワークソケットイベント要求が前記第１のコンテキストのネットワークスタック内のトランスポート層に到達する前にインターセプトすることを実行する命令と、
前記エージェントにより、第２のコンテキスト内で実行中のセキュリティサーバに、前記インターセプトされたネットワークソケットイベント要求を許可するか拒絶するかについての判断についての要求を送信することを実行する命令であって、前記判断についての要求はアプリケーション識別子と前記アプリケーションのドメインとを含む、前記判断についての要求を送信することを実行する命令と、
前記エージェントにより、前記セキュリティサーバから前記ネットワークソケットイベント要求の許可又は拒絶を示す判断を受信することを実行する命令であって、前記アプリケーション識別子の指示、前記アプリケーションのドメイン、及び前記変更されたネットワークポリシーに少なくとも部分的に基づく当該判断を受信することを実行する命令と、
前記判断が前記ネットワークソケットイベント要求の拒絶である場合、前記エージェントにより、前記ネットワークソケットイベント要求が前記第１のコンテキスト内の前記トランスポート層に到達することを阻止するように実行する命令と、
を備える非一時的コンピュータ可読媒体。
【請求項１３】
前記アプリケーション識別子は、前記第１のコンテキストの前記トランスポート層のインタフェースから受信されたデータに基づく、請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項１４】
前記ネットワークソケットイベント要求を前記第１のコンテキスト内の前記アプリケーションから前記第１のコンテキスト内の前記トランスポート層に送信する命令を更に備える請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項１５】
前記セキュリティサーバは、複数のコンテキスト内のネットワークソケットイベント要求を許可するか拒絶するかについての判断を行う、請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項１６】
前記第１のコンテキストからの前記統計を、複数のコンテキストの複数のネットワークソケットを通じたデータフローについての統計を受信するデータ収集モジュールに送信する命令と、
前記複数のコンテキストの前記複数のネットワークソケットを通じた前記データフローについての前記統計のリポートを生成する命令と、
を更に備える請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項１７】
前記ネットワークソケットイベント要求は、前記ネットワークソケットをオープンすること、クローズすること、及びリッスンすることのうちの何れかである、請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項１８】
前記アプリケーション識別子は、（ｉ）オペレーティングシステムが前記アプリケーションの実行可能ファイルをロードし実行する場合に作成されるプロセスを識別するとともに（ｉｉ）前記アプリケーションの実行可能ファイルを識別するプロセス識別子に少なくとも基づく、請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項１９】
前記アプリケーション識別子の指示は、前記アプリケーションの実行可能ファイルのファイル名に少なくとも基づく、請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項２０】
前記アプリケーション識別子の指示は、前記アプリケーションの実行可能ファイルのハッシュに少なくとも基づく、請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項２１】
前記トランスポート層のインタフェースは前記ネットワークソケットイベント要求をインターセプトし、前記インタフェースはトランスポートドライバインタフェースである、請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項２２】
前記トランスポート層のインタフェースが前記ネットワークソケットイベント要求をインターセプトする、請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項２３】
プロセッサと、コンテキストを有するメモリとを備えるコンピュータシステムであって、
前記コンテキストは、
第１のコンテキストのネットワークソケットを通じたデータフローについての統計を収集することを実行する命令であって、アプリケーション当たり、ユーザ当たり、仮想マシン当たりのバイト数／パケット数として、ネットワークフロー情報を示す当該統計を収集することを実行する命令と、
前記収集した統計に基づいてネットワークポリシーを変更することを実行する命令と、
第１のコンテキスト内で実行中のエージェントにより、アプリケーションからのネットワークソケットイベント要求を、前記ネットワークソケットイベント要求が前記第１のコンテキストのネットワークスタック内のトランスポート層に到達する前にインターセプトすることを実行する命令と、
前記エージェントにより、第２のコンテキスト内で実行中のセキュリティサーバに、前記インターセプトされたネットワークソケットイベント要求を許可するか拒絶するかについての判断についての要求を送信することを実行する命令であって、前記判断についての要求はアプリケーション識別子と前記アプリケーションのドメインとを含む、前記判断についての要求を送信することを実行する命令と、
前記エージェントにより、前記セキュリティサーバから前記ネットワークソケットイベント要求の許可又は拒絶を示す判断を受信することを実行する命令であって、前記アプリケーション識別子の指示、前記アプリケーションのドメイン、及び前記変更されたネットワークポリシーに少なくとも部分的に基づく当該判断を受信することを実行する命令と、
前記判断が前記ネットワークソケットイベント要求の拒絶である場合、前記エージェントにより、前記ネットワークソケットイベント要求が前記第１のコンテキスト内の前記トランスポート層に到達することを阻止することを実行する命令と、
を実行する、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、ネットワークでのアプリケーションアウェアネスの方法及び装置に関する。
【背景技術】
【０００２】
仮想化環境は、ファイアウォールルールに頼ってネットワークを悪意のあるトラフィックから保護する。そのようなファイアウォールルールは、ネットワークソケット情報に基づいて判断を行う。パケットヘッダから抽出されるポート情報が、トラフィックを許可するか、又は拒絶するためのファイアウォールルールの基本であり得る。例えば、ファイアウォールは、慣例によりＨＴＴＰトラフィックに割り当てられるネットワークポート、すなわち、ポート８０上のトラフィックを遮断又は許可することにより、ＨＴＴＰトラフィックを許可又は拒絶することができる。この手法は適用が容易であるが、その結果生成されるネットワークファイアウォールは信頼性が低い。例えば、アプリケーションは、ＨＴＴＰトラフィックに向けてポート８０を開放し、誤ってＨＴＴＰトラフィックとして識別された悪意のあるトラフィックを許可することがある。代替的には、悪意のないＨＴＴＰトラフィックが、ポート８０以外のポートを通して発生し、非標準的なポートであることに起因して、悪意のある非ＨＴＴＰトラフィックとして誤って処理されることがある。さらに、ＨＴＴＰトラフィックとして正しく識別されるトラフィックであっても、悪意のあるトラフィックであることがある。
【０００３】
ディープパケット検査（ＤＰＩ）が、ポート遮断への代替である。ポート遮断と比較して、ＤＰＩを用いる場合、パケットペイロードを調べて、プロトコルを特定し、様々な技法を使用して悪意のあるコンテンツを検出することができる。したがって、ＤＰＩに基づくファイアウォールは、ポート遮断よりもはるかに高い精度で悪意のあるトラフィックを識別し遮断することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
不都合なことに、ＤＰＩには様々な欠点がある。パケット検査には、ネットワーク待ち時間を増大させ得る大きな処理リソースが必要である。さらに、ＤＰＩは、悪意のあるトラフィックを検出するために、生じ得るトラフィックシグネチャのバリエーションの大きさにより、トラフィックシグネチャの巨大なデータベースと、そのデータベースの頻繁な更新とを必要とする。最後に、ネットワークトラフィックが暗号化される場合、ＤＰＩは、ネットワークトラフィックの暗号化ペイロードの属性を抽出することができない。ＳＳＬプロキシがパケットを復号化し、この後者の欠点を解決する場合であっても、そのようなＳＳＬプロキシはスループットを減少させる。
【課題を解決するための手段】
【０００５】
ネットワークポリシーを実施する方法が、本明細書に記載される。本方法では、第１のコンテキスト内で実行中のアプリケーションからのネットワークソケットイベント要求は、その要求が第１のコンテキスト内のトランスポート層に到達する前に、エージェントによってインターセプトされる。コンテキストとは、仮想化ソフトウェア、物理的コンピュータ、又は仮想化ソフトウェア及び物理的コンピュータの組合せを指す。要求のインターセプトに応答して、エージェントは、ネットワークソケットイベント要求を、第１のコンテキストとは別個の第２のコンテキスト内で実行中のセキュリティサーバに通信することを許可するか拒絶するかについての判断を要求する。判断に対する要求は、アプリケーションの識別情報を含む。次に、エージェントは、セキュリティサーバからネットワークソケットイベント要求の許可又は拒絶の何れかを受信する。この許可又は拒絶は、アプリケーションの識別情報及びセキュリティポリシーに少なくとも部分的に基づく。エージェントは、拒絶がセキュリティサーバから受信される場合、ネットワークソケットイベントがトランスポート層に到達するのを阻止する。一実施形態では、本方法は、コンピュータによって実行可能なソフトウェア命令を実施する機械可読媒体を使用して実施される。
【図面の簡単な説明】
【０００６】
【図１】仮想マシンのネットワーク層スタック内で生成されるネットワークソケットイベント要求を示すブロック図である。
【図２】複数の仮想マシンであって、間で、ネットワークソケットについての判断に対する要求及び対応する判断が通信される複数の仮想マシンを有するアーキテクチャを示す機能ブロック図である。
【図３】アプリケーション識別情報に基づくネットワークソケットイベント要求についての判断を示す、仮想マシンコンテキストでのバウンス図である。
【図４】アプリケーション識別情報に基づいてネットワークソケットイベント要求についての判断を示す、非仮想マシンコンテキストでのバウンス図である。
【図５】複数の仮想マシンであって、間で、要求されたネットワークソケットを通るデータフローについての統計が通信される複数の仮想マシンを有するアーキテクチャを示す機能ブロック図である。
【図６】仮想マシンとのデータフローについての統計の集計を示す、仮想マシンコンテキストでのバウンス図である。
【図７】非仮想マシンエージェントとのデータフローについての統計の集計を示す、非仮想マシンコンテキストでのバウンス図である。
【発明を実施するための形態】
【０００７】
図１は、仮想マシンのネットワーク層スタック内で生成されるネットワークソケットイベント要求を発行するプロセスでの仮想マシン２０を示すブロック図である。仮想マシン２０は、物理的サーバ１０ａで実行中の仮想化ソフトウェア３０ａによって管理される。仮想化ソフトウェア３０ａは、追加の仮想マシンを管理することもできる。仮想化ソフトウェア３０ａは、ネイティブであってもよく、又はホストされてもよく、１つ又は複数の仮想マシンを管理し、同じコンピュータハードウェアリソースでのオペレーティングシステムの複数の同時インスタンスを可能にする。コンピュータハードウェアリソースは、ネットワーククラウドとして示されるネットワーク２によって相互接続される物理的サーバ１０ａ〜１０ｚを含む。物理的サーバ１０ａ〜１０ｚは、プロセッサと、メモリと、本明細書に記載される技術を実行するコンピュータによって実行可能なコンピュータ可読命令を有する非一時的コンピュータ可読媒体とを含む。任意の数のサーバ１０ａ〜１０ｚがネットワーク２に存在し得、任意の数の仮想マシン２０が各物理的サーバ１０ａ〜１０ｚに存在し得る。例えば、仮想化ソフトウェア３０ｙは物理的サーバ１０ｙで実行中であり、物理的サーバ１０ｚは実行中の仮想化ソフトウェアを有さない。サーバ１０ａ〜１０ｚはセキュリティサーバを含み得る。
【０００８】
仮想マシン２０内で、複数のネットワーク層をスタックし得、物理層は概念的にスタックの一番下に配置される。物理層は仮想マシンハードウェア２８ａとして示される。仮想マシンハードウェア２８ａの上はデータリンク層２７ａである。データリンク層２７ａの上はネットワーク層２６ａである。ネットワーク層２６ａの上はトランスポート層２５ａである。トランスポート層２５ａの上はアプリケーション／プレゼンテーション／セッション層２１ａである。アプリケーション２２ａは、アプリケーション／プレゼンテーション／セッション層２１ａ内で実行中であり得る。
【０００９】
アプリケーション２２ａは、ネットワークソケットイベント要求２３ａを送信する。ネットワークソケットは、ローカルアドレスと、ローカルポートとを有するエンドポイントである。結果として生成されるネットワーク接続は、ソースＩＰ、ソースポート、プロトコル、宛先ＩＰ、及び宛先ポートを含む。ＴＣＰソケット等のコネクション指向型ソケットは、コネクション状態を含み得るが、ＵＤＰソケット等のコネクションレス型ソケットは、コネクション状態を含まない。ネットワークソケットイベント要求２３ａは、ネットワークソケットでのステータス変更、例えば、ネットワークオープン、ネットワーククローズ、及びリッスン等の要求されたＵＤＰ又はＴＣＰイベントであり得る。
【００１０】
トランスポート層インタフェース２４ａは、トランスポート層２５ａとアプリケーション／プレゼンテーション／セッション層２１ａとの間に位置決めされる。一実施形態では、トランスポート層インタフェース２４ａは、アプリケーション／プレゼンテーション／セッション層２１ａからのネットワークソケットイベント要求２３ａを、ネットワークソケットイベント要求２３ａがトランスポート層２５ａに到達する前にインターセプトし得る。
【００１１】
トランスポート層インタフェース２４ａの例は、トランスポートドライバインタフェース（ＴＤＩ）及びウィンドウズ（Ｗｉｎｄｏｗｓ）（登録商標）プラットフォームでのウィンドウズ（Ｗｉｎｄｏｗｓ）（登録商標）フィルタリングプラットフォーム（ＷＦＰ）である。他の実施形態では、トランスポート層インタフェース２４ａは、リナックス（Ｌｉｎｕｘ）（登録商標）プラットフォーム、ＭａｃＯＳ（登録商標）プラットフォーム、又は他のプラットフォームで提供される。
【００１２】
要求されたネットワークイベントは、以下のように要求側アプリケーションに結び付けることができる。幾つかの実施形態では、ａｆｄ．ｓｙｓ等のトランスポート層２５ａの上のＴＤＩクライアントは、ＴＣＰＩＰ．ｓｙｓ及びＴＣＰＩＰ６．ｓｙｓ等のＴＤＩトランスポートを有するＩ／Ｏ要求パケット（ＩＲＰ：I/O request packet）を使用して通信する。ＩＲＰはアプリケーション２２ａのコンテキストで生成されるため、トランスポート層インタフェース２４ａは、オープン及びリッスン等のネットワーク接続を開始するネットワークソケットイベントのソースとして、アプリケーション２２ａを識別することができる。例えば、トランスポート層インタフェース２４ａは、ＩＲＰから要求側アプリケーション２２ａのプロセスＩＤを識別し、次に、プロセスＩＤを、プロセスＩＤへのアプリケーション２２ａのバイナリイメージにマッピングすることができる。ネットワーク接続の過程中、アプリケーション２２ａは、送信、受信、及びクローズ等の他のネットワークソケットイベントを生成し得る。ＴＤＩクライアントもＩＲＰを使用してこれらのイベントを生成するため、トランスポート層インタフェース２４も同様にして、それらのイベントを識別し、要求側アプリケーション２２ａ及びプロセスＩＤにマッピングすることができる。
【００１３】
トランスポート層インタフェース２４ａへの代替は、ネットワークソケットイベント要求２３ａを許可又は遮断し、概念的に、ベースのトランスポートプロバイダの上に存在することができる階層サービスプロバイダである。例えば、ウィンソック（Ｗｉｎｓｏｃｋ）又はウィンソック２（Ｗｉｎｓｏｃｋ  ２）サービスプロバイダインタフェース（ＳＰＩ）は、基礎となるベースのＴＣＰ／ＩＰスタックに頼りながら、ネットワークソケットイベント要求２３ａを許可又は遮断するモジュールによって実施することができる。
【００１４】
仮想マシン２０は、仮想マシン２０とは別個の仮想マシン（図２に示されるセキュリティ仮想マシン８０等）に頼り、ネットワークソケットイベント要求２３ａを許可するか、それとも拒絶するかを判断し得る。セキュリティ仮想マシン８０は、中央管理し得るポリシーに基づいて判断し得る。幾つかの実施形態では、仮想マシン２０内の、図２を参照して後述するエージェント２９は、トランスポート層インタフェース２４ａと通信し、ネットワークソケットイベントを許可するか、それとも拒絶するかについての判断に対する要求をセキュリティ仮想マシン８０に送信する。要求は、アプリケーションファイル名、アプリケーション実行可能ハッシュ、アプリケーション識別子、及び／又はアプリケーション２２ａのユーザ／ドメイン等のアプリケーション２２ａについての情報を含み得る。エージェント２９は、セキュリティ仮想マシン８０から判断を受信し、次に、ネットワークソケットイベント要求２３ａを許可又は拒絶する。
【００１５】
別の実施形態では、ネットワークポリシーは、セキュリティ仮想マシンとは異なる構成要素によって実施し得る。セキュリティ仮想マシンは、ネットワークソケットイベントからのアプリケーション情報を消費し、このアプリケーション情報を用いてネットワークポリシーを評価する。アプリケーション情報がネットワークポリシーの対象となるアプリケーションを識別するような一致が見つかる場合、セキュリティ仮想マシンは１つ又は複数の適切なファイアウォールルールを生成し、このルールは実施エンジンにプッシュされる。実施エンジンは、それ自体の物理的サーバマシンに存在してもよく、又は記載される技術の別の部分と物理的サーバマシンを共有してもよい。
【００１６】
ネットワークソケットイベントを許可するか、それとも拒絶するかについての判断に基づいて、エージェント２９は、ネットワークソケットイベント要求２３ａをトランスポート層２５ａに転送するか、又は破棄する。エージェント２９がネットワークソケットイベント要求２３ａをトランスポート層２５ａに転送する場合、ネットワークソケットイベント要求２３ａは、トランスポート層２５ａ、ネットワーク層２６ａ、データリンク層２７ａ、及び仮想マシンハードウェア２８によって層毎に処理され、その後、ネットワーク２を介してネットワーク活動が生成される。
【００１７】
物理的サーバ１０ｚは、実行中の仮想化ソフトウェアを有さない。物理的サーバ１０ｚは、アプリケーション／プレゼンテーション／セッション層２１ｚ、アプリケーション２２ｚ、ネットワークソケットイベント要求２３ｚ、トランスポート層インタフェース２４ｚ、トランスポート層２５ｚ、ネットワーク層２６ｚ、データリンク層２７ｚ、及びハードウェア２８ｚを有する。ネットワークソケットイベント要求２３ｚは、ネットワークソケットイベント要求２３ａと同様であるが、非仮想コンテキストで機能する。
【００１８】
図２は、エージェント２９と、セキュリティ仮想マシン８０と、他の仮想マシン９０と、ネットワークファイアウォールモジュール９６と、ネットワークポリシー管理モジュール９８と、アプリケーション識別モジュール１００とを含む仮想マシン２０を有するアーキテクチャを示すブロック図である。ネットワーク管理者は、ネットワークポリシー管理モジュール９８を介してネットワークポリシーを決定することができる。ネットワークポリシーを実施するファイアウォールルールは、セキュリティ仮想マシン８０によって決定することができる。アプリケーション識別モジュール１００は、アプリケーション識別情報を提供して、仮想マシン２０のエージェント２９からのネットワークソケットイベント要求を許可するか、それとも遮断するかを判断するに当たり、セキュリティ仮想マシン８０を支援することができる。この決定の実施は、仮想マシン２０内でのネットワークソケットの更なる処理を阻止若しくは許可することができる仮想マシン２０により、又は特定のネットワーク接続を阻止又は許可することができるファイアウォールモジュール９６によって行うことができる。
【００１９】
仮想マシン２０内のエージェント２９は、サービス又はデーモンとしてバックグラウンドで実行されるコンピュータプログラムとして実施し得る。様々な仮想マシン及びモジュールは、１つ又は複数の物理的サーバにあり得る。別の実施形態では、セキュリティ仮想マシン８０は、仮想化ソフトウェア３０ａ内のセキュリティモジュール又はネットワーク２（図１に示される）に存在する物理的アプライアンスによって置換するか、又は補完し得る。様々な実施形態では、ネットワークファイアウォールモジュール９６は、仮想であってもよく、又は物理的であってもよい。
【００２０】
図３は、アプリケーション識別情報に基づいてネットワークソケットイベント要求についての判断を示す仮想マシンコンテキストでのバウンス図を示す。一実施形態では、エージェント２９は、ネットワークソケットイベントを許可するか、それとも拒絶するかについての判断に対する要求８１を、ネットワーク２を介してセキュリティ仮想マシン８０に送信する。仮想マシン２０によって要求される判断をするために、セキュリティ仮想マシン８０は、アプリケーション識別モジュール１００からの、ネットワークソケットイベントを許可するか、それとも拒絶するかについての判断に対する要求８１を指示したネットワークソケットイベント要求２３（図１から）を送信したアプリケーション２２についてのアプリケーション情報に頼る。したがって、要求８１は、アプリケーション名、アプリケーションの実行可能ファイルのハッシュ、何らかの他のアプリケーション識別子、又はアプリケーション２２のユーザ／ドメイン等のアプリケーションコンテキスト情報を含む。
【００２１】
セキュリティ仮想マシン８０は、ネットワーク２を介してアプリケーション識別要求１０１をアプリケーション識別モジュール１００に送信する。アプリケーションコンテキスト情報は、アプリケーション識別モジュール１００によって使用されて、製品名、ベンダー名、アプリケーションカテゴリ、アプリケーション脅威レベル等の、ネットワークソケットイベント要求２３を送信したアプリケーション２２についてのより多くの情報を生成する。セキュリティ仮想マシン８０でのネットワークポリシーのファイアウォールルールは、このアプリケーションメタデータのうちの任意のデータに基づくことができる。
【００２２】
アプリケーション識別要求１０１は、ネットワークソケットイベント要求を開始するアプリケーションのシグネチャと、アプリケーション識別モジュール１００が頼っているシグネチャデータベース内の参照アプリケーションシグネチャとの照合に繋がる。
【００２３】
様々な実施形態では、アプリケーションシグネチャは、少なくとも、アプリケーションの実行可能ファイルのファイル名、アプリケーションの実行可能ファイルのハッシュ、及び／又はアプリケーションの実行可能ファイルに基づく。アプリケーション識別モジュール１００は、ネットワーク２を介してセキュリティ仮想マシン８０に、アプリケーション識別情報１０２で応答する。
【００２４】
アプリケーション識別情報１０２の例は、アプリケーションの名前、バージョン、カテゴリ、製造業者、信頼性レベル、及び脅威レベルである。アプリケーション識別情報１０２は、セキュリティ仮想マシン８０によって使用されて、ネットワークソケットイベント要求を許可するか、それとも拒絶するかについてのファイアウォールルールに基づく判断を実施することができる。
【００２５】
様々な実施形態では、ネットワークポリシーから生じるファイアウォールルール及び／又はネットワークポリシーは、セキュリティ仮想マシン８０、又はセキュリティ仮想マシン８０とは別個であり、セキュリティ仮想マシン８０がアクセス可能な集中ネットワークポリシー管理モジュールに記憶され、更新される。集中ネットワークポリシー管理モジュールは、別個の集中ネットワークポリシー管理サーバにあってもよく、又は仮想マシンと物理的サーバを共有してもよい。集中ネットワークポリシー管理モジュールを介して、管理者は、ファイアウォールルールを決定するネットワークポリシーを定義することができる。新しいルールは、セキュリティ仮想マシン登録スキームに従ってセキュリティ仮想マシン８０（及び他のセキュリティ仮想マシン）にプッシュし得る。
【００２６】
ネットワークポリシー例としては、以下が挙げられる：
（ｉ）「ＳＹＮ＿ＳＥＮＴイベント受信時、ｕＴｏｒｒｅｎｔによって開始される全てのＴＣＰトラフィックを遮断」等のコネクション状態メッセージＺを受信したとき、アプリケーションＹによって開始されるプロトコルＸの全トラフィックを遮断／許可する。
（ｉｉ）アプリケーションＹによって開始される全てのＴＣＰトラフィックを遮断／許可する。
（ｉｉｉ）カテゴリＺ（例えば、Ｐ２Ｐ）に属する、アプリケーションＹによって開始される全てのネットワークトラフィックを遮断／許可する。
（ｉｖ）ベンダーＺによって作られたアプリケーションによって開始される全てのネットワークトラフィックを遮断／許可する。
【００２７】
幾つかの実施形態では、アプリケーション識別は有利であり、その理由は、ネットワークソケットイベントを要求するアプリケーションの識別精度を犠牲にせずにネットワークソケットイベント要求の承認又は拒絶に関連する仮想マシン２０又は他の仮想マシン９０でのディープパケット検査が低減するか、又はなくなるためである。
【００２８】
アプリケーション識別モジュール１００は、クラウドベースのアプリケーション識別サービスとして実施することもできる。他の実施形態では、アプリケーション識別モジュール１００は、セキュリティ仮想マシン８０、仮想化ソフトウェア３０ａ、又はネットワーク２によってアクセスされる別の仮想マシンに配置される。そのような比較的集中化された実施形態は、アプリケーションシグネチャ更新でのオーバーヘッドを最小に抑える。アプリケーション識別モジュール１００は、アプリケーションシグネチャをアプリケーション識別情報にマッピングする中央シグネチャデータベースを含む。中央シグネチャデータベースは、シグネチャ更新に頼るロケーション数を低減する。シグネチャは、ネットワークソケットイベントを要求するアプリケーションを識別するのに十分に完全な指示であり得る。他の実施形態では、指示は、アプリケーションを識別するのに不十分な完全さであり得るが、それにもかかわらず、アプリケーションを安全（ネットワークソケットイベントを許可すべきであるような）又は非安全（ネットワークソケットイベントを拒絶すべきであるような）として識別するのに十分に完全な指示であり得る。
【００２９】
更に別の実施形態では、アプリケーション識別モジュール１００は仮想マシン２０に配置されるが、これには、ネットワークソケットイベント要求を許可するか、それとも拒絶するかについての判断を要求するあらゆる仮想マシンでのアプリケーションシグネチャ更新が必要であるという欠点がある。
【００３０】
ネットワークソケットイベント８２について判断するために、セキュリティ仮想マシン８０は、ネットワークセキュリティポリシーをアプリケーション識別情報１０２に適用し、ネットワークセキュリティポリシーを実施するファイアウォールルールが生成される。ネットワークソケットイベント８２についての判断は、ネットワークソケットイベントについての判断要求を送信した仮想マシン２０に返信される。別の実施形態では、ネットワークソケットイベント８２についての判断は、判断を実施するファイアウォールに返信される。そのようなファイアウォールは、仮想ファイアウォールであってもよく、又は物理的なファイアウォールであってもよい。セキュリティ仮想マシン８０のファイアウォールポリシー及び更新は、ネットワーク２から通信することができ、幾つかの実施形態では、別個のポリシー管理モジュール（図示せず）から通信することができる。
【００３１】
更に別の実施形態では、セキュリティ仮想マシン８０は、ネットワーク２を介して接続された他の仮想マシンでの、ネットワークソケットイベントを許可するか、それとも拒絶するかについての判断要求も処理する。他の仮想マシンは、そのような判断に対する要求をセキュリティ仮想マシン８０に送信する。他の仮想マシンによって要求される判断を行うために、セキュリティ仮想マシン８０は、アプリケーション識別モジュール１００から要求されるアプリケーション情報に頼り、アプリケーション識別モジュール１００は、アプリケーション識別情報をセキュリティ仮想マシン８０に提供する。セキュリティ仮想マシン８０は、ファイアウォールポリシーをアプリケーション識別情報に適用し、ネットワークソケットイベントについての結果として生成される判断を、ネットワークソケットイベントについての判断要求を送信した対応する他の仮想マシン９０に返信する。
【００３２】
図４は、アプリケーション識別情報に基づくネットワークソケットイベント要求についての判断を示す、非仮想マシンコンテキストでのバウンス図である。動作は図３と同様である。しかし、物理的セキュリティサーバがセキュリティ仮想マシンに取って代わり、非仮想マシンエージェントが仮想マシンエージェントに取って代わる。別の実施形態では、物理的セキュリティサーバは、他の非仮想マシンエージェントのネットワークソケットイベントを許可するか、それとも拒絶するかについての要求も処理する。
【００３３】
他の実施形態は図３及び図４の態様を組み合わせる。例えば、非仮想マシンエージェント及び仮想エージェントを組み合わせることができる。非ＶＭエージェントをセキュリティ仮想マシンと併用することができる。ＶＭエージェントを物理的セキュリティサーバと併用することができる。
【００３４】
図５は、仮想マシン２０と、セキュリティ仮想マシン８０と、他の仮想マシン９０と、データフロー可視性モジュール１１０とを有するアーキテクチャを示すブロック図である。様々な仮想マシン及びモジュールは、１つ又は複数の物理的サーバにあることができる。仮想マシン内で、ＴＤＩ／ＷＦＰトランスポート層インタフェースは、ネットワークソケットについての統計を収集することができる。仮想マシン外で、コネクションレベル統計を収集又は追跡する任意のモジュールが、同じことを実行することができる。セキュリティ仮想マシン８０は、仮想マシン２０及び他のマシン９０によって要求されるネットワーク接続を通じたデータフローについての統計を収集することができる。データフロー可視性モジュール１１０は、集計された統計を要求し受信することができる。別の実施形態では、セキュリティ仮想マシン８０は、仮想化ソフトウェア３０ａ又はネットワーク２（図１に示される）に存在するアプリケーションで置換するか、補完することができる。他の実施形態では、ネットワークファイアウォール又はホストコネクション追跡モジュールは、仮想マシン２０及び他のマシン９０によって要求されるネットワーク接続を通るデータフローについての統計（例えば、接続単位でのアプリケーションについての情報）を収集することができる。
【００３５】
図６は、仮想マシンとのデータフローについての統計の集計を示す、仮想マシンコンテキストでのバウンス図である。一実施形態では、仮想マシン２０は、ネットワーク２を介して、（仮想マシン２０の要求されたネットワークソケットを通じた）データフロー８３についての統計をセキュリティ仮想マシン８０に送信する。他の仮想マシン９０も、ネットワーク２を介して、（各仮想マシンの要求されたネットワークソケットを通じた）データフロー９５についての統計をセキュリティ仮想マシン８０に送信する。そのような統計は、ある間隔で、例えば３０秒毎にセキュリティ仮想マシン８０に送信することができる。ネットワークソケットは、図３及び図４に関連して考察したように要求し、承認することができる。
【００３６】
セキュリティ仮想マシン８０は、仮想マシン２０からのデータフロー８３についての統計と、他の仮想マシン９０からのデータフロー９５についての統計とを集計する。集計された統計を処理して、アプリケーション当たり、ユーザ当たり、仮想マシン当たり等のバイト数／パケット数として、ネットワークフロー情報を示すことができる。幾つかの実施形態では、図１及び図２に関連して考察したアプリケーション識別プロセスにより、アプリケーション当たりの集計統計は特に信頼性が高い。同様に、ネットワークソケットイベントについての判断要求を続けて判断するためのファイアウォールポリシーを変更するに当たり、そのような集計統計を考慮することができる。そのような変更されたファイアウォールポリシー下で承認されるネットワークソケットを通じたデータフロー統計は、示されるように集計することができる。データフロー可視性モジュール１１０は、データフロー１１２についての統計を要求する。セキュリティ仮想マシン８０は、集計統計１１１で応答する。
【００３７】
図７は、非仮想マシンエージェントとのデータフローについての統計の集計を示す、非仮想マシンコンテキストでのバウンス図である。動作は図８と同様である。しかし、物理的セキュリティサーバがセキュリティ仮想マシンに取って代わり、非仮想マシンエージェントが仮想マシンエージェントに取って代わり、他の非ＶＭエージェントが他の仮想マシンに取って代わる。
【００３８】
他の実施形態は図７及び図８の態様を組み合わせる。例えば、非仮想マシンエージェント及び仮想エージェントを組み合わせることができる。非ＶＭエージェントをセキュリティ仮想マシンと併用することができる。ＶＭエージェントを物理的セキュリティサーバと併用することができる。
【００３９】
開示される技術を実施することができるアーキテクチャの例は、シトリックス（Ｃｉｔｒｉｘ）（登録商標）、マイクロソフト（Ｍｉｃｒｏｓｏｆｔ）（登録商標）、ＶＭウェア（ＶＭＷａｒｅ）（登録商標）、及びゼン（Ｘｅｎ）（登録商標）コミュニティによるハイパーバイザ及び他の仮想化製品である。
【００４０】
本発明は、上記で詳述される好ましい実施形態及び例を参照して開示されるが、これらの例が限定の意味ではなく例示を意図していることを理解されたい。当業者であれば変更形態及び組合せを容易に想到し、これらの変更形態及び組合せは本発明の趣旨及び以下の特許請求の範囲内にあると考えられる。
【図１】
0006046276.tif 000002
【図２】
0006046276.tif 000003
【図３】
0006046276.tif 000004
【図４】
0006046276.tif 000005
【図５】
0006046276.tif 000006
【図６】
0006046276.tif 000007
【図７】
0006046276.tif 000008