(57)【要約】【課題】  ファイアウォールがポリシーを変更したりネットワークセキュリティを弱めることなく、ファイアウォール対応アプリケーションがその期待をファイアウォールに伝達する方法を提供すること。【解決手段】  ファイアウォールにアプリケーションが必要とするものを知らせるためにアプリケーションＡＰＩおよびファイアウォールＡＰＩを提供する。代行受信モジュールは、アプリケーションやサービスによる、ローカルコンピュータ上のネットワークスタックへの接続およびリッスン試行を監視し、これらの試行を捕捉し、どのユーザがその試行を行っているか等を判定し、ユーザおよび／またはアプリケーション／サービスがネットワークへの接続を許されているかを判定するためにファイアウォールポリシールックアップを実行する。許されている場合は、代行受信モジュールは、要求接続のためにそれ自体を構成するようにホスト等に指示可能である。【選択図】  図３
2005018769.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラミングインターフェースを介してアプリケーションから呼び出しを受け取ることであって、前記呼び出しは前記アプリケーションが確立することを望むエンドポイントへの接続のためのパラメータを含むこと、
前記アプリケーションから前記アプリケーションが前記接続を確立することを望むという指示を受け取ること、および
前記パラメータに従って前記接続を確立するためにファイアウォールへの呼び出しを行うこと
を含むことを特徴とするコンピュータで実行される方法。
【請求項２】
前記ファイアウォールにおいて、ポリシーと対照して前記パラメータを評価すると共に、前記パラメータが前記ポリシーを満たす場合には、前記パラメータに従って前記ネットワークの接続を確立することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記パラメータは、前記アプリケーションが接続されることを望む既知のエンドポイントを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記パラメータは、前記接続を単一接続に限るよう求める要求をさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記接続が確立された後で、前記要求に従って前記接続を閉じることをさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記パラメータは、前記接続のための接続帯域幅の調節を求める要求を含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記パラメータは、インターフェース、ローカルアドレス、またはリモートアドレス、あるいはそれらの組合せのサブセットへの前記接続を制限することを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記パラメータは前記接続のためのタイムアウトポリシーを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記パラメータは、特定のプロトコルオプションをオンまたはオフにすることを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記パラメータは、特別な処理を必要とするフローの特性に関する情報を含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記情報は認証または暗号化を求める要求を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記指示はリッスンソケットを開くことを含むことを特徴とする請求項１に記載の方法。
【請求項１３】
前記指示はソケットに接続することを含むことを特徴とする請求項１に記載の方法。
【請求項１４】
前記ファイアウォールへの呼び出しは、ファイアウォールアプリケーションプログラミングインターフェースを介して行われることを特徴とする請求項１に記載の方法。
【請求項１５】
前記ファイアウォールは、前記アプリケーションを備えるコンピュータ上に位置することを特徴とする請求項１に記載の方法。
【請求項１６】
前記ファイアウォールはエッジファイアウォールを含み、前記接続に関する情報を前記エッジファイアウォールに伝達するためのエージェントをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１７】
前記ファイアウォールはエッジファイアウォールを含み、前記接続に関する情報を前記エッジファイアウォールに伝達するための認証済みプロトコルをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１８】
請求項１に記載の方法を実施するコンピュータ実行可能命令を含むことを特徴とするコンピュータ可読媒体。
【請求項１９】
オペレーティングシステムと、
前記オペレーティングシステムに関連付けられ、アプリケーションから呼び出しを受け取るように構成、適合されたアプリケーションプログラミングインターフェースであって、前記呼び出しは、前記アプリケーションが確立することを望むエンドポイントへの接続のためのパラメータを含むアプリケーションプログラミングインターフェースと
前記オペレーティングシステムに関連付けられ、
前記アプリケーションから、前記アプリケーションが前記接続を確立することを望むという指示を受け取ると共に、
前記パラメータに従って前記接続を確立するためにファイアウォールへの呼び出しを行う
ように構成、適合された執行モジュールと
を含むことを特徴とするコンピュータシステム。
【請求項２０】
前記ファイアウォールへの呼び出しを行うためのファイアウォールアプリケーションプログラミングインターフェースをさらに含むことを特徴とする請求項１９に記載のコンピュータシステム。
【請求項２１】
エンドポイントへの接続のためのポリシーを確立すること、
アプリケーションまたはサービスから接続試行、リッスン試行、またはそれらの組合せを受け取ること、
前記接続試行、前記リッスン試行、または前記それらの組合せから、ユーザおよびアプリケーションまたはサービス情報を取り出すこと、
前記接続試行、前記リッスン試行、または前記それらの組合せが前記ポリシーに適合しているかどうか判定するために前記アプリケーションまたはサービス情報を評価すること、および
前記接続試行、前記リッスン試行、または前記それらの組合せが前記ポリシーに適合している場合には、前記接続試行、前記リッスン試行、または前記それらの組合せを許可するように前記ファイアウォールを構成すること
を含むことを特徴とするコンピュータで実行される方法。
【請求項２２】
前記接続試行、前記リッスン試行、または前記それらの組合せが前記ポリシーに適合しなかった場合には、前記アプリケーションまたはサービスのユーザに通知を送ることをさらに含むことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記通知は前記接続を許可するための選択を含むことを特徴とする請求項２２に記載の方法。
【請求項２４】
前記ポリシーを確立することは、前記アプリケーションまたはサービスからポリシーを受け取ることを含むことを特徴とする請求項２１に記載の方法。
【請求項２５】
前記ポリシーを受け取ることは、アプリケーションプログラミングインターフェースを介して前記ポリシーを受け取ることを含むことを特徴とする請求項２４に記載の方法。
【請求項２６】
前記アプリケーションまたはサービスから受け取ったポリシーは、１つまたは複数のインターネットプロトコルアドレス、サブネットに関する情報、前記接続の範囲に関する情報、またはそれらの組合せを使用する着信または発信制限を含むことを特徴とする請求項２４に記載の方法。
【請求項２７】
前記アプリケーションまたはサービスから受け取ったポリシーは、通信セキュリティレベルを含むことを特徴とする請求項２４に記載の方法。
【請求項２８】
前記通信セキュリティレベルは認証を含むことを特徴とする請求項２７に記載の方法。
【請求項２９】
前記通信セキュリティレベルは暗号化を含むことを特徴とする請求項２７に記載の方法。
【請求項３０】
前記ファイアウォールは、前記アプリケーションを備えるコンピュータ上に位置するホストファイアウォールを含むことを特徴とする請求項２１に記載の方法。
【請求項３１】
前記ファイアウォールはエッジファイアウォールを含み、前記接続に関する情報を伝達するためのエージェントをさらに含むことを特徴とする請求項２１に記載の方法。
【請求項３２】
前記ファイアウォールはエッジファイアウォールを含み、前記接続に関する情報を前記エッジファイアウォールに伝達するための認証済みプロトコルをさらに含むことを特徴とする請求項２１に記載の方法。
【請求項３３】
請求項２１に記載の方法を実施するコンピュータ実行可能命令を含むことを特徴とするコンピュータ可読媒体。
【請求項３４】
ファイアウォールと、
エンドポイントへの接続に関するアプリケーション、サービス、またはそれらの組合せのためのポリシーにアクセスし、
アプリケーションまたはサービスからの、接続試行、リッスン試行、またはそれらの組合せを求める要求を代行受信し、
前記接続試行、前記リッスン試行、または前記それらの組合せからユーザおよびアプリケーションまたはサービス情報を取り出し、
前記接続試行、前記リッスン試行、または前記それらの組合せが前記ポリシーに適合するかどうか判定するために前記アプリケーションまたはサービス情報を評価し、
前記接続試行、前記リッスン試行、または前記それらの組合せが前記ポリシーに適合する場合には、前記接続試行、前記リッスン試行、または前記それらの組合せを構成するように前記ファイアウォールに指示する
ように構成、適合された代行受信モジュールと
を含むことを特徴とするコンピュータシステム。
【請求項３５】
前記代行受信モジュールは、前記ポリシーを記憶するためのポリシーキャッシュを含むことを特徴とする請求項３４に記載のコンピュータシステム。
【請求項３６】
前記代行受信モジュールは、前記アプリケーションまたはサービスから前記ポリシーを受け取るためのアプリケーションプログラミングインターフェースを含むことを特徴とする請求項３４に記載のコンピュータシステム。
【請求項３７】
前記代行受信モジュールは、前記接続試行、前記リッスン試行、または前記それらの組合せに関する情報をエッジファイアウォールに伝達するためのファイアウォールクライアントを含むことを特徴とする請求項３４に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータまたはネットワーク上でのセキュリティに関し、より詳細には、ファイアウォールおよびそれをアプリケーションと共に使用することに関する。
【背景技術】
【０００２】
一般に、ファイアウォールは、無許可のユーザにネットワークまたはコンピュータ上の特定のファイルにアクセスさせないようにする電子的境界である。ファイアウォールは、ユーザのコンピュータ上にファイアウォールコードとして提供することもできる（「ホストファイアウォール」）。あるいは、ネットワークのエッジに、ネットワーク外部のコンピュータとのインターフェースを提供する、ネットワーク内のコンピュータ上にある機密ファイルを保護するための特別なセキュリティ上の予防措置を組み込んだ専用ファイアウォールマシンを提供することもできる（「エッジファイアウォール」）。その目的は、エッジファイアウォールの後ろに隠されたより緩やかに管理されたマシンのクラスタをネットワーク外部のコンピュータユーザから保護することである。エッジファイアウォールがそこに位置するマシンは、しばしば、「ゲートウェイ」または「専用ゲートウェイ」と呼ばれる。ネットワークをインターネットから保護するように構成される場合には、このマシンは、しばしば、「インターネットゲートウェイ装置」と呼ばれる。
【０００３】
ファイアウォールは、少なくとも３つの異なる方法のうち１つまたは複数を使用して、ネットワークに流入またはネットワークから流出するトラフィックを制御する。静的パケットフィルタリングと呼ばれる第１の方法では、パケットが１組のフィルタと対照して分析される。それらのフィルタによって承認されたパケットは、要求側システムに送られ、それ以外はすべて廃棄される。プロキシサービスと呼ばれる第２の方法では、インターネットからの情報がファイアウォールによって取り出され、ポリシーと対照して評価され、次いで、要求側システムに送られ、その逆もまた同様である。ステートフル（ｓｔａｔｅｆｕｌ）検査と呼ばれる、第３のより新しい方法では、パケットの内容は検査されず、その代わりに、そのパケットの重要な部分が信頼される情報のデータベースと比較される。ファイアウォールの内側から外側に出て行く情報は、特別な定義特性の有無を監視され、次いで、着信情報がこれらの特性と比較される。この比較で妥当な一致が生じた場合は、その情報が通過を許される。それ以外の場合は、その情報が廃棄される。
【０００４】
ファイアウォールはカスタマイズ可能である。すなわち、いくつかの条件に基づいてそれにフィルタを追加または削除することができる。一例では、インターネットプロトコル（「ＩＰ」）アドレスを使用してトラフィックを制限またはブロックすることができる。一例では、ネットワーク外部のあるＩＰアドレスがサーバから過度に多数のファイルを読み取っている場合は、ファイアウォールはそのアドレスとの間のすべてのトラフィックをブロックすることができる。別の例では、ファイアウォールは特定のドメイン名へのすべてのアクセスをブロックすることもでき、あるいは特定のドメイン名へのアクセスだけを許可することもできる。別の例では、企業は、特定の１つまたは複数のプロトコルを処理すると共に他のすべてのマシン上ではそれらのプロトコルを禁止する１台または２台のマシンだけを用いてネットワークをセットアップすることもできる。別の例では、ポートを使用してトラフィックを制限する。例えば、サーバマシンがＷｅｂ（ＨＴＴＰ）サーバおよびＦＴＰサーバを走らせている場合は、そのＷｅｂサーバは、通常、ポート８０で使用可能となるはずであり、ＦＴＰサーバはポート２１で使用可能となるはずである。企業は、ネットワーク上の１台を除くすべてのマシン上でポート２１アクセスをブロックすることもできる。
【０００５】
したがって、ファイアウォールは、ネットワーク通信を調査し、そのファイアウォール内に設定されているポリシーと整合性が取れる通信だけを許可することによってセキュリティを保証する。しかし、前述のトラフィック制御方法は、一定のトラフィックをフィルタリングするのには適切に機能するが、ファイアウォールに設定された規則またはポリシーは、そのネットワーク内の一部のアプリケーションが必要とするものを満たさないこともある。ファイアウォールは、すべての既存および将来のアプリケーションの完全な知識を持つことはできないので、安全な通信と危険な可能性のある通信とを区別するためのヒューリスティックスを実装する。例えば、ファイアウォールは、信頼されるネットワーク内から開始された接続は許可するが、信頼されるネットワークの外部から開始された（例えば、インターネットから開始された）接続は許可しないように選択することもできる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ヒューリスティックスはファイアウォールポリシー設計を単純化するが、一部のアプリケーションには、ファイアウォールのヒューリスティックスと整合しないものもある。その結果、そうしたアプリケーションによる通信時の試行は機能しないことになり、ファイアウォール設計者は、機能しないアプリケーション１つ１つに特別な予備手段を実装し、テストせざるを得なくなる。こうした予備手段によって、ファイアウォールの複雑さが増大し、コードが過度に変更される。
【０００７】
アプリケーションがファイアウォールのポリシーを随時変更できるようにするファイアウォール制御プロトコル（「ＦＣＰ」）を案出しようとする近年の努力は、根本的なセキュリティ上の矛盾のために成功していない。ファイアウォールポリシーは、信頼されるエンティティ（ネットワーク管理者など）によって作成、管理されるが、アプリケーションは信頼されないノードまたはエンドポイント上でも走らせることができる。信頼されないアプリケーションに企業ネットワークポリシーを変更させることは、ファイアウォールのセキュリティ目標と矛盾する。
【課題を解決するための手段】
【０００８】
以下では、本発明を基本的に理解できるようにするために、本発明のいくつかの実施形態の簡略化した概要を提示する。この概要は本発明の包括的概要ではない。これは、本発明の主要／重要な要素を識別するためのものでも、本発明の範囲を記述するためのものでもない。これは、後段で提示するより詳細な説明への前段として、本発明のいくつかの実施形態を簡略化した形で提示するためのものにすぎない。
【０００９】
本発明の一実施形態によれば、ファイアウォールがそのポリシーを変更し、またはネットワークセキュリティを弱めることを必要とせずに、ファイアウォール対応アプリケーションがファイアウォールにその期待（ｅｘｐｅｃｔａｔｉｏｎ）を伝達する方法が提供される。このために、アプリケーションが、１つまたは複数のファイアウォールにそのアプリケーションが必要とするものを知らせ、その現在のまたは予期される活動を記述し、アプリケーションによって送られ、または受け取られるネットワークデータのための処理要件を記述するためのアプリケーションＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）を提供することができる。
【００１０】
本発明の別の実施形態によれば、１つまたは複数のファイアウォールにそのアプリケーションが必要とするものを知らせるファイアウォールＡＰＩが提供される。アプリケーションＡＰＩとファイアウォールＡＰＩは、例えば、コンピュータシステムのオペレーティングシステムの一部として提供することのできるネットワークサブシステムを介して対話することができる。
【００１１】
本発明の別の実施形態によれば、ユーザが、そのコンピュータ上のファイアウォール非対応アプリケーションおよびサービスがネットワークに接続することを許可し、または拒絶するための簡単なファイアウォールポリシー、またはネットワークアクセスポリシーを作成できるようにする執行（ｅｎｆｏｒｃｅｍｅｎｔ）モジュールが提供される。また、この執行モジュールはそれらのポリシーをユーザごとに可能にする。ユーザは、アプリケーションがファイアウォールを介して機能できるようにするためにポートの規則、プロトコル、またはＩＰアドレスを知り、またはそれを使用する必要がない。このために、アプリケーション／サービスが、ＩＰアドレス、サブネット情報、または接続の範囲を使用してそれが着信および発信制限に関して必要とするものを記述できるようにするソケットアプリケーションプログラミングインターフェースが提供される。ユーザは、通信セキュリティレベル（認証および／または暗号化など）を定義することもできる。
【００１２】
本発明の別の実施形態によれば、執行モジュールは、ファイアウォールを介したアプリケーションの透過的横断を可能にする。執行モジュールは、アプリケーションおよびサービスによるローカルコンピュータ上のネットワークスタックへの接続試行およびリッスン（ｌｉｓｔｅｎ）試行を監視する代行受信（ｉｎｔｅｒｃｅｐｔｉｏｎ）モジュールを含む。この代行受信モジュールはこれらの試行を捕捉し、どのユーザがその試行を行っているか、どのアプリケーション／サービスがその試行を行っているか判定し、そのユーザおよび／またはアプリケーション／サービスがネットワークへの接続を許されているかどうか判定するためにファイアウォールポリシールックアップを実行する。許されている場合は、代行受信モジュールは、要求されている接続のためにそれ自体を構成するようホストおよび／またはエッジファイアウォールに指示することができる。
【００１３】
本発明の他の特徴は、以下の詳細な説明を図面と併せて読めば明らかになるであろう。
【発明を実施するための最良の形態】
【００１４】
以下の説明では、本発明の様々な実施形態について説明する。説明のために、具体的な構成および詳細を示して、それらの実施形態を十分に理解できるようにする。しかし、本発明がそれらの具体的詳細なしでも実施できることが、当分野の技術者には明らかであろう。さらに、以下で説明する実施形態をあいまいにしないために、公知の特徴は省略、または簡略化されることがある。
【００１５】
本発明の様々な実施形態の説明に進む前に、本発明の様々な実施形態を実施することのできるコンピュータおよびネットワーク環境の説明を次に行う。必須ではないが、以下では本発明を、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的状況で説明する。一般に、プログラムには、個々のタスクを実行し、または個々の抽象データ型を実装するルーチン、オブジェクト、コンポーネント、データ構造などが含まれる。本明細書で使用する「プログラム」または「モジュール」という用語は、単一プログラムモジュールまたは協調して働く複数のプログラムモジュールを意味する。本明細書で使用する「コンピュータ」および「計算処理装置」という用語には、パーソナルコンピュータ（ＰＣ）、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースのプログラム可能家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、タブレットＰＣ、ラップトップコンピュータ、マイクロプロセッサまたはマイクロコントローラを備える家庭用電気器具、ルータ、ゲートウェイ、ハブなど、１つまたは複数のプログラムを電子的に実行する任意の装置が含まれる。本発明は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される、分散計算処理環境で用いることもできる。分散計算処理環境では、プログラムはローカルとリモート両方のメモリ記憶装置に位置することができる。
【００１６】
本発明の各態様を組み込むのに適したコンピュータネットワーク環境の一例を、図１を参照して説明する。このコンピュータネットワーク環境の例は、雲形で示す安全なネットワーク１０４を介して相互にやりとりするいくつかのコンピュータ１０２を含む。この安全なネットワーク１０４は、ルータ、ゲートウェイ、ハブなど多数の公知のコンポーネントを含むことができ、コンピュータ１０２に有線および／または無線媒体を介してやりとりさせる。安全なネットワーク１０４を介して相互に対話するとき、コンピュータ１０２の１つまたは複数は、他のコンピュータ１０２に対するクライアント、サーバまたはピアとして働くことができる。したがって、本明細書に含まれる具体例でそれらのコンピュータのタイプすべてに言及することはできないが、本発明の様々な実施形態は、クライアント、サーバ、ピアまたはそれらの組合せで実施することができる。
【００１７】
この例での安全なネットワーク１０４は、これらのコンピュータ１０２が、この例ではインターネットゲートウェイ装置１０６として示す、一般的なファイアウォールによって保護されているという点で、「安全な」ネットワークであるとみなされる。インターネットゲートウェイ装置１０６は、この例では雲形で示す、公衆ネットワークまたは安全でないネットワーク１１０上に位置するリモートコンピュータ１０８からコンピュータ１０２を保護する。インターネットゲートウェイ装置１０６として示してあるが、このゲートウェイ装置は、必ずしもインターネットに限らず、ＬＡＮ、ＷＡＮ、または別の適当なネットワークを含めて、他のタイプの安全でないネットワークから安全なネットワークを保護することもできる。
【００１８】
複数のコンピュータを備えるものとして示してあるが、安全なネットワーク１０４は単一のコンピュータ１０２だけしか含まないこともある。また、安全でないネットワーク１１０も複数のリモートコンピュータ１０８を備えるものとして示してあるが、１台だけしか備えないこともある。
【００１９】
図２を参照すると、本明細書で説明する本発明の実施形態を実装することのできるコンピュータ１０２の基本構成の一例が示されている。その最も基本的な構成では、コンピュータ１０２は、通常、少なくとも１つの処理装置２０２およびメモリ２０４を含む。処理装置２０２は、本発明の様々な実施形態によるタスクを実施する命令を実行する。そうしたタスクを実施する際に、処理装置２０２は、何らかの結果を生じさせるためにコンピュータ１０２の他の部分およびコンピュータ１０２の外部の装置に電子的信号を送ることができる。コンピュータ１０２の正確な構成およびタイプに応じて、メモリ２０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭやフラッシュメモリなど）、またはこれら２つの何らかの組合せとすることができる。この最も基本的な構成を図２に破線２０６で示す。
【００２０】
コンピュータ１０２は、その他の機構／機能を持つこともできる。例えば、コンピュータ１０２は、それだけに限らないが、磁気または光ディスクまたはテープを含む（取り外し可能（符号２０８）および／または取り外し不能（符号２１０）の）その他の記憶装置を含むこともできる。コンピュータ記憶媒体には、コンピュータ実行可能命令、データ構造、プログラムモジュール、またはその他のデータを含む情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性、取り外し可能および取り外し不能媒体が含まれる。コンピュータ記憶媒体には、それだけに限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）その他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶装置、その他の磁気記憶装置、または所望の情報を記憶するのに使用でき、コンピュータ１０２からアクセスすることのできる他の任意の媒体が含まれる。そうした任意のコンピュータ記憶媒体をコンピュータ１０２の一部とすることができる。
【００２１】
コンピュータ１０２は、好ましくは、安全なネットワーク１０４上の他のコンピュータ１０２や、安全でないネットワーク１１０上のリモートコンピュータ１０８（図２にはリモートコンピュータ１０８だけを示す）など、この装置を他の装置とやりとりさせる通信接続２１２も含む。通信接続は、通信媒体の一例である。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波またはその他の搬送機構などの変調されたデータ信号として実施し、任意の情報伝達媒体を含む。例をあげると、それだけに限らないが、「通信媒体」という用語には、音響、無線周波数、赤外線、その他の無線媒体などの無線媒体が含まれる。本明細書で使用する「コンピュータ可読媒体」という用語には、コンピュータ記憶媒体および通信媒体の両方が含まれる。
【００２２】
コンピュータ１０２は、キーボード／キーパッド、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置２１６を備えることもできる。ディスプレイ２２０、スピーカ、印刷装置などの出力装置２１８も含まれ得る。これらの装置は当技術分野で公知であり、ここで詳細に説明する必要はない。
【００２３】
以下の説明では、本発明を、特に指示しない限り、１つまたは複数の計算処理装置によって実施される動作および操作の記号表現に関連して説明する。したがって、そうした動作および操作は、時々、コンピュータによって実行されていると言及され、構造化された形でデータを表す電気信号の、コンピュータ１０２の処理装置による操作を含むことが理解されるであろう。この操作は、データを変換し、またはそれをコンピュータ１０２のメモリシステム中の各位置に維持し、コンピュータ１０２の操作を、当分野の技術者がよく理解する方式で再構成し、あるいはまた変更する。データが維持されるデータ構造は、そのデータの形式によって定義される個々の特性を備えるメモリの物理的位置である。ただし、本発明を前述の状況で説明するが、それは限定するためのものではなく、当業者であれば、以下で説明する動作および操作のいくつかはハードウェアとして実装することもできることを理解するであろう。
【００２４】
図３は、本発明の一実施形態に従って使用することのできるコンピュータ１０２のアーキテクチャの詳細を示す構成図である。コンピュータ１０２は、それに関連付けられた、ファイアウォールコード３０２として示すホストファイアウォールを備えるオペレーティングシステム３００を含む。ファイアウォールコード３０２は、オペレーティングシステム３００のコンポーネントとすることも、コンピュータ１０２上で実行される別個のアプリケーションまたはプログラムとすることもできる。図示の例では、ファイアウォールコード３０２は、それ自体がその上で走るコンピュータ１０２を保護するという点で、ホストファイアウォールとして働く。
【００２５】
コンピュータ１０２は執行モジュール３０４も含み、それはオペレーティングシステム３００に関連付けられ、またはそれと一体をなす。以下で執行モジュール３０４の機能および機構をさらに説明する。
【００２６】
本発明の一態様によれば、ファイアウォール対応アプリケーション３０６は、オペレーティングシステム３００および／または執行モジュール３０４に接続することができる。直接接続以外に、以下でさらに説明するように、ファイアウォール対応アプリケーション３０６が執行モジュール３０４の機能を要求するために、アプリケーションＡＰＩ３０８が提供される。
【００２７】
本発明の別の実施形態では、ファイアウォール非対応アプリケーション３１０も、オペレーティングシステム３００および／または執行モジュール３０４に接続することができる。オペレーティングシステム３００および／または執行モジュール３０４への直接接続以外に、やはり以下でさらに説明するように、ファイアウォール非対応アプリケーション３１０が執行モジュール３０４の機能を要求するために、ソケットＡＰＩ３１２が提供される。
【００２８】
ファイアウォールポリシー３１４は、コンピュータ１０２上に維持され、またはそれに関連付けられ、オペレーティングシステム３００および／またはファイアウォールコード３０２からアクセスすることができる。図示の実施形態では、ファイアウォールポリシー３１４が１つのデータベースとして示されているが、ファイアウォールポリシー３１４は、複数のデータベースに維持することも、別の適当な方式で記憶することもできる。
【００２９】
インターネットゲートウェイ装置１０６とやりとりするためにエージェント３２０を提供することもできる。また、インターネットゲートウェイ装置１０６は、ファイアウォールソフトウェア３２４（以後「エッジファイアウォール３２４」と呼ぶ）を含み、公知の方式でリモートコンピュータ１０８から安全なネットワーク１０４を保護するようにそれを実装することができる。また、本発明の一態様によれば、ファイアウォールコード３０２によるアクセスのために、オペレーティングシステム３００上にファイアウォールＡＰＩ３２６が提供される。
【００３０】
本発明の一実施形態によれば、ファイアウォール対応アプリケーション３０６は、アプリケーションＡＰＩ３０８を介してファイアウォールコード３０２および／またはエッジファイアウォール３２４の明示的横断（ｅｘｐｌｉｃｉｔ  ｔｒａｖｅｒｓａｌ）を要求することができる。「明示的」とは、ファイアウォールコード３０２および／またはエッジファイアウォール３２４を介した横断がファイアウォール対応アプリケーション３０６によって具体的に要求されることを意味する。背景技術の項で述べたように、従来技術のネットワークシステムでは、ファイアウォールはヒューリスティックスを用いてアプリケーションの意図を推量した。これに対して、本発明では、ファイアウォール対応アプリケーション３０６（またはファイアウォール対応サービス）がその要件を明示的に記述し、その要求をファイアウォールコード３０２および／またはエッジファイアウォール３２４に伝達することができるようにアプリケーションＡＰＩ３０８が提供される。
【００３１】
ファイアウォール対応アプリケーション３０６は、ファイアウォールコード３０２および／またはエッジファイアウォール３２４によって執行可能な様々な他のサービスを要求することもできる。一例では、ファイアウォール対応アプリケーション３０６は、安全なネットワーク１０４外部の既知の１つまたは複数のエンドポイントとの接続を要求することができる。この接続は、単一の、１回だけの接続とすることもでき、同じ接続の多数のインスタンスを作成することもできる。別の例では、ファイアウォール対応アプリケーション３０６は、着信および／または発信接続のための帯域幅または接続調節（ｔｈｒｏｔｔｌｉｎｇ）を要求することができる。別の例では、ファイアウォール対応アプリケーション３０６は、ファイアウォールが、接続範囲をインターフェース、ローカルまたはリモートのアドレスのサブセットに限るように要求することもできる。別の例では、ファイアウォール対応アプリケーション３０６は、認証済みのクライアントだけを特定のポートに接続させるよう要求することもできる。別の例では、ファイアウォール対応アプリケーション３０６は、最小または最大帯域幅規則（ｍｉｎｉｍｕｍ  ｏｒ  ｍａｘｉｍｕｍ  ｂａｎｄｗｉｄｔｈ  ｒｕｌｅ）が執行され、かつ／または伝送制御プロトコル（「ＴＣＰ」）クライアントなどの特定のクライアントについて、タイムアウトポリシーを要求させるように要求することもできる。さらに、ファイアウォール対応アプリケーション３０６は、攻撃面（ａｔｔａｃｋ  ｓｕｒｆａｃｅ）を縮小するために、（ＳＡＣＫなど）特定のプロトコルオプションをオンまたはオフにするよう要求することもできる。別の例では、ファイアウォール対応アプリケーション３０６は、機密データとの接続など、特別な処理を必要とする流れの１つまたは複数の特性を記述することもできる。
【００３２】
ファイアウォール対応アプリケーション３０６は、アプリケーションＡＰＩ３０８を介してその要求をファイアウォールコード３０２および／またはエッジファイアウォール３２４に伝達することができる。以下は、リモートコンピュータ１０８などのリモートコンピュータまたはノードとの直接通信を要求するのに使用できるフォーマットの構造の一具体例である。
【００３３】
struct  sockaddr  Target;
...  //  initialize  Target  structure  with  endpoint  information
setsockopt(s,  SOL_SOCKET, SO_REQUEST_ACCESS,
&Target,  sizeof(Target));
【００３４】
前述の例では、要求は特定のソケットを対象とする。そのソケットオプション名はＳＯＬ＿ＳＯＣＫＥＴ、ＳＯ＿ＲＥＱＵＥＳＴ＿ＡＣＣＥＳＳである。「ｓｔｒｕｃｔ  ｓｏｃｋａｄｄｒ  Ｔａｒｇｅｔ」という語の後にパラメータ記述が続き、リモートエンドポイント、または具体的なリモートコンピュータ１０８の記述を含む。他のデータ構造を使用してファイアウォール対応アプリケーション３０６による要求を伝達することもできる。
【００３５】
必要に応じて、オペレーティングシステム３００および／または執行モジュール３０４は、ファイアウォール対応アプリケーション３０６に要求がサポートされていることを示すこともできる。したがって、オペレーティングシステム３００および／または執行モジュール３０４は、その要求が受け入れられ、ファイアウォールに転送されること、またはオペレーティングシステム３００がこの特定の呼び出しを実施しないことを示す値を返すことができる。あるいは、オペレーティングシステム３００および／または執行モジュール３０４は、それが状況をチェック中であり、最終的にはファイアウォールコード３０２および／またはエッジファイアウォール３２４にその決定を行わせるという指示を返すこともできる。
【００３６】
ファイアウォール対応アプリケーション３０６は、そのアプリケーションのインストール時、接続要求時、または別の適当なときに、アプリケーションＡＰＩ３０８に呼び出しを行うことができる。この要求は、アプリケーションＡＰＩ３０８への要求時、接続要求時、または別のときに、ファイアウォールコード３０２および／またはエッジファイアウォール３２４に知らせることもできる。本発明の一実施形態によれば、この要求は、ファイアウォール対応アプリケーション３０６の接続試行時に、ファイアウォールコード３０２および／またはエッジファイアウォール３２４に知らせられる。すなわち、ファイアウォール対応アプリケーション３０６が、ファイアウォールコード３０２および／またはエッジファイアウォール３２４を介して何かを送ろうと試みるか、それともファイアウォール対応アプリケーション３０６が、ファイアウォールの１つを介した通信を待っていることを示すかのどちらかである。このために、イベントは、総称ソケットイベント通知機構（ｇｅｎｅｒｉｃ  ｓｏｃｋｅｔ  ｅｖｅｎｔ  ｎｏｔｉｆｉｃａｔｉｏｎ  ｍｅｃｈａｎｉｓｍ）など、コールバックを生成することができる。このコールバックは執行モジュール３０４に伝達され得る。そうしたコールバックのフォーマットの一例を以下に示す。
【００３７】
void  SocketActivityCallback(
DWORD        dwProcessID,  //  process  causing  socket  event
SOCKET        sock,          //  socket  handle
SOCK_EVENT    event,        //  socket  event  (e.g.  bind)
LPVOID        pDetails      //  socket  event  parameters
DWORD        cbDetails      //  event  parameter  size
);
【００３８】
前述のコールバックでは、以下のパラメータが存在する。ｄｗＰｒｏｃｅｓｓＩＤは、そのイベントを開始したプロセスのＩＤであり、ｓｏｃｋは、イベントが生成された対象のソケットのハンドルであり、ｅｖｅｎｔは、ＳＯＣＫＥＴ＿ＥＶＥＮＴ＿ＢＩＮＤなどのイベントＩＤであり、ｐＤｅｔａｉｌｓは、イベント別の、イベント詳細を含むブラブ（ｂｌｏｂ）へのポインタであり、ｃｂＤｅｔａｉｌｓは、イベント詳細ブラブのサイズである。他のデータ構造または通知機構を使用して、ファイアウォール対応アプリケーション３０６が接続を確立しようとしていることを執行モジュール３０４に知らせることもできる。コールバックの代替手段の一例として、入出力（Ｉ／Ｏ）呼び出しを使用することもできる。
【００３９】
コールバックは、各ソケットイベントが発生した直後に呼び出される。本発明の一実施形態によれば、執行モジュール３０４は、ソケットイベントが発生し次第それらを調査し、ファイアウォールコード３０２および／またはエッジファイアウォール３２４への適当な通信を可能にするために関連ソケット状態の詳細を維持する。
【００４０】
オペレーティングシステム３００および／または執行モジュール３０４は、ファイアウォールＡＰＩ３２６を利用して、ファイアウォール対応アプリケーション３０６によって接続が要求されていることをファイアウォールコード３０２に知らせる。この通知は前述のとおりとすることができ、さらに、アプリケーションの信用レベル、アプリケーション識別など、アプリケーション特有の情報を含むこともできる。ファイアウォール対応アプリケーション３０６は、その要求をファイアウォールポリシー３１４と比較して、その要求を許可または拒絶することができる。アプリケーションへの指示は与えられても与えられなくてもよい。
【００４１】
また、本発明の一実施形態によれば、ファイアウォールコード３０２はエッジファイアウォール３２４に、接続が要求されていることを通知する。この情報を、認証済みプロトコルまたはエージェント３２０を介してエッジファイアウォール３２４に送ることができる。さらにエッジファイアウォール３２４は、この要求をそれ自体の（図示しないが、当技術分野で公知の）ポリシーと対照してチェックすることができる。要求がファイアウォールコード３０２とエッジファイアウォール３２４両方のポリシーを満たす場合は、その接続はファイアウォールの通過を許される。
【００４２】
ファイアウォールコード３０２とエッジファイアウォール３２４の両方を備えると述べたが、本発明は、これらのファイアウォールの一方だけを備えるシステムでも実装することができる。例えば、１台のコンピュータ１０２だけしかない家庭内ネットワークでは、使用可能な唯一のファイアウォールをファイアウォールコード３０２とすることもできる。
【００４３】
図４に、既知のエンドポイント（リモートコンピュータ１０８の１つなど）から単一接続（ＴＣＰ接続など）を受け取るよう要求するファイアウォール対応アプリケーション３０６のプロセスの一例を示す。
【００４４】
ステップ４００で、ファイアウォール対応アプリケーション３０６は新規ソケットを作成する。ステップ４０２で、ファイアウォール対応アプリケーション３０６は、ポートＮ上で接続を受け取るためにそのソケットをバインドする。ステップ４０４で、ファイアウォール対応アプリケーション３０６は、アプリケーションＡＰＩ３０８を使用して、特定のアドレスからの接続を期待することをオペレーティングシステム３００および／または執行モジュール３０４に知らせる。これは、例えば、前述の呼び出しのフォーマットを使用して行うこともできる。ステップ４０４で、ファイアウォール対応アプリケーション３０６は、ポートＮ上でその接続を受け取るためにソケットをバインドする。
【００４５】
ステップ４０６で、ファイアウォール対応アプリケーション３０６は、（図示しないが、当祇重油分野で公知の）受諾ＡＰＩを呼び出し、接続の待機を開始する。ファイアウォール対応アプリケーション３０６が受諾ＡＰＩを呼び出すと、前述のように、通知が送られる。これで、オペレーティングシステム３００は、ファイアウォール対応アプリケーション３０６の意図および接続エンドポイントの完全な知識を持っており、ステップ４０８では、ファイアウォールＡＰＩ３２６を使用して、指定されたアドレスからの単一接続がローカルポートＮ上に届くと期待されることをファイアウォールコード３０２に知らせる。この通知は、アプリケーションの信用レベル、アプリケーション識別、その他の情報など、アプリケーション特有の情報を含むこともできる。
【００４６】
ステップ４１０で、ファイアウォールコード３０２は、ファイアウォール対応アプリケーション３０６による要求をファイアウォールポリシー３１４と比較し、その要求を許可または拒絶する。ステップ４１２で、ファイアウォールコード３０２は、周知の特性を有する一接続が期待されることをエッジファイアウォール３２４に通知する。
【００４７】
リモートノードがポートＮ上でファイアウォール対応アプリケーション３０６への接続を開始するときに、その要求がファイアウォールコード３０２およびエッジファイアウォール３２４のポリシーを満たす場合は、その通信が許可されることになる。ステップ４１４で、リモートコンピュータ１０８は接続を確立する。
【００４８】
ファイアウォール対応アプリケーション３０６がリッスンポートＮの処理を終えると、ステップ４１６でソケットが閉じられる。次いで、オペレーティングシステム３００は、ステップ４１８で、例えば、ファイアウォールコード３０２に通知するなどの終結処理を実施することができ、これはエッジファイアウォール３２４とやりとりする。
【００４９】
以上から理解できるように、アプリケーションＡＰＩ３０８およびファイアウォールＡＰＩ３２６は、ファイアウォール対応アプリケーション３０６がホストまたはエッジファイアウォールに要求を伝達するための機構を提供する。次いで、それらのファイアウォールはしかるべく反応し、その要求がファイアウォールポリシー３１４（および関連する場合はエッジファイアウォールのファイアウォールポリシー）を満たせば、接続を許可することができる。したがって、アプリケーションＡＰＩ３０８およびファイアウォールＡＰＩ３２６は、各接続タイプごとに別個の、アプリケーション特有のコードを記述することを必要とせずに、アプリケーションにファイアウォール横断のための拡張された支援を提供する。
【００５０】
前述の実施形態では、執行モジュール３０４はオペレーティングシステム３００のコンポーネントとして動作し、あるいはそれと密接に関連付けられ、ファイアウォール対応アプリケーション３０６による要求を処理する。必要に応じて、執行モジュール３０４は、アプリケーションＡＰＩ３０８とファイアウォールＡＰＩ３２６の抽象化レベルとの間での変換を提供することもできる。例えば、アプリケーションＡＰＩ３０８はソケットおよび接続を処理することができ、ファイアウォールＡＰＩ３２６はポートおよびフローを処理することができる。
【００５１】
本発明の別の実施形態によれば、執行モジュール３０４により、さらに、ユーザは、アプリケーションまたはサービスにファイアウォールを介した横断を許可または拒絶するための簡単なファイアウォールポリシーまたはネットワークアクセスポリシーを作成することができる。執行モジュール３０４のこの態様の諸機能を以下で説明する。本明細書で説明する執行モジュール３０４は、すでに述べた諸機能と共にさらに以下で述べる諸機能を実施することができるが、別個の機能に別個のモジュールを提供することもできる。また、コンピュータ１０２などのコンピュータは、これらの機能セットのうちの１つだけまたはこれらの機能セットの一部を備えるモジュールを含むこともできる。しかし、説明を容易にするために、本明細書の説明では、執行モジュール３０４が少なくとも前述の両方の機能セットを実施できるものとする。
【００５２】
この説明のために、以下本明細書では、ファイアウォール非対応アプリケーション３１０と共に機能するように構成された執行モジュール３０４の一部を、代行受信モジュール５００と呼ぶ（図５）。一般に、代行受信モジュール５００は、アプリケーションおよびサービスによるコンピュータ１０２などのローカルコンピュータ上のネットワークスタック５０８への接続試行およびリッスン試行を監視するように構成される。代行受信モジュール５００はこれらの試行を捕捉し、どのユーザがその試行を行っているか判定し、どのアプリケーション／サービスがその試行を行っているかを判定し、そのユーザおよびアプリケーション／サービスがネットワークへの接続を許されているかどうか判定するためにファイアウォールポリシー３１４ルックアップを行う。
【００５３】
図５に、コンピュータ１０２のいくつかのコンポーネントと、それらのコンポーネントの代行受信モジュール５００との対話を一般的に表す構成図を示す。コンピュータ１０２は、ユーザモードソケットインターフェース５０２（ユーザモードＷｉｎｓｏｃｋなど）、カーネルモードソケットインターフェース５０４（カーネルモードＷｉｎｓｏｃｋなど）、およびネットワークアダプタ５１０を含む。
【００５４】
一般に、図５に示すコンポーネントのそれぞれは、代行受信モジュール５００を除いて、既存のコンピュータ上に何らかの形で存在する。本発明の一実施形態によれば、代行受信モジュール５００は、アプリケーションおよびサービスによる接続またはリッスン試行を受け取り、それらを捕捉することができるように構成される。このために、代行受信モジュール５００は、例えば、ネットワークスタック５０８とファイアウォール非対応アプリケーション３１０との間や、ネットワークスタック５０８のインターフェースのところに位置することができる。以下でさらに述べるように、代行受信モジュール５００は、接続および／またはリッスン試行から接続に必要なものを取り出し、それら接続に必要なものがポリシーに合致するかどうか判定し、合致する場合は、その接続を許可するための低レベルファイアウォールフィルタを作成するようファイアウォールコード３０２に指示する。
【００５５】
一般に、接続およびリッスン試行には、１つのエンドポイントに接続しようとする、あるいは１つのエンドポイントから接続しようとする任意の試行が含まれる。このために、本明細書で使用する場合、「接続」および／または「リッスン」試行には、特に、送信要求、受信要求、結合要求、および更新要求が含まれる。
【００５６】
コンピュータ１０２によるリッスンおよび／または接続試行は、通常、代行受信モジュール５００にアプリケーション／サービスの必要とするものを判定させるためのパラメータを含む。一例では、リッスン試行と接続試行の両方で、通常は、ポートのバインドが要求される。このバインドは、特定のポートで行うこともでき、様々なポートを利用できる場合には、ワイルドカードポートで行うこともできる。リッスン試行は、通常、アプリケーション／サービスがそこで接続を受け取ることを望むソケットアドレスを含む。また、リッスン試行の文脈からアプリケーションＩＤおよびユーザＩＤを推論することもできる。この推論された情報から、個々のソケットを求める要求を、そのアプリケーションおよび／またはユーザについてのポリシーと対照して評価することができ、そのポリシーに基づいて接続が許可されたり、されなかったりする。
【００５７】
接続要求が出された場合、その接続要求はリッスン要求に類似した情報を含むはずであり、エンドポイントアドレスを含むこともある。この情報も、やはり、その接続を行うことができるか否かを判定するために使用され、ポリシーと対照して評価される。
【００５８】
コンピュータ１０２上の個々のアプリケーションおよびサービスがネットワークに接続することを許可し、または拒絶するために、ファイアウォールポリシー３１４内にコンピュータ１０２用の一般的ポリシーを作成することができる。この一般的ポリシーは、コンピュータ１０２用のユーザ設定を設定する際にコンピュータ１０２上に手動で設定することもでき、ネットワーク管理者が設定することもでき、ユーザプロファイルの設定時にデフォルト設定に設定することもできる。必要に応じて、このポリシーをユーザごとに設定することもできる。これらの一般的ポリシーは、例えば、「代行受信モジュール５００が異なるポリシーを有しない限り、どのアプリケーションも安全でないネットワーク１１０に接続させない」とすることができる。この一般的ポリシーは、代行受信モジュール５００によって維持されるポリシーと別個に記憶することも、一緒に記憶することもできる。
【００５９】
本発明の一実施形態によれば、代行受信モジュール５００内の（および例えばポリシーキャッシュ６１２などに記憶された）ポリシーは、ユーザおよび／またはサービス／アプリケーションによる要求の結果として作成され、記憶され得る。この要求は、例えば、自動で、あるいはコンピュータ上にサービスまたはアプリケーションをインストールする際、接続の開始時、または別の適当なときにユーザインターフェースを介して行うことができる。この要求は、単に、「アプリケーションＸをインターネットに１回接続させる」、あるいは他の非限定的な例のように、ファイアウォール対応アプリケーション３０６の説明と共に前述した要求のいずれかなど、所望の接続の簡単なパラメータを含むだけでもよい。
【００６０】
本発明の一実施形態によれば、ユーザおよび／またはアプリケーションによる要求は、アプリケーション／サービスがファイアウォールコード３０２および／またはエッジファイアウォール３２４を横断できるようにするためにポートの規則、プロトコル、またはＩＰアドレスを必要としない。その代わりに、前述のように、ポリシーが確立された後で、アプリケーションによる接続要求に応じて、代行受信モジュール５００が、アプリケーション／サービスの接続およびリッスン試行を評価することによって、アプリケーション／サービスの必要とするものを判定する。
【００６１】
代行受信モジュール５００の一般的コンポーネントを示す構成図を図６に示す。代行受信モジュール５００は、本明細書で述べる代行受信モジュール５００の基本動作の大部分を実施する論理エンジン６００を含む。論理エンジン６００には代行受信インターフェースクライアント６０２が接続され、ネットワークスタック５０８と対話し、ファイアウォール非対応アプリケーション３１０などのアプリケーションによって出される接続および／またはリッスン要求を捕捉するように構成される。構成およびポリシーＡＰＩ６０４はファイアウォールポリシー３１４または関連するポリシーマネージャ（図示せず）とやりとりするように構成、設定される。
【００６２】
ローカルファイアウォールクライアント（ファイアウォールコードクライアント）６０６はファイアウォールコード３０２とやりとりするように構成される。ファイアウォール横断プロトコルクライアント（エッジファイアウォール横断プロトコルクライアント）６０８は、エッジファイアウォール３２４とやりとりするように構成、設定される。
【００６３】
図６に示す例では、代行受信モジュール５００はエンドポイントキャッシュ６１０、ポリシーキャッシュ６１２、およびフィルタキャッシュ６１４を含む。エンドポイントキャッシュ６１０は、代行受信モジュール５００が現在管理している様々なエンドポイント（すなわちノード）の動作状態を記憶する。それは、代行受信インターフェースクライアント６０２からの入力に基づいて、論理エンジン６００によって更新される。ポリシーキャッシュ６１２は、代行受信モジュールが執行すべきポリシーを記憶する。ポリシーキャッシュ６１２中のエントリは、エンドポイントキャッシュ６１０中のエントリ（すなわち、それに対して所与のポリシーが執行されるエンドポイント）と関連付けることができる。１つのポリシーエントリを複数のエンドポイントと関連付けることもできる。
【００６４】
代行受信インターフェースクライアント６０２は、リッスンおよび／または接続試行の詳細を処理し、ネットワークスタック５０８と対話して、論理エンジン６００に代行受信されたアクションを知らせると共に許可決定を受け取るために論理エンジン６００に要求を出す。構成およびポリシーＡＰＩ６０４は、代行受信モジュール５００への外部インターフェースである。この構成およびポリシーＡＰＩ６０４に要求が出され、それがポリシーキャッシュ６１２に記憶される。ポリシーは、例えば、インストール時または接続試行時にファイアウォールポリシー３１４を介してアプリケーションによって提供されることもあり、例えば、ソケットＡＰＩ３１２（図３）を介してユーザから供給されることもある。以下に他の例を示す。ローカルファイアウォールクライアント６０６は、適当なフィルタを作成するようファイアウォールコード３０２に指示するために利用される。同様に、ファイアウォール横断プロトコルクライアント６０８は、適当なフィルタを構築するようにエッジファイアウォール３２４に指示するために利用され、したがって、エージェント３２０とほとんど同じ機能を果たす。
【００６５】
フィルタキャッシュ６１４は論理エンジン６００が作成したフィルタのためのエントリを含む。フィルタキャッシュ６１４中のエントリは、エンドポイントキャッシュ６１０中のエントリ（例えば、それに対してフィルタが作成されているエンドポイント）と関連付けることができる。１つのフィルタを複数のエンドポイントと関連付けることもできる。フィルタキャッシュ６１４中に含まれ得る情報には、フィルタの詳細（例えば、５タプル、関連ＩＰＳｅｃポリシーなど）、使用される、対応するファイアウォールフィルタのハンドル、および／またはファイアウォール横断プロトコルクライアント６０８の識別情報が含まれる。
【００６６】
次に代行受信モジュール５００の動作を見ると、アプリケーション／サービスが接続を確立しようとする前に、ユーザおよび／またはそのアプリケーション／サービスが、構成およびポリシーＡＰＩ６０４を介してそのアプリケーション／サービスのためのポリシーを確立する。このポリシーはポリシーキャッシュ６１２に記憶される。ポリシーが確立されると、代行受信インターフェースクライアント６０２は、コンピュータ１０２上のネットワークスタック５０８へのアプリケーションおよびサービスによる接続およびリッスン試行を監視する。代行受信インターフェースクライアント６０２はこれらの試行を捕捉し、それを論理エンジン６００に送る。論理エンジン６００は、どのユーザがその試行を行っているか判定し、どのアプリケーション／サービスがその試行を行っているか判定し、その情報をエンドポイントキャッシュ６１０に記憶する。次いで、論理エンジン６００は、ユーザおよびアプリケーション／サービスが要求されたネットワークへの接続を許されているかどうか判定するためにポリシーキャッシュ６１２にアクセスする。
【００６７】
ユーザとアプリケーション／サービスの両方がネットワークへの接続を許されている場合は、そのアプリケーション／サービスに自由なネットワーク通信を行わせるために、低レベルファイアウォールフィルタなど、適当なファイアウォール構成が作成される。このファイアウォール構成はフィルタキャッシュ６１４に記憶される。ローカルファイアウォールクライアント６０６およびネットワーク横断プロトコルクライアント６０８はこのフィルタ情報を使用して、ファイアウォールコード３０２およびエッジファイアウォール３２４に接続を確立させるよう指示することができる。
【００６８】
本発明の一実施形態によれば、代行受信モジュール５００と共に通知クライアント６１６が提供される。通知クライアント６１６は、ユーザにイベントを通知するために（図示しないが、当技術分野で公知の）シェル通知マネージャまたは類似のコンポーネントとやりとりするように構成、設定される。例えば、通知クライアント６１６は、図７のユーザインターフェース７００で示すように、アプリケーション／サービスがインターネットにアクセスしようとしていること、およびオペレーティングシステム３００がこの試行をブロックしていることをユーザに通知するよう通知マネージャに指示することができる。また、通知クライアント６１６は、図７のボタン７０２および７０４によって可能とされるように、ブロックを継続するかそれをもアクセスを許可するかについてのユーザの指示を要求するよう通知マネージャに指示することもできる。通知クライアント６１６は、それが適切な場合には、ユーザのクエリへの応答を待ち、それを論理エンジン６００に知らせることもできる。
【００６９】
ユーザが、接続を許可するボタン７０４を選択した場合は、そのボタンの選択によってそのアプリケーション（ここではアプリケーションＸ）のためのポリシーが確立される。必要に応じて、そのポリシーは１回限りの接続を許可することも、将来の接続を許可することも、時間制限内（一日以内など）の接続を許可することもできる。
【００７０】
図８に、代行受信モジュール５００が、どのようにしてファイアウォール非対応アプリケーション３１０に、ファイアウォールコード３０２および／またはエッジファイアウォール３２４などのファイアウォールを介した横断を許可することができるかを示す。ステップ８００から開始して、ユーザは、例えば、そのユーザがそのアプリケーションを実行するときに限り、アプリケーションＸがネットワークに接続することを許可するポリシーを作成する。その後ユーザは、ステップ８０２でアプリケーションＸを実行する。アプリケーションＸは、ネットワークスタック５０８への接続とリッスンの両方を試みる。代行受信モジュール５００がステップ８０４でこれらの接続およびリッスン試行を捕捉する。代行受信モジュール５００は、ステップ８０６で、どのアプリケーション／サービスがその要求を行っているか判定し、ステップ８０８でそのアプリケーション／サービスがどのユーザとして実行されているか判定する。
【００７１】
この情報に基づいて、代行受信モジュール５００は、そのユーザおよびアプリケーションがネットワークへの接続を許されていると判定し、ローカルポート上での受信待機および要求されたエンドポイントへの接続を許すようにファイアウォールポリシーを自動的に変更する。
【００７２】
このユーザ別ポリシーは所与のユーザに限って確立されるので、異なるユーザはネットワークにアクセスできない。例えば、ステップ８１２で、第２のユーザがアプリケーションＸを実行し、ステップ８１４で代行受信モジュール５００が、ステップ８０６および８０８と同様の、必要な許可チェックを行う。ステップ８１６で、代行受信モジュール５００は、第２のユーザがネットワーク上でアプリケーションＸを実行することを許可されていないと判定し、例えば、通知クライアント６１６を介してアプリケーションにエラーを返す。
【００７３】
図９は、サービスが、どのようにして、ファイアウォールコード３０２および／またはエッジファイアウォール３２４に、そのサービスがネットワーク接続で必要とするものを知らせることができるかの一例の諸ステップを一般的に示す流れ図である。ステップ９００から開始して、コンピュータ１０２などのコンピュータ上のサービスはリッスンソケットを開く。ステップ９０２で、このサービスは、ソケットＡＰＩ３１２などのＡＰＩを使用して、例えば、ローカルサブネット（安全なネットワーク１０４など）からの着信トラフィックだけを受け入れるべきことを指示するポリシーを確立する。ステップ９０４で、サービスはソケットにバインドし、接続試行を待つ。ステップ９０６で、安全なネットワーク１０４上の別のコンピュータ１０２など、第２のコンピュータ上のユーザが、コンピュータ１０２上のサービスに接続しようとするアプリケーションを開く。
【００７４】
コンピュータ１０２上の代行受信モジュール５００は、ステップ９０８でこの接続試行を代行受信し、第２のコンピュータのサブネットをそれ自体のサブネットと比較する。ステップ９１０で、サブネットチェックが成功し、第２のコンピュータ１０２上のアプリケーションが第１のコンピュータ１０２上のサービスに接続する。
【００７５】
ステップ９０２で確立された同じポリシーを使用して、ステップ９１２〜９１６に示すように、ローカルサブネットからでないコンピュータを拒絶することもできる。ステップ９１２で、リモートコンピュータ１０８上のユーザは、第１のコンピュータ１０２上のサービスに接続しようとするアプリケーションを開く。ステップ９１４で、第１のコンピュータ１０２上のファイアウォールコード３０２はその接続試行を代行受信し、リモートコンピュータ１０８のサブネットをそれ自体のサブネットと比較する。ステップ９１６で、このサブネットチェックは失敗し、リモートコンピュータ１０８上のアプリケーションは、第１のコンピュータ１０２上のサービスへの接続を許されない。
【００７６】
出版物、特許出願、および特許を含めて、本明細書に引用されるすべての参照文献は、各参照文献が参照によって組み込まれるように個々に具体的に指示され、その全体が本明細書に記載された場合と同程度に、参照によって本明細書に組み込まれるものとする。
【００７７】
本発明を記述する文脈（特に添付の特許請求の範囲の文脈）において、単数で指示される語は、本明細書で特に指示し、あるいは文脈と明確に矛盾しない限り、単数と複数の両方をカバーするものと解釈すべきである。「備える」、「有する」、および「含む」の各語は、特に言及しない限り、非制限的用語（すなわち、「を含むが、それだけに限らない」を意味するもの）であると解釈すべきである。本明細書での値の範囲の記述は、本明細書で特に指示しない限り、単に、その範囲内に含まれる各別個の値に個々に言及するのを省略するための方法として使用されているにすぎず、各別個の値は、それが本明細書で個々に記載された場合と同様に本明細書に組み込まれるものである。本明細書で述べたすべての方法は、本明細書で特に指示しない限り、あるいは文脈と明確に矛盾しない限り、任意の適当な順序で実施することができる。本明細書で提供されるありとあらゆる例、または例示的文言（例えば、「など（ｓｕｃｈ  ａｓ）」）の使用は、単に、本発明の実施形態をより明確にするためのものにすぎず、特に特許請求されない限り、本発明の範囲に制限を加えるものではない。本明細書中のどんな文言も、特許請求されない要素を本発明の実施に不可欠なものであると指示するものではないと解釈すべきである。
【００７８】
本明細書では、発明者に知られている本発明を実行するための最良の形態を含めて、本発明の好ましい実施形態を説明してきた。それらの好ましい実施形態の変形形態は、前述の説明を読めば、当業者には明らかになると考えられる。発明者らは、当分野の技術者が必要に応じてそうした変形形態を用いるものと期待し、本発明が、本明細書で具体的に述べた以外のやり方で実施されることを意図するものである。したがって、本発明は、準拠法で許されるように、本明細書に添付される特許請求の範囲に記載された内容のすべての改変形態および均等物を含むものである。さらに、本明細書で特に指示しない限り、あるいは文脈と明確に矛盾しない限り、前述の要素の、そのあらゆる可能な変形形態での任意の組合せも本発明によって包含されるものである。
【図面の簡単な説明】
【００７９】
【図１】ネットワークによって接続されたコンピュータを示す概略図である。
【図２】本発明の一実施形態を実装するために使用可能なコンピュータシステムの一例を示す概略図である。
【図３】本発明の一実施形態に従って使用できる、図２のコンピュータシステムのアーキテクチャの詳細を示す構成図である。
【図４】リモートコンピュータなどの既知のエンドポイントからの単一接続を受け取るよう要求するファイアウォール対応アプリケーションのプロセスの一例を示す流れ図である。
【図５】図２のコンピュータシステムのコンポーネント、およびそれらの本発明の一実施形態による代行受信モジュールとの対話を表す概略構成図である。
【図６】図５の代行受信モジュールの一般的コンポーネントを示す構成図である。
【図７】本発明の一実施形態による、失敗した接続試行時にユーザに提示することのできるユーザインターフェースを示す図である。
【図８】図５の代行受信モジュールが、どのようにして、ファイアウォール非対応アプリケーションにファイアウォールを介して横断させることができるかの一例を示す流れ図である。
【図９】サービスまたはアプリケーションが、どのようにして、ファイアウォールコードおよび／またはエッジファイアウォールに、そのサービスがネットワーク接続で必要とするものを知らせることができるかの一例を示す流れ図である。
【符号の説明】
【００８０】
１０２  コンピュータ
１０４  安全なネットワーク
１０６  インターネットゲートウェイ装置
１０８  リモートコンピュータ
１１０  安全でないネットワーク
２０２  処理装置
２０４  メモリ
２０６  最も基本的な構成
２０８  取り外し可能記憶装置
２１０  取り外し不能記憶装置
２１２  通信接続
２１６  入力装置
２１８  出力装置
２２０  ディスプレイ
３００  オペレーティングシステム
３０２  ファイアウォールコード
３０４  執行モジュール
３０６  ファイアウォール対応アプリケーション
３０８  アプリケーションＡＰＩ
３１０  ファイアウォール非対応アプリケーション
３１２  ソケットＡＰＩ
３１４  ファイアウォールポリシー
３２０  エージェント
３２４  エッジファイアウォール
３２６  ファイアウォールＡＰＩ
５００  代行受信モジュール
５０２  ユーザモードソケットインターフェース
５０４  カーネルモードソケットインターフェース
５０８  ネットワークスタック
５１０  ネットワークアダプタ
６００  論理エンジン
６０２  代行受信インターフェースクライアント
６０４  構成およびポリシーＡＰＩ
６０６  ローカルファイアウォールクライアント
６０８  ファイアウォール横断プロトコルクライアント
６１０  エンドポイントキャッシュ
６１２  ポリシーキャッシュ
６１４  フィルタキャッシュ
６１６  通知クライアント
【図１】
2005018769.tif 000003
【図２】
2005018769.tif 000004
【図３】
2005018769.tif 000005
【図４】
2005018769.tif 000006
【図５】
2005018769.tif 000007
【図６】
2005018769.tif 000008
【図７】
2005018769.tif 000009
【図８】
2005018769.tif 000010
【図９】
2005018769.tif 000011