JP2004364315A - 複数のネットワーク・ポリシーを統合するための方法とフレームワーク - Google Patents

複数のネットワーク・ポリシーを統合するための方法とフレームワーク Download PDF

Info

Publication number
JP2004364315A
JP2004364315A JP2004167768A JP2004167768A JP2004364315A JP 2004364315 A JP2004364315 A JP 2004364315A JP 2004167768 A JP2004167768 A JP 2004167768A JP 2004167768 A JP2004167768 A JP 2004167768A JP 2004364315 A JP2004364315 A JP 2004364315A
Authority
JP
Japan
Prior art keywords
policy
layer
filter
network
packet
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
Application number
JP2004167768A
Other languages
English (en)
Inventor
Brian D Swander
ディー.スワンダー ブライアン
William H Dixon
エイチ.ディクソン ウィリアム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004364315A publication Critical patent/JP2004364315A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/22Arrangements for preventing the taking of data from a data transmission channel without authorisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0209Architectural arrangements, e.g. perimeter networks or demilitarized zones
    • H04L63/0218Distributed architectures, e.g. distributed firewalls
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】 1つのネットワーク・デバイス内で複数ネットワーク・ポリシーを管理し実装するための方法およびシステムを開示する。
【解決手段】 複数のポリシーはそれぞれ、1つまたは複数のフィルタにより定義される。フィルタはポリシー・エンジン内にインストールされる。レイヤは、ポリシー・エンジンに要求を送信することによりパケットに適用されるネットワーク・ポリシーを識別する。ポリシー・エンジンは、次に、そのポリシーを要求レイヤに返す。この方法およびシステムは、複数のプロトコル・レイヤでセキュリティおよびその他のポリシーを適用することができるプログラム可能なホスト・ベースの分散認証ファイヤウォールを実装するために使用することができる。
【選択図】 図10

Description

本発明は、一般に、コンピュータ・システムおよびネットワーク・セキュリティに関する。より具体的には、本発明は、複数のネットワーク・ポリシー(network policies)をネットワーク・デバイス(network device)内の単一フレームワーク(single framework)に統合する方法に関する。
本発明は、本出願と同日に出願されている特許出願「Multi-Layer Based Method for Implementing Network Firewalls」、「Multi-Layered Firewall Architecture Implemented in a Network Device」、および「Method for Managing Network Filter Based Policy」の対象事項に関係する対象事項を対象とし、それらの開示を参照により本発明に組み込む。
ネットワーク・プロトコルは、オープンなデータ交換を通じてネットワーク・デバイス間の通信を円滑にすることを目的としている。オープンなデータ交換は、作業遂行するためにネットワーク・デバイスの使用を拡大する一方、ネットワーク・プロトコルはネットワーク・セキュリティを考慮した設計にはなっておらず、また一般に、そのような機能も備えていないため、問題を生じさせている。ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、イントラネット、およびインターネットなどのパブリック・ネットワークおよびプライベート・ネットワークの両方に結合されているコンピュータは、ネットワークに直接的にまたは間接的に結合されている他のネットワーク・デバイスからの悪質な攻撃に影響されやすい。このような悪質な攻撃としては、情報窃盗(theft of data)、サービス拒否(DOS)攻撃、コンピュータ・ウイルスの拡散、などがある。
ネットワーク・デバイスを悪質な攻撃から守るために、通常は1つまたは複数のネットワーク・ポリシーを使用するさまざまな方法が開発されてきた。ネットワーク・ポリシーの1つに、Internet Protocol Security(IPSec)Suiteにより実現されるようなセキュリティ・ポリシーがある。IPSec suiteは、カプセル化セキュリティ・プロトコル(Encapsulating Security Protocol:ESP)、認証ヘッダ(Authentication Header:AH)、およびインターネット鍵交換(自動鍵交換とも呼ばれる)および管理(Internet Key Exchange and Management:IKE)などのプロトコルを備える。ESPプロトコルは、Internet Engineering Task Force(IETF)Request for Comments(RFC)2406として文書化されている、データの完全性、ソース認証、および機密保持を実現する暗号化メカニズムを使用する認証および暗号化プロトコルである。AHプロトコルは、IETF RFC 2402に文書化されている、パケット・ヘッダ内でハッシュ署名を使用してパケット・データの完全性および送信者の真正性(authenticity)を確認するための認証プロトコルである。
IKEプロトコルは、IETF RFC 2409に文書化されており、AHおよびESP形式とともに使用されるセキュリティ設定をネットワーク・デバイスでネゴシエートするための方法を提供する。ネゴシエートされたセキュリティ設定では、セキュリティ・アソシエーション(SA)と呼ばれるデータ構造体を形成する。SAでは、認証アルゴリズム、暗号化アルゴリズム、鍵、および鍵の存続期間など、IPパケットの内容を保護するためにESPまたはAHで使用するパラメータを定義する。ESPおよびAHは確立されたSAを必要とするため、ESPまたはAHプロトコルを使用してデータを送信する前にIKEネゴシエーションが実行される。
ネットワーク・デバイスは、IPSec、例えば、IKE、AH、またはESP、処理の対象となるパケット、およびそのようなパケットをセキュリティ・ポリシー・データベース(SPD)内で維持されるセキュリティ・ポリシーに基づいてIPSec処理する方法を識別する。セキュリティ・ポリシーは、IPSecの使用法を定義する、ネットワーク・デバイスに割り当てられる、一組のルールである。セキュリティ・ポリシーは、フィルタ・リスト、認証方法、およびその他の情報を含む。パケットに適用すべき適切なセキュリティ・ポリシーは、通常、パケットの送信元および送信先IPアドレス、送信元および送信先ポート、およびプロトコル・タイプに基づいて決定される。
悪質な攻撃から防護するために使用される他のネットワーク・ポリシーとしては、ファイヤウォール・ポリシーがある。ファイヤウォール・ポリシーは、1つまたは複数のフィルタにより実装される。それぞれのフィルタは、フィルタ・パラメータにマッチするパケットに適用すべきフィルタ・パラメータおよび関連するポリシーを含む。フィルタ・パラメータは、ハードウェアのアドレス、例えば、メディア・アクセス制御(MAC)アドレス、ネットワーク・アドレス、例えば、IPアドレス、プロトコル・タイプ、例えば、トランスポート制御プロトコル(TCP)、ポート番号などの情報を含む。フィルタ内のファイヤウォール・ポリシーにより、フィルタ・パラメータにマッチするパラメータを含むパケットをどのように処理するかを識別する。具体的な例をあげると、フィルタはパラメータとしてURL(Uniform Resource Locator)アドレス、例えば「http://www.foo.com」を含む。フィルタ・ポリシーにより、そのURLアドレスを含むパケットを削除することを指示する。ネットワーク・デバイスは、パケットを調査し、その調査の結果、URLアドレス「http://www.foo.com」をパケットに埋め込まれていると認識した場合、パケットを削除し、そうすることでそのパケットがネットワークをトラバースしないようにする。
また、ネットワーク・デバイスでは、セキュリティに関係しないポリシーを使用してネットワーク・トラフィックの流れを制御する。一例として、ネットワーク・デバイスでは、サービスの品質(QOS)ベースのポリシーを実装する。QOSは、伝送速度、エラー率、およびその他の特性を測定し、これらを改善し、そしてこれらがある程度まであらかじめ保証されるという事実に対応するものである。パケットは、ポリシーおよび予約基準(reservation criteria)に基づき最優先で処理することができる。例えば、QOSは、ネットワーク帯域幅を割り当てて、ネットワーク・デバイス間の通信を改善するために使用される。
複数のポリシー、例えば、セキュリティ・ポリシー、ファイヤウォール・ポリシー、QOSポリシー、およびネットワーク・デバイスに実装するべき類似のものは、珍しいものではない。これらの複数のポリシーは、コンフリクト(conflict)する、つまり、同じパケットに矛盾した複数のアクションを採用すること、を認めてしまう。複数のネットワーク・ポリシーを1つのネットワーク・デバイス内に実装する場合も、パケット伝送問題の診断が困難になる。例えば、パケットが適切に送信されない場合、または受信されない場合、パケットを妨害しているネットワーク・ポリシーがどれであるかを識別することは困難である。
本発明は、1つのネットワーク・デバイス内に複数のネットワーク・ポリシーを実装する方法およびフレームワークを対象とする。複数のネットワーク・ポリシーは、ポリシー・エンジンにインストールされている一組のフィルタにより定義される。各フィルタは、一組のフィルタ条件、1つのアクション、および1つのポリシー・コンテキスト(policy context)を含む。フィルタ条件には、パケットにマッチする1つまたは複数のフィルタをポリシー・エンジンが識別することを可能にするパラメータが含まれる。アクションおよびポリシー・コンテキストは、フィルタ条件にマッチ(一致)するパケットに適用するネットワーク・ポリシーを識別(特定)する。
要求レイヤ(requesting layer)は、パケットに関連する一組のパラメータとともに要求をポリシー・エンジンに送信する。ポリシー・エンジンは、パケットに関連付けられているパラメータをフィルタ条件と比較することにより、そのパケットの1つまたは複数のマッチするフィルタ(matching filters)を識別する。その後、マッチするフィルタ内のポリシー・コンテキストとアクションから、ネットワーク・ポリシーが識別される。ネットワーク・ポリシーは、識別された後、ネットワーク・デバイスにより実行される。
本発明の一実施形態では、複数のネットワーク・ポリシーのうちの1つは、アクションとして一組のフィルタ内にpermit(許可)またはblock(遮断)を記述するという形で実装されるファイヤウォール・ポリシーであり、それにより、フィルタ条件にマッチするパケットがネットワーク・スタック内のレイヤをトラバース(移動)するのを許可するか、またはその逆にそれ以上ネットワーク内をトラバースしないようにブロック(遮断)するかを識別することができる。
本発明の一実施形態では、複数のポリシーのうちの1つは、ポリシー・コンテキストとして、フィルタ条件にマッチするパケットに適用するセキュリティ・ポリシーを識別するデータを記述するセキュリティ・ポリシーである。
本発明の一実施形態では、複数のポリシーのうちの1つは、ポリシー・コンテキストとして、フィルタ条件にマッチするパケットに適用する通信設定を識別するデータを記述するサービスの品質(QOS)ポリシーである。
本発明の方法およびフレームワークは、複数のプロトコル・レイヤでセキュリティおよびその他のポリシーを適用することができる、プログラム可能な、ホスト・ベースの、分散認証ファイヤウォールを実装するために使用することができる。本発明の他の特徴および利点は、添付図を参照して進められている説明目的の実施形態の以下の詳細な説明から明白であろう。
請求の範囲で本発明の特徴を詳細に述べているが、本発明は、その目的および利点とともに、添付図面に関する以下の詳細な説明から最もよく理解できると思われる。
ネットワーク・デバイス内に複数のフィルタ・ベースのネットワーク・ポリシーを実装し管理する方法およびフレームワークについて説明する。代表的なフィルタ・ベースのネットワーク・ポリシーとして、セキュリティ・ポリシー、ファイヤウォール・ポリシー、およびQOSポリシーがある。1つのフィルタ・ポリシー・エンジンに、複数のフィルタ・ペースのネットワーク・ポリシーが格納される。
フィルタ・ベースのポリシーは、ユーザ・ポリシー・エンジンおよびカーネル・ポリシー・エンジンを含むフレームワーク内に実装される。フレームワークはさらに、カーネル・レイヤおよびユーザ・レイヤを含む。カーネル・ポリシー・エンジン、カーネル・レイヤ、および1つまたは複数のコールアウトは、オペレーティング・システムのカーネル・モードで実行される。カーネル・レイヤは、アプリケーション・レイヤ、トランスポート・レイヤ、ネットワーク・レイヤ、およびリンク・レイヤを含み、ネットワーク・スタックを形成する。ユーザ・ポリシー・エンジンおよびユーザ・モード・レイヤは、オペレーティング・システムのユーザ・モードで、1つまたは複数のポリシー・プロバイダとともに実行される。ユーザ・レイヤの一例として、セキュリティ・ポリシーを識別するために使用されるキーイング・モジュール・レイヤ(keying module layer)がある。それとは別に、本発明の方法およびフレームワークは、単一のオペレーティング・システム・モード内で、またはオペレーティング・システムの外部で実行される1つまたは複数のプログラム・モジュールあるいはアプリケーション内で、実行される。
ユーザ・レイヤおよびカーネル・レイヤはそれぞれ、前のレイヤまたはシステム・プロセスからパケットおよび対応するパケット・コンテキスト・データを受け取る要求レイヤを形成する。要求レイヤは、アプリケーション・プログラミング・インターフェース(API)を介してカーネル・ポリシー・エンジンまたはユーザ・ポリシー・エンジンに要求を送信する。この要求は、要求レイヤによって受信されたパケット、パケット・コンテキスト、および要求レイヤに関連付けられている一組のレイヤ・パラメータなどの情報、を含む。ポリシー・エンジンは、要求を処理し、アクションおよびポリシー・コンテキストを返す。その後、このレイヤでは、アクションおよびポリシー・コンテキストに従ってネットワーク・ポリシーを実装する。
複数のネットワーク・ポリシーは、一組のインストール済みのフィルタにより定義される。一組のインストール済みのフィルタは、それぞれ、一組のフィルタ条件、1つのアクション、およびポリシー・コンテキストを含む。アクションは、permit(許可)またはblock(遮断)などのファイヤウォール・ポリシーを返すために使用される。ポリシー・コンテキストは、セキュリティまたはQOSポリシーなどの他のポリシーを含む。カーネルまたはユーザ・ポリシー・エンジンは、1つまたは複数のマッチするフィルタを識別することにより、要求レイヤから送信された要求を処理する。マッチするフィルタは、レイヤ・パラメータおよびパケット・コンテキストにマッチするフィルタ条件を備える。
ポリシー・プロバイダが使用され、揮発性または不揮発性メモリなどの任意の適当なソースから、またはグラフィカル・ユーザ・インターフェースを通じて、ネットワーク・ポリシーを作成し、ポリシーを取り出す。ポリシーは、一組のフィルタ条件、アクション、およびポリシー・コンテキストを含む、新しいフィルタを作成するための情報源である。ユーザ・ポリシー・エンジンは、新しいフィルタをユーザ・ポリシー・エンジンまたはカーネル・ポリシー・エンジン内の一組のインストール済みフィルタに追加する。
同様の参照番号は同様の要素を指している図面を参照すると、適切なコンピューティング環境に実装されているものとして、本発明が説明されている。必ずそうしなければならないというわけではないが、パーソナル・コンピュータによって実行されるプログラム・モジュールなどのコンピュータ実行可能命令の一般的状況において本発明を説明する。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。また、本発明は、通信ネットワークを通じてリンクされているリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラム・モジュールは、ローカルおよびリモートのメモリ記憶デバイスに置くことができる。
図1は、本発明を実施するのに適しているコンピューティング・システム環境100の一実施例の図である。コンピューティング・システム環境100は、適当なコンピューティング環境の一例にすぎず、本発明の用途または機能性の範囲に関する制限を示唆する意図はない。コンピューティング環境100は、オペレーティング環境例100に示されている1つのコンポーネントまたはその組合せに関係する依存関係または要求条件がコンピューティング環境100にあるものと解釈すべきでない。
本発明は、他の数多くの汎用または専用コンピューティング・システム環境または構成で動作する。本発明とともに使用するのに適していると思われるよく知られているコンピューティング・システム、環境、および/または構成の例として、パーソナル・コンピュータ、サーバ・コンピュータ、携帯型またはラップトップ・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータ、上記システムまたはデバイスを含む分散コンピューティング環境などがあるが、これらに限定されるものではない。
本発明は、コンピュータによって実行される、プログラム・モジュールなどのコンピュータ実行可能命令の一般的状況において説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。また、本発明は、通信ネットワークを通じてリンクされているリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラム・モジュールをメモリ記憶デバイスを含むローカルとリモートの両方のコンピュータ記憶媒体内に配置することができる。
図1を参照すると、本発明を実装するシステム例は、コンピュータ110の形態をとる汎用コンピューティング・デバイスを備える。コンピュータ110が備えるコンポーネントとしては、処理ユニット120、システム・メモリ130、およびシステム・メモリを備えるさまざまなシステム・コンポーネントを処理ユニット120に結合するシステム・バス121などがあるが、これらに限定されるものではない。システム・バス121は、メモリバスまたはメモリ・コントローラ、周辺機器バス、および各種バス・アーキテクチャを使用するローカル・バスを含む数種類のバス構造のどれでもよい。例えば、このようなアーキテクチャとしては、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Associate(VESA)ローカル・バス、およびMezzanineバスとも呼ばれるPeripheral Component Interconnect(PCI)バスがあるが、これらに限定されるものではない。
コンピュータ110は通常、さまざまなコンピュータ可読媒体を含む。コンピュータ可読可能媒体は、コンピュータ110によってアクセスできる媒体であればどのような媒体でも使用でき、揮発性および不揮発性媒体、取り外し可能および取り外し不可能媒体を含む。例えば、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造体、プログラム・モジュール、またはその他のデータなどの情報を格納する方法または技術で実装される揮発性および不揮発性、取り外し可能および取り外し不可能媒体を含むが、これらに限定されるものではない。コンピュータ記憶媒体としては、RAM、ROM、EEPROM、フラッシュメモリまたはその他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶デバイス、または目的の情報を格納するために使用することができ、コンピュータ110によりアクセスできるその他の媒体があるが、これらに限定されるものではない。通信媒体は、通常、コンピュータ可読命令、データ構造体、プログラム・モジュール、または搬送波またはその他のトランスポート・メカニズムなどの変調データ信号によるその他のデータを実現し、さらに情報配信媒体を含む。「変調データ信号」という用語は、信号内の情報を符号化する方法によりその特性のうち1つまたは複数が設定または変更された信号を意味する。例えば、通信媒体としては、有線ネットワークまたは直接配線接続などの有線媒体、および音響、RF、赤外線、およびその他の無線媒体などの無線媒体があるが、これらに限定されるものではない。上記のいずれの組合せもコンピュータ可読媒体の範囲に収まらなければならない。
システム・メモリ130は、読み取り専用メモリ(ROM)131およびランダム・アクセス・メモリ(RAM)132などの揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時などにコンピュータ110内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム133(BIOS)は通常、ROM 131内に格納される。通常、RAM 132には、処理ユニット120に直接アクセス可能な、かつ/または処理ユニット120により現在操作されているデータおよび/またはプログラム・モジュールを格納する。例えば、図1は、オペレーティング・システム134、アプリケーション・プログラム135、その他のプログラム・モジュール136、およびプログラム・データ137を示しているが、これらに限定されるものではない。
コンピュータ110はさらに、その他の取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータ記憶媒体を備えることもできる。あくまでも例として、図1は、取り外し不可能な不揮発性磁気媒体の読み出しまたは書き込みを行うハードディスク・ドライブ141、取り外し可能な不揮発性磁気ディスク152の読み出しまたは書き込みを行う磁気ディスク・ドライブ151、およびCD ROMまたはその他の光媒体などの取り外し可能な不揮発性光ディスク156の読み出しまたは書き込みを行う光ディスク・ドライブ155を示している。オペレーティング環境例で使用できる他の取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータ記憶媒体としては、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル多目的ディスク、デジタル・ビデオ・テープ、ソリッドステートRAM、ソリッドステートROMなどがあるが、これらに限定されるものではない。ハードディスク・ドライブ141は、通常、インターフェース140などの取り外し不可能なメモリ・インターフェースを介してシステム・バス121に接続され、磁気ディスク・ドライブ151および光ディスク・ドライブ155は、通常、インターフェース150などの取り外し可能なメモリ・インターフェースによりシステム・バス121に接続される。
図1に示されている上記のドライブおよび関連コンピュータ記憶媒体は、コンピュータ110用のコンピュータ可読命令、データ構造体、プログラム・モジュール、およびその他のデータを格納する機能を備える。例えば、図1では、ハードディスク・ドライブ141は、オペレーティング・システム144、アプリケーション・プログラム145、その他のプログラム・モジュール146、およびプログラム・データ147を格納するものとして示されている。これらのコンポーネントは、オペレーティング・システム134、アプリケーション・プログラム135、その他のプログラム・モジュール136、およびプログラム・データ137と同じである場合もあれば異なる場合もあることに注意されたい。オペレーティング・システム144、アプリケーション・プログラム145、その他のプログラム・モジュール146、およびプログラム・データ147に対しては、ここで、異なる番号を割り当てて、最低でも、それが異なるコピーであることを示している。ユーザは、キーボード162、およびマウス、トラック・ボール、またはタッチ・パッドと一般に呼ばれるポインティング・デバイス161などの入力デバイスを介してコンピュータ110にコマンドおよび情報を入力できる。他の入力デバイス(図に示されていない)としては、マイク、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらの入力デバイスやその他の入力デバイスは、システム・バスに結合されているユーザ入力インターフェース160を介して処理ユニット120に接続されることが多いが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)などの他のインターフェースおよびバス構造により接続することもできる。モニタ191またはその他の種類の表示デバイスも、ビデオ・インターフェース190などのインターフェースを介してシステム・バス121に接続される。モニタのほかに、コンピュータはさらにスピーカ197およびプリンタ196などの他の周辺出力デバイスも備えることができ、これらは出力周辺インターフェース195を介して接続することができる。
コンピュータ110は、リモート・コンピュータ180などの1つまたは複数のリモート・コンピュータへの論理接続を使用してネットワーク環境で動作することも可能である。リモート・コンピュータ180は、他のパーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア・デバイス、またはその他の共通ネットワーク・ノードでもよく、通常は、パーソナル・コンピュータ110に関係する上述の要素の多くまたはすべてを含むが、メモリ記憶デバイス181だけを図1に示してある。図1に示されている論理接続は、ローカル・エリア・ネットワーク(LAN)171とワイド・エリア・ネットワーク(WAN)173を含むが、他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業全体にわたるコンピュータ・ネットワーク、イントラネット、およびインターネットでは一般的なものである。
LANネットワーキング環境で使用する場合は、パーソナル・コンピュータ110はネットワーク・インターフェースまたはアダプタ170を介してLAN 171に接続される。WANネットワーキング環境で使用する場合、コンピュータ110は通常、モデム172またはインターネットなどのWAN 173上で通信を確立するための他の手段を備える。モデム172は、内蔵でも外付けでもよいが、ユーザ入力インターフェース160またはその他の適切なメカニズムを介してシステム・バス121に接続できる。ネットワーク環境では、パーソナル・コンピュータ110またはその一部に関して述べたプログラム・モジュールは、リモートメモリ記憶デバイスに格納できる。例えば、図1には、リモート・アプリケーション・プログラム185がメモリ・デバイス181に置かれているように示されているが、これらに限定されるものではない。図に示されているネットワーク接続は例であり、コンピュータ間に通信リンクを確立するための他の手段を使用できることは理解されるであろう。
以下の説明では、特に断りのない限り、1つまたは複数のコンピュータにより実行される活動(acts)および動作の記号的表現を参照しながら、本発明を説明する。したがって、そのような活動(acts)および動作(operation)は、ときにはコンピュータ実行と呼ばれることもあるが、構造化された形式でデータを表現する電気的信号についての、コンピュータの処理装置による、操作(manipulation)を含むことは理解されるであろう。この操作は、データを変換したり、あるいはデータをコンピュータのメモリ・システム内の複数のロケーションに保持したりして、当業者であればよく理解している方法で、コンピュータの動作を、再構成したり、さもなければ他の何らかの形で変更したりする。データが保持されているデータ構造は、データの形式により定められた特定の特性を備えるメモリの物理的な場所である。しかし、本発明は前記のコンテキストで説明されているが、制限する意図はなく、当業者にとっては以下で説明する各種の活動(acts)および動作(operation)がハードウェアで実装できることは周知のことであろう。
ネットワーク環境が、そこにおいて、本発明に従って複数のフィルタ・ベースのネットワーク・ポリシーを実装し管理する方法が、図2を参照して説明することにする。本発明の方法は任意のネットワーク構成に結合されている任意のネットワーク・デバイスに実装されるので、ネットワークは本質的に例である。ネットワーク環境には、プライベート・ネットワーク200およびパブリック・ネットワーク202が含まれる。プライベート・ネットワーク200およびパブリック・ネットワーク202は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、イントラネット、インターネット、またはそれらの任意の組合せなど適当な種類のものである。
ネットワーク環境は、複数のネットワーク・デバイス204、206、208、210、および212を備える。ネットワーク・デバイス204、206は、プライベート・ネットワーク200に結合される。ネットワーク・デバイス210、212は、パブリック・ネットワーク202に結合される。ネットワーク・デバイス208は、プライベート・ネットワーク200およびパブリック・ネットワーク202の両方に結合され、それらの間のインターフェースとなる。ネットワーク・デバイスは、Ethernet(登録商標)、1394、または802.11(b)などの適当な技術を使用するパブリック・ネットワークおよびプライベート・ネットワークに結合される。ネットワーク・デバイスは、さらに、パーソナル・コンピュータ、サーバ、携帯型デバイス、プリンタ、スイッチ、ルータ、ブリッジ、リピータなどの適当なコンピューティング・デバイスとして実装される。
ネットワーク・デバイス208は、フィルタ管理モジュール214および1つまたは複数のフィルタ216を備える。管理モジュール214は、本発明に従って実装される、1つのプログラム・モジュールまたは一組のプログラム・モジュールである。管理モジュール214は、プライベート・ネットワーク200に結合されているネットワーク・デバイス204、206、208とパブリック・ネットワーク202に結合されているネットワーク・デバイス210、212との間でやり取りされるネットワーク・パケットを検査する。本発明の一実施形態では、管理モジュール214はさらに、プライベート・ネットワーク200内のネットワーク・デバイスから送信される、またそのネットワーク・デバイスを送信先とする、場所的に予定されたネットワーク・パケットも調べる。
管理モジュール214は、プライベート・ネットワーク200とパブリック・ネットワーク202との間でやり取りされるネットワーク・トラフィックを制御する。それとは別に、管理モジュール214は、ネットワーク・デバイス210で例示されているような単一ネットワーク・デバイス内に実装し、そのネットワーク・トラフィックを制御する。管理モジュールは、さらに、中央集中管理されている一組のホストおよび/またはエッジ・ネットワーク・デバイスとして実装することもできる。
フィルタ216は、管理モジュール214の一部として実装される。それとは別に、フィルタ216は、管理モジュール214によりアクセス可能な別のデータ構造体の一部として実装される。各フィルタ216は、一組のフィルタ条件、1つのアクション、およびポリシー・コンテキストを含む。フィルタ条件は、ネットワーク・ポリシーが適用されるデータを識別するために使用され、インターフェース番号、ハードウェア・アドレス、ネットワーク・アドレス、プロトコル・タイプ、ポート番号、およびペイロード・データなどの情報を含む。アクションは、ファイヤウォール・ポリシーを実装するために使用され、管理モジュールを実装するネットワーク・デバイスで、フィルタ条件にマッチするパケットを処理する方法を指示する。通常のアクションとしては、パケットがネットワークのトラバースを続けることを許すpermitと、パケットを削除することによりそれ以上ネットワークのトラバースが行われないように禁止するblockとがある。そのポリシー・コンテキストを使用して、セキュリティおよびQOSポリシーなどの他のネットワーク・ポリシーを識別する情報を格納するが、これらのポリシーは、フィルタ条件にマッチするパケットに、同様に適用される。
本明細書で使用しているように、ネットワーク・パケット、または単にパケットという用語は、データを指している。データは、IP、TCP、HTTPなどのネットワーク・プロトコルによってフォーマットされたり、または基本データ・ストリームを含んだりすることができる。管理モジュールでは、本明細書でパケット・パラメータと呼ぶパケット情報をフィルタ条件と比較することにより、1つまたは複数のマッチするフィルタを識別する。フィルタ条件がパケット・パラメータにマッチする場合にマッチするフィルタが得られる。パケット・パラメータには、パケットから導出された情報が含まれ、またパケット・コンテキスト情報およびレイヤ・パラメータが含まれる。管理モジュールがマッチするフィルタを識別すると、フィルタ条件に関連付けられている1つまたは複数のアクションおよび/またはポリシー・コンテキストが実行される。
図3は、管理モジュール214のアーキテクチャの例を示している。管理モジュール214のアーキテクチャにより、カーネル・レイヤとユーザ・レイヤの両方でパケットにフィルタを適用することができる。このアーキテクチャは、フィルタの追加および削除、さらにフィルタの衝突の識別および解消を行うための中央管理機能を備える。管理モジュール214は、カーネルまたはユーザ・モード・レイヤの追加および削除を必要に応じて行い、コールアウト・モジュールを介して専用機能を内蔵するように拡張されるという点で拡張性がある。本発明は、特に、ファイヤウォール、サービスの品質(QOS)、Internet Protocol Security (IPSec) suiteだけでなく、他の暗号化、認証、および鍵管理セキュリティ・プロトコルなどの複数のネットワーク・ポリシーとともに使用されるフィルタを実装し管理するのに好適である。
管理モジュール214は、ユーザ・モード・プロセス250およびカーネル・モード・プロセス252を含む。ユーザ・モード・プロセス250およびカーネル・モード・プロセス252は、ネットワーク・デバイス内のオペレーティング・システムの一部として実行される。当業者であれば、オペレーティング・システムのユーザ・モード・プロセス250およびカーネル・モード・プロセス252は、簡略化のため図に示されていない追加コンポーネントを含むことを理解するであろう。それとは別に、管理モジュール214は、1つまたは複数のプログラム・モジュールまたはアプリケーション・プログラムとして、オペレーティング・システムの外部で全部または一部実行される。
カーネル・モード・プロセス252は、カーネル・レイヤ254、カーネル・ポリシー・エンジン256、およびオプションのコールアウト258を含む。カーネル・モード・プロセス252は、ネットワーク・パケットにマッチするフィルタを識別し、知られているプロトコルに従ってパケットを処理し、マッチするフィルタで示されているようにパケットに対し他のアクションを実行することにより、定められているネットワーク・ポリシーを実装する。
本発明の一実施形態では、カーネル・レイヤ254は、ネットワーク・スタックを形成する。ネットワーク・スタックは、データ・ストリーム・レイヤ268、トランスポート・レイヤ270、ネットワーク・レイヤ272、およびリンク・レイヤ274を含む複数のレイヤからなる。管理モジュールは拡張性があり、必要に応じて、追加レイヤの動的追加および削除が行われる。追加レイヤの一例として、Server Message Block(SMB)プロトコルに従って実装されるファイル・アクセス・レイヤ276がある。カーネル・モード・プロセス252は、カーネル・レイヤ254をトラバースするパケットに適用するファイヤウォール・ポリシーを実装するように構成するのが好ましい。
カーネル・ポリシー・エンジン256は、レイヤAPI280、一組のインストールされているフィルタ282、およびコールアウトAPI284を含む。カーネル・ポリシー・エンジン256は、(1)ネットワーク・ポリシー、例えば、セキュリティ、QOS、ファイヤウォール・ポリシーなどを定義する一組のインストールされているフィルタ282を維持すること、(2)カーネル・レイヤ254から要求を受け取ること、(3)その要求に基づいて1つまたは複数のマッチするフィルタを識別すること、および(4)レイヤに対して、そこで定義されているマッチするフィルタおよびネットワーク・ポリシーに基づき、パケットに採用されるアクションを指令すること、を含む本発明の方法によるさまざまな機能を実行する。
ユーザ・ポリシー・エンジン260は、フィルタ・モジュール294を含む。フィルタ・モジュール294は、ユーザ・モード250でのカーネル・ポリシー・エンジン256のインスタンスである。ユーザ・ポリシー・エンジン260内のフィルタ・モジュール294のインスタンスにより、ユーザ・ポリシー・エンジン260はカーネル・ポリシー・エンジン256のサービスを1つまたは複数のユーザ・レイヤ292に対して複製することができる。ユーザ・レイヤ292は、カーネル・モード・レイヤを作成するのと同じ方法で追加される。フィルタ・モジュール294はカーネル・ポリシー・エンジン256のユーザ・モードのインスタンスであるため、カーネル・ポリシー・エンジンについて本明細書で説明している機能はフィルタ・モジュール294にも適用されることが理解されるであろう。例えば、追加ユーザ・モード・レイヤをシステム・アーキテクチャに追加したり、削除したりし、コールアウトを作成してユーザ・モード・レイヤに機能を付加することが可能である。ネットワーク・ポリシーを定義するフィルタ278は、フィルタ・モジュール294に追加され、ユーザ・モード・レイヤ292は、ユーザ・ポリシー・エンジン260に要求を送信することにより、指定されたパラメータにマッチするパケットまたはデータに対するポリシーを識別することができる。ユーザ・レイヤ292はオペレーティング・システムのユーザ・モードで実行されているように示されているが、ユーザ・レイヤは、他のシステム・プロセスに分散させることもできる。
一組のインストールされているフィルタ278、282を使用して、1つまたは複数のネットワーク・ポリシーを実装する。各フィルタは、一組のフィルタ条件、1つのアクション、およびポリシー・コンテキストを含む。図2を参照して説明しているように、フィルタ条件により、アクションおよびポリシー・コンテキストで定義されているようなフィルタ・ポリシーの対象となるパケットが識別される。一組のインストールされているフィルタ282で規定されているアクションには、permitとblockが含まれる。ポリシー・コンテキストは、セキュリティおよびQOSなどのポリシーに対する知られているポリシー・パラメータを格納するために使用される適当なデータ構造体である。フィルタの例示的な形態については、図4を参照して説明する。
レイヤAPI280は、カーネル・レイヤとカーネル・ポリシー・エンジンとの間のインターフェースを提供する。要求レイヤは、レイヤAPI280を通じて、パケットに適用されるネットワーク・ポリシーを識別する要求をカーネル・ポリシー・エンジンに送る。
コールアウト258を使用して、親コントロール(parental controls)、侵入検出(intrusion detection)などの付加機能を実装する。コールアウトは、カーネル・ポリシー・エンジン256が、関連付けられたアクションとして、コールアウト・モジュールの1つへのコールアウトを含む、パケットにマッチする、フィルタを識別する場合に実行される。レイヤのように、追加コールアウトは必要に応じて付加されるため、拡張性の高いアーキテクチャが実現される。コールアウトAPI284の具体的実装については、図6を参照して説明する。
ユーザ・モード・プロセス250は、ユーザ・ポリシー・エンジン260、および「PP1」、「PP2」、および「PP3」として識別されている1つまたは複数のポリシー262を含む。ポリシー・プロバイダ262は、ネットワーク・ポリシー、つまり、インストールされたフィルタ278、282を管理モジュール214に追加するプロセスである。任意のプロセスを使って、この作業を実行する。一例として、レガシIPSecポリシー・サービス(LIPS)をあげる。レガシIPSecポリシー・サービスは、カプセル化セキュリティ・プロトコル(ESP)および認証ヘッダ・プロトコル(AH)などのインターネット・プロトコル・セキュリティ(IPSec)を使用することが想定されているネットワーク・トラフィックを定義するフィルタを追加する。具体例として、レガシIPSecポリシー・サービスでは、非送信請求の到着パケット(unsolicited inbound packet)はESPプロトコルに従って暗号化されなければならないことを指示するファイヤウォール・ポリシーを追加する。ポリシーはさらに、クリア・テキスト(平文)の非送信請求の到着パケット、つまり、非暗号化パケットをブロックするよう規定する。ポリシー・プロバイダ262は、揮発性または不揮発性メモリ内のデータなどの適当なソースから、または管理者あるいはシステム・ユーザが直接ポリシーを入力するためのグラフィカル・ユーザ・インターフェース(GUI)から、ポリシーを取得する。ユーザ・ポリシー・エンジン260は、そのポリシーを新しいフィルタに変換し、つまり、ポリシーをフィルタ条件および関連するアクションに関して定義し、その新しいフィルタを一組のインストールされているフィルタ278、282に追加する。
管理モジュール214は、さらに、ユーザ・ポリシー・エンジン260とカーネル・ポリシー・エンジン256との間のインターフェースを形成するフィルタ・エンジンAPI266を含む。エンジンAPI266は、ユーザ・ポリシー・エンジン260が、新しいフィルタを一組のインストールされているフィルタ282に追加するための、および診断目的のために選択された基準にマッチするインストールされているフィルタ282を調べるための、メカニズムを備える。管理API290は、ポリシー・プロバイダ262からアクセス可能であり、またアーキテクチャにフィルタを追加したり、アーキテクチャからフィルタを削除したりするメカニズムも備える。
各ユーザおよびカーネル・レイヤは、前のレイヤ、モジュール、またはシステム・プロセスからパケットを受け取ることができる。各ユーザまたはカーネル・レイヤはさらに、パケット・コンテキストを保持し、パケット・コンテキストを次のレイヤまたはシステム・プロセスに渡し、分類要求(classification request)をカーネルまたはユーザ・ポリシー・エンジンに発行し、1つまたは複数のネットワーク・ポリシーに従ってパケットに対しアクションを実行する。
パケット・コンテキストは、パケットに付随するデータ構造体である。各レイヤは、コンテキスト・データ構造体に、設計上レイヤが処理するようになっている、あるいはパケットから導出することができる、一組のパラメータを加えるという形でコンテキストを保持する。パケット・コンテキストに使用されるデータ構造の例については、図5を参照して説明する。
分類要求は、パケットにマッチするフィルタを識別し、アクション、例えば、permitまたはblock、および/または関連するポリシー・コンテキストをレイヤに返すことを要求するレイヤによる呼び出し(call)である。分類要求を発行するレイヤは、本明細書では、要求レイヤと呼ばれる。各レイヤはさらに、カーネルまたはユーザ・ポリシー・エンジンにより返されるパケットに対しアクションを実行する。
また、管理モジュール214は、キーイング・モジュール・レイヤ296を含む。キーイング・モジュール・レイヤは、IPSecなどのセキュリティ・プロトコルの一部として実装されるインターネット鍵交換(IKE)プロトコルなどのキーイング・プロトコルとともに使用されるネットワーク・ポリシーの検索に使用される。キーイング・モジュールAPI288は、ユーザ・ポリシー・エンジン260とキーイング・モジュール・レイヤとの間のインターフェースを提供する。フィルタをフィルタ・モジュール294に追加することができるが、そのために、与えられた一組のセキュリティ・パラメータの対象となるパケットを定義するユーザ・ポリシー・エンジン260を使用する。キーイング・モジュールAPIは、適用すべきポリシーを識別するポリシー・コンテキストを含むマッチするインストールされているフィルタを識別するため、他のプロセスがキーイング・モジュール・レイヤのサービスを呼び出すためのメカニズムを備えている。
次に、図4を参照して、フィルタ・モジュール294またはカーネル・ポリシー・プロバイダ256にインストールすることができる、一組のインストールされているフィルタ282を説明する。各フィルタ310は、フィルタID312、重み314、1つまたは複数のアクション316、ポリシー・コンテキスト317、および一組のフィルタ条件318を含む複数のフィールドが設定されている。フィルタID312により、フィルタを一意に識別できる。
重みフィールド314は、フィルタ310の優先度を識別する値が格納される。重みフィールド314の中の値が高いほど、フィルタの優先度は高くなる。フィルタ優先度により、カーネル・ポリシー・エンジン256またはユーザ・ポリシー・エンジンによりマッチするフィルタをパケットに割り当てる順序が決定される。あるいは、フィルタ310の順序を手動で決定し、重みフィールド314を除外することを選択することもできる。
一組のフィルタ条件318により、パケットがフィルタ310にマッチするかどうかが決定される。各フィルタ条件318には、データ型(type)320、データ322、およびレイヤId:フィールドId 324が含まれる。フィルタ条件318の個数は、動的に構成することが可能であり、フィルタにフィルタ条件318をいくつでも入れられ、フィルタ条件318の追加または削除を必要に応じて行うことができる。
データ型320により、対応するデータ322に含まれる変数の長さと個数が定義される。このアーキテクチャでは、バイト、短整数(short)、長整数(long)、8バイト、文字列、インターネット・プロトコル・バージョン4(IPv4)アドレス、インターネット・プロトコル・バージョン6(IPv6)アドレス、IPv4アドレスとマスク、IPv6アドレスとマスク、およびアドレス範囲などの、所定の知られている変数の型をサポートする。
データ・フィールド322は、データ型と一致するデータが格納される。例えば、IPv4アドレス型であれば、データ・フィールド322の受け付けられる値は、ドット付き10進法で表記して00.00.00.00〜255.255.255.255の範囲の32ビットの数である。いくつかの例では、データ型320は、データ・フィールド322内に複数の値を入れられる。アドレス範囲、IPv4アドレスとマスク、およびIPv6アドレスとマスクのデータ型では、IPアドレスの開始および終了範囲を定義する2つのIPアドレス値を使用できる。自由度を最大限まで高めるために、このアーキテクチャではユーザ定義データ型も使用できる。あるいは、追加データ型を手動で、システム・アーキテクチャに加えられる。
レイヤId:フィールドIdフィールド332は、それぞれ、発信元レイヤとその発信元レイヤからのパラメータを識別する場合に使用される。発信元レイヤおよびその発信元レイヤからのパラメータは、パケット・パラメータ、つまり、データ322と対照されるレイヤ・パラメータおよびパケット・コンテキストを定義される。発信元レイヤは、特定のカーネルまたはユーザ・レイヤを識別する。発信元レイヤからのパラメータにより、発信元レイヤに関連付けられている特定のパラメータが識別される。具体例は、フィルタ条件326により例示されている。この型はIPv4なので、データ322は32ビットIPアドレスであることを示している。レイヤIdは、32ビット数がIP、つまり、ネットワーク、レイヤ・パラメータであることを表す「IP」である。フィールドIdは、例では、IPレイヤ・パラメータ、具体的には送信元IPアドレスを表す、「Src IP Addr」である。データ・フィールドに入っているIPアドレスは、その送信元IPアドレスを持つパケットがフィルタ条件と合致し、したがってフィルタにマッチすることを示す「123.3.2.1」である。
フィルタ310で指定されるアクション316は、permit、block、callout、またはnullである。フィルタ310内のアクション316がpermitまたはblockであり、パケットがフィルタ310にマッチした場合、要求レイヤにpermitまたはblockアクションが返される。permitおよびblockアクションは、通常、ファイヤウォール・ポリシーを実装する場合に使用される。アクション316がコールアウトの場合、ポリシー・エンジンは、マッチするフィルタの完全パケット、レイヤ・パラメータ、コンテキスト、および識別を含む自分の分類要求を指定されたコールアウト・モジュール258に発行する。コールアウト・モジュール258は、パケットに対してプログラムされている機能、例えば、侵入検出を実行する。コールアウトは、アクション(permit、blockのいずれか)をポリシー・エンジンに返し、さらにポリシー・エンジンはそのアクションを要求レイヤへと中継する。また、コールアウトは、ポリシー・エンジン256を介して要求レイヤに同様に返されたパケット・コンテキストを保持することができる。
カーネル・ポリシー・エンジンまたはユーザ・ポリシー・エンジンはさらに、ポリシー・コンテキスト317を返す。ポリシー・コンテキスト317は、セキュリティ・ポリシーまたはQOSポリシーなどのファイヤウォール・ポリシー以外のポリシーを格納する場合に使用される。ポリシー・コンテキストは、適当な任意のデータ構造体である。例えば、ポリシー・コンテキストは、ポリシー・コンテキスト317を加えたプロセスにより解釈される64ビット数である。フィルタ内のポリシー・コンテキストは、実際のポリシーまたは、実際のポリシーにマッピングするためにシステムによって使用される値を含むことができる。
図5は、カーネルおよびユーザ・レイヤ、およびコールアウト・モジュール258により保持されるパケット・コンテキストに使用されるデータ構造体330の一例を示している。各エントリには、レイヤId:フィールドId332および対応する値334が含まれる。レイヤId:フィールドId332は、フィルタ310(図4)内のフィルタ条件レイヤの一部として与えられたId:フィールドId324と同じ意味を持つ。つまり、レイヤId:フィールドId 322は、発信元レイヤおよび発信元レイヤからのレイヤ・パラメータを、値フィールド334内に格納されているデータとして識別する。値フィールド334は、特定のレイヤ・パラメータを格納する。
具体例として、エントリ336は、「NDIS:Src.MAC Addr」のレイヤId:フィールドId332を含む。「NDIS」は、リンク・レイヤ274(図3)のネットワーク・ドライバ・インターフェース規約による実装を表す。「Src Mac addr.」は送信元MACアドレスを表す。したがって、レイヤ:フィールドID332は、値フィールド334内のデータがNDIS(リンク)レイヤによって処理された送信元MACアドレスであることを示す。値フィールド334は、実際の送信元MACアドレスを含み、この例では16進数表記で「00.08.74.4F.22.E5」である。
第2の例では、エントリ338は「NDIS:IF No」のレイヤId:フィールドId332を持つ。これは、再び、レイヤをNDISとして識別するが、この場合は、パラメータを、インターフェース番号を特定のNDISパラメータとして表す「IF No」と識別する。値フィールド334は、実際のインターフェース番号を含み、この場合には2である。
第3の例では、エントリ340は「IP:Dst IP Addr」のレイヤId:フィールドId332を持つ。「IP」は、IPプロトコルを使用するネットワーク・レイヤを表し、「Dst IP Addr」は、送信先IPアドレスをIPレイヤ・パラメータとして表す。値フィールド334は、「123.3.2.1」の実際の送信先IPアドレスを含む。
基礎のファイヤウォール・アーキテクチャについて説明したので、システムの機能インターフェースと本明細書で説明している基本のファイヤウォール・アーキテクチャを使用して実行される方法例に注目する。機能インターフェースは、複数のアプリケーション・プログラミング・インターフェース(API)として実装される。APIは、図6および図7に例示されているように、レイヤAPI280、コールアウトAPI284、フィルタ・エンジンAPI266、およびキーイング・モジュールAPI288を含む。
レイヤAPI280は、カーネル・レイヤとカーネル・ポリシー・エンジン256との間のデータ交換を容易にする。拡大解釈すると、レイヤAPI280について説明する方法は、さらに、ユーザ・レイヤ292とフィルタ・モジュール294との間のデータ交換を簡素化し、以下に説明するキーイング・モジュールAPI288の一部として含まれる。図に示されているように、レイヤAPI280は、Classifyメソッド350、Add Layerメソッド352、およびDelete Layerメソッド354を備える。
Classifyメソッド350は、要求レイヤによって使用されて、レイヤ・パラメータ、要求レイヤによって受信されたとおりのパケット、およびパケット・コンテキストをカーネル・ポリシー・エンジン256またはフィルタ・モジュール288に送信する。カーネル・ポリシー・エンジン256またはフィルタ・モジュール288は、(1)要求レイヤからのレイヤ・パラメータおよび(2)パケット・コンテキスト・エントリ、をマッチするフィルタを識別するために要求レイヤに割り当てられている各フィルタ310内のフィルタ条件318と、比較する。以下は、Classifyメソッドの実装例である。以下のメソッドはデータ値を受信するかまたは返すものとして説明していることが理解されよう。知られているプログラミング手法によれば、これらのメソッドでは、実際のデータ値ではなく、データ値へのポインタを使用することができる。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
LayerIdでは、分類要求を発行するカーネルまたはユーザ・レイヤ、つまり要求レイヤを識別する。図3を参照すると、レイヤは、レイヤIdにより、データ・ストリーム・レイヤ268、トランスポート・レイヤ270、ネットワーク・レイヤ272、リンク・レイヤ274、またはキーイング・モジュール・レイヤなどのユーザ・レイヤとして識別される。他のレイヤは、システムに追加した場合に有効である。
pInFixedValuesは、要求レイヤによって処理されるレイヤ・パラメータのサブ・セットを含む。pInFixedValuesをパケット・コンテキスト・エントリと合わせて、フィルタ条件と比較し、パケットがフィルタにマッチするかどうかを決定する。カーネル・レイヤのpInFixedValuesに含まれるデフォルト(初期設定)のレイヤ・パラメータが以下の表Aにまとめられている。ユーザ・レイヤにはデフォルトのパラメータはない。アーキテクチャの利点はレイヤ側でそのレイヤに可能などのような値でも使用できるという点であるので、以下の値は単なる例示であることに留意されたい。
Figure 2004364315
pInContextは、要求レイヤが受信するコンテキスト・データ構造体330(図5)を含む。パケット・コンテキストをレイヤ・パラメータとともに使用して、マッチするパケットを識別する。
pPacketは、要求レイヤによって受信されるパケット全体を含む。
pActionTypeは、要求レイヤに返されるアクション316を含む。返されるアクション316は、マッチするフィルタにより識別されるpermit、block、continue、またはnullであるか、またはマッチするフィルタにより実行されるコールアウト・モジュールである。すでに説明したように、アクション316を使用して、ネットワーク・ファイヤウォール・ポリシーを実装し、識別する。
pOutContextは、ポリシー・コンテキスト・データを含む。すでに述べたように、ポリシー・コンテキストは、IPSec、QOS、および他の非ファイヤウォール・フィルタ・ベースのポリシーに関連付けられているネットワーク・ポリシーを実装するために使用される。
Add Layer 352およびDelete Layer 354のメソッドは、それぞれ、管理モジュール214にユーザまたはカーネル・レイヤを追加したり削除する場合に使用される。以下は、Add Layer 352メソッドの例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
pLayerIdは、追加されるレイヤ、つまり、Add Layerメソッドを実行するレイヤに返される一意的なレイヤ識別値である。
本発明の一実施形態では、オペレーティング・システムが開始したときに、いくつかのレイヤがアーキテクチャに含まれている。このようなレイヤの例として、リンク・レイヤ、ネットワーク・レイヤ、およびトランスポート・レイヤがある。したがって、AddExtensionLayerメソッドはフレームワークにこれらのレイヤを含める必要はない。ポリシー・エンジンについて、どのフィールドがレイヤに対し有効なフィルタ条件であるか、フィルタの重みをどのように計算するのか、などを識別するLayerSetPropertiesメソッドが用意されている。以下は、LayerSetPropertiesメソッドの例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
enginehandleはポリシー・エンジンへのハンドルである。
layerIdによりレイヤを識別する。
layerPropertyは、レイヤ・フィールドおよびフィルタ重みの計算を含むレイヤプロパティを識別する。
以下は、Delete Layer 354メソッドの例である。
Figure 2004364315
LayerIdは、削除対象のレイヤ、つまり、Delete Layerメソッドを実行するレイヤを識別する。
コールアウトAPI284を使用すると、カーネルまたはユーザ・ポリシー・エンジンとコールアウトとの間のデータ交換がやりやすくなる。レイヤAPI280のように、コールアウトAPI284にはClassifyメソッドが用意されている。コールアウトAPI284のClassifyメソッド356は、マッチするフィルタ・データも含むことを除き、レイヤAPI280のClassifyメソッド402に類似している。以下は、コールアウトを実行するために使用するClassifyメソッド356の例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
fixedValuesは、要求レイヤから送信されたレイヤ・パラメータを含む。このfixedValuesは、レイヤAPI280のClassifyメソッド350の一部として送信されたpInFixedValuesデータで要求レイヤにより供給されるデータと同じである。
wfpContextは、コンテキスト・データ構造体330(図5)を含む。このデータは、レイヤAPI280のClassifyメソッド350の一部として送信されたpInContextで要求レイヤにより供給されるのと同じである。
packetは、要求レイヤにより受信されるパケット全体を含む。このデータは、レイヤAPI280のClassifyメソッド350の一部として送信されたpPacketで要求レイヤにより供給されるのと同じである。
matchedFilterは、コールアウトを要求するフィルタを識別する。通常、マッチするフィルタは、コールアウトAPI284のClassifyメソッド350を開始するマッチするフィルタ310のフィルタId312により識別される。
actionは、コールアウト258からカーネルまたはユーザ・ポリシー・エンジンに返されるアクションを含む。actionがpermitまたはblockであれば、レイヤAPI280により返されるactionとして要求レイヤに返される。コールアウトは、マッチするフィルタをパケットに適用する作業を続行させることをポリシー・エンジンに指令するContinueアクションを返すこともできる。
OutContextは、セキュリティまたはQOSポリシー・データなどのポリシー・コンテキスト・データを格納する。
コールアウトAPI408は、Notifyメソッド358も含む。Notifyメソッド358は、コールアウト・モジュール258をアクション316の1つとして識別する一組のインストールされているフィルタ282にフィルタ310が追加される場合にそのことをコールアウトに通知するために使用する。Notifyは、適時コールアウトを提供して、ポリシー・エンジン256によって実行される際にコールアウト258により使用されるバッファの割り当てまたは解放などの必要なアクションをとる。以下は、Notifyメソッド358の例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
notifyは、フィルタの追加または削除を示す数値を格納する。例えば、値1はフィルタの追加、値2はフィルタの削除を指し示す。
filterは、追加または削除対象のフィルタを一意的な値で識別する。これは、フィルタ310の一部として含まれるフィルタId312を用意することで実現できる。
コールアウトAPIはさらに、Callout Registrationメソッド360およびCallout Deregistrationメソッド362も含み、それぞれ、コールアウト・モジュールの追加および削除を行う。Callout Registrationメソッド360の例を以下に示す。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
calloutIdは、登録コールアウト・モジュールの一意的な識別を行う。
calloutは、ドライバ・サービス名、デバイス名、およびコールアウトのcalssifyおよびnotify関数へのポインタなどのコールアウト固有の情報を与える。
sdは、コールアウトのセキュリティ・ディスクリプタを与える。このセキュリティ・ディスクリプタは、どのプロセスでコールアウトの読み取りおよび削除を行えるかを識別する。
Callout Deregistrationメソッド362の例を以下に示す。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
calloutIdは、削除されるべきコールアウトの一意的Idである。
フィルタ・エンジンAPI266は、ユーザ・ポリシー・エンジン260とカーネル・ポリシー・エンジン256との間のデータ交換を容易にする。図に示されているように、フィルタ・エンジンAPI266は、Add Filterメソッド364、Delete Filterメソッド366、およびEnum Layerメソッド368を備える。
Add Filter364およびDelete Filter366メソッドは、それぞれ、一組のインストールされているフィルタ282に新しいフィルタを追加し、一組のインストールされているフィルタ282から既存のフィルタを削除する場合に使用する。以下は、Add Filter364メソッドの例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
LayerIdは、フィルタに割り当てられているレイヤを識別する。
pFilterは、一組のインストールされているフィルタ282に追加されるフィルタ310である。
以下は、Delete Filterメソッド366の例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
LayerIdは、フィルタの割り当てられているレイヤを識別する。
pFilterは、一組のインストールされているフィルタから、削除されるフィルタである。
Enum Layerメソッド368は、一組の基準とマッチするすべてのフィルタを識別するユーザ・ポリシー・エンジン260のメカニズムを実装する。これにより、管理APIはフィルタのアービトレーションおよびコンフリクト解消のために、コンフリクトしているフィルタを識別することができる。以下は、Enum Layerメソッド368の例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
pEnumTemplateは、返すフィルタを定義するデータ構造体を格納する。例えば、返されるフィルタに対しフィルタ条件がマッチしていなければならないパラメータが格納される。
pMatchCountには、指定されたpEnumTemplateに基づいてマッチするフィルタ数を含む。
pEnumHanldeには、マッチしたフィルタ・エントリへの参照が格納される。
キーイング・モジュールAPI288は、ユーザ・モード・キーイング・モジュール・レイヤ296とユーザ・ポリシー・エンジン260との間のインターフェースを提供する。キーイング・モジュールAPI288は、IPSec SA Acquireメソッド370、Expire Notifyメソッド372、およびIPSec SA Acquire Completeメソッド374、Keying Module Registerメソッド376、Keying Module Deregisterメソッド378、IPSec Inbound Get SPIメソッド380、Add Inbound SAメソッド382、Add Outbound SAメソッド384、Inbound SA Expireメソッド386、およびKeying Module Initiateメソッド388を含む。キーイング・モジュールAPI288はさらに、レイヤAPIについてすでに説明したメソッドも含むことができる。
キーイング・モジュールAPIを使用することで、IPSecで定義されているような、開始するコンピュータやユーザまたはサービスによって、および応答するコンピュータやユーザまたはサービスによって使用される、公知のセキュリティ・プロトコルの使い勝手が向上する。IPSecは、AHおよびESPなどのプロトコルを含む。ESPプロトコルは、データの完全性、ソース認証、および機密保持を実現する暗号化メカニズムを使用する認証および暗号化プロトコルである。AHプロトコルは、パケット・ヘッダ内でハッシュ署名を使用してパケット・データの完全性および送信者の真正性を確認するための認証プロトコルである。
IKEプロトコルは、開始コンピュータおよび応答コンピュータがAHおよびESPプロトコルとともに使用されるセキュリティ設定のネゴシエーションをするための方法を実現する。ネゴシエートされたセキュリティ設定では、セキュリティ・アソシエーション(SA)と呼ばれるデータ構造体を形成する。SAでは、認証アルゴリズム、暗号化アルゴリズム、鍵、および鍵の存続期間など、IPパケットの内容を保護するためにESPまたはAHで使用するパラメータを定義する。ESPおよびAHはSAを必要とするため、例示する方法は、開始および応答コンピュータによってESPまたはAHプロトコルが使用される前にIKEネゴシエーションが使用される。それとは別に、SAを手動で作成することもできる。与えられたSAは、Security Parameter Index(SPI)と呼ばれる値によって識別される。
開始および応答コンピュータはそれぞれ、IPSecドライバおよび分類モジュールを備え、これらは、IPSecポリシーに基づき、開始コンピュータと応答コンピュータとの間で送信されるデータが暗号化または認証を必要とするかどうかを決定する。IPSecポリシーは、ネットワーク・デバイスでIPSecを使用する方法を定義する一組のフィルタであり、フィルタ・リスト、認証方法、およびその他の情報が含まれる。本発明の一実施形態では、IPSecポリシーは、カーネル・ポリシー・エンジンまたはフィルタ・モジュール294内の一組のインストールされているフィルタに含まれるフィルタにより定義される。パケットに適用されるポリシーは、マッチするフィルタを識別するClassifyメソッドを使用するキーイング・モジュール・レイヤを呼び出す(起動する)ことにより識別される。
IPSec SA Acquireメソッド370は、(クライアント・プロキシを介して)ユーザ・ポリシー・エンジン260により呼び出され、ドライバ・アクワイヤ取得または外部開始要求がキーイング・モジュール・レイヤに渡される。キーイング・モジュール・レイヤは、この呼び出しを返し、ネゴシエーションを非同期に実行する。キーイング・モジュール・レイヤがネゴシエーションを完了した後、キーイング・モジュール・レイヤはIPSec SA Acquire Completeメソッド374を呼び出して、ネゴシエーションが完了していることをユーザ・ポリシー・エンジンに通知する。以下は、IPSec SA Acquireメソッドの例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
ipsecContextは、追加しようとしているSAでacquireをリンクするハンドルである。
acquireは、IKEなどの知られているプロトコルによりSAをネゴシエーションための必要な情報を用意する。
inboundSAspiは、到着SAに使用されるSPIを含む。
Expire Notifyメソッド372を呼び出して、expire−notifyを、到着SAを追加したキーイング・モジュール・レイヤに渡す。以下は、Expire Notifyメソッドの例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
expireNotifyは、期限切れになろうとしているSAを識別する情報を格納する。例えば、出発SAの場合、SPIが供給される。
IPSec SA Acquire Completeメソッド374は、キーイング・モジュール・レイヤによって呼び出されて、ネゴシエーションが終了し、すべてのSAが追加された後、またはエラーに遭遇した後、ユーザ・ポリシー・エンジンのコンテキストを閉じる。このメソッドが実行された後、キーイング・モジュール・レイヤは他のAPIメソッドに対してipsecContextを再利用しない。以下は、IPSec SA Acquire Completeメソッドの例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
engineHandleはユーザ・ポリシー・エンジン260へのハンドルを与える。
ipsecContextはIPSec Acquireメソッドでユーザ・ポリシー・エンジンにより渡されるコンテキストである。
statusは、SAネゴシエーションのステータスおよびその他の詳細を指定する。このステータスは、FwpKeyingModuleInitiate0を介してacquireが外部で開始された場合に、ユーザ・ポリシー・エンジン260により返される。
Keying Module Registerメソッド376は、キーイング・モジュール・レイヤにより呼び出されて、ユーザ・ポリシー・エンジン260を登録し、その関数ポインタを渡す。以下は、Keying Module Registerメソッドの例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
engineHandleは、ユーザ・ファイヤウォール・エンジン260へのハンドルを与える。
keyingModuleIDは、キーイング・モジュール・レイヤの一意的なIDである。
keymodInfoには、プロセスIPSec SA AcquireおよびプロセスIPSec SA Expire関数へのポインタなどの、キーイング・モジュール・レイヤに関する登録情報が格納される。
Keying Module Deregisterメソッド378は、キーイング・モジュール・レイヤにより呼び出されて、ユーザ・ポリシー・エンジン260からキーイング・モジュールの登録を解除する。以下は、Keying Module Deregisterメソッドの例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
engineHandleはユーザ・ポリシー・エンジン260へのハンドルである。
keyingModuleIDは、キーイング・モジュール・レイヤの一意的なIDである。
IPSec Inbound Get SPIメソッド380は、キーイング・モジュール・レイヤにより呼び出されて、新しい到着SAのSPIを取得する。IPSec Inbound Get SPIメソッド380は、通常、キーイング・モジュール・レイヤが応答ネットワーク・デバイス内で実行される場合に使用される。以下は、IPSec Inbound Get SPIメソッドの例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
engineHandleはユーザ・ファイヤウォール・エンジン260へのハンドルである。
ipsecTrafficDescriptionは、到着の初期段階のSA(inbound larval SA)を作成するための5つのタプル(tuple:構造体)の記述である。この5つのタプルには、送信元および送信先IPアドレス、送信元および送信先ポート、およびトランスポート・レイヤのプロトコル・タイプが含まれる。
udpEncapInfoは、初期段階のSAを作成するためのUDPカプセル化データである。UDPカプセル化は、セキュリティ・プロトコルに従って書式化されているパケットを非暗号化UDPパケットに埋め込む公知の方法である。
inboundSpiは、到着SAのSPIである。
Add Inbound SAメソッド382は、キーイング・モジュール・レイヤにより呼び出されて、到着SAを追加する、つまり初期段階のSAを更新する。ユーザ・ポリシー・エンジン260はSAの中のSPIを使用して、この呼び出しを内部状態にマッピングし、ioctlでSAをIPSecドライバに送る。以下は、Add Inbound SAメソッドの例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
engineHandleはユーザ・ポリシー・エンジンへのハンドルである。
inboundSAは、到着SAを含む。
Add Outbound SAメソッド384は、キーイング・モジュール・レイヤにより呼び出されて、出発SAを追加する。ユーザ・ポリシー・エンジンでは、到着SPIパラメータを使用して、この呼び出しを内部状態にマッピングし、ioctlでSAをIPSecドライバに送る。以下は、Add Outbound SAメソッドの例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
engineHandleはユーザ・ファイヤウォール・エンジン260へのハンドルである。
inboundSpiは、出発SAのペアの相手である到着SAのSPIである。
outboundSAは、出発SAを含む。
Inbound SA Expireメソッド386は、キーイング・モジュール・レイヤにより呼び出されて、すでに追加されている到着SAの有効期限を満了させる。以下は、Inbound SA Expireメソッド386の例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
engineHandleはユーザ・ファイヤウォール・エンジン260へのハンドルである。
expireは、有効期限の切れるSAに対するデータを格納する。
Keying Module Initiateメソッド388は、RAS、Winsock APIなどの公知の外部アプリケーションにより呼び出され、アプリケーションがネットワーク・トラフィックの送信を開始する前に、キーイング・モジュール・レイヤを開始し、SAを設定する。ユーザ・ポリシー・エンジン260は、RPC呼び出しを非同期にペンディングし、IPSecドライバからSPIを取得し、acquireを該当するキーイング・モジュールに渡す。キーイング・モジュール・レイヤがFwpIPSecSAAcquireComplete0を呼び出すと、ユーザ・ファイヤウォール・エンジンは非同期RPCを、ネゴシエーション・ステータスを使用して達成する。以下は、Keying Module Initiateメソッドの例である。
Figure 2004364315
以下に、列挙されているパラメータの特徴を述べる。
engineHandleはユーザ・ポリシー・エンジン260へのハンドルである。
acquireは、SAのネゴシエーションに必要なデータを格納する。
waitEventは、ネゴシエーション・ステータスが利用可能な場合にトリガされるイベントへのハンドルである。クライアント、つまり、呼び出し側外部アプリケーションがネゴシエーションの完了を待とうとしない場合、クライアントは、このパラメータをNULLに設定することができる。内部では、クライアント・プロキシは、任意選択により、このイベントをRPCに渡し、非同期RPC呼び出しが完了した後、そのイベントを設定するよう要求する。
negotiationStatusは、ネゴシエーションの結果を格納する。negotiationStatusは、waitEventがNULLの場合にNULLである。そうでなければ、negotiationStatusは、waitEventがトリガされるまで有効である。
図8は、パケットに対するマッチするフィルタを見つけ、アクションおよび/またはポリシー・コンテキストを要求レイヤに返すために使用されるメソッドを示している。図に示されているように、第1の要求レイヤ404は、要求408をポリシー・エンジン400に発行することによりネットワーク・ポリシーを取得する。ポリシー・エンジン400は、カーネル・ポリシー・エンジン256であり、またはフィルタ・モジュール294を備えるユーザ・ポリシー・エンジン260である。ポリシー・エンジン400は、複数のネットワーク・ポリシー、例えば、セキュリティ、QOS、およびファイヤウォール・ポリシーを定義するインストールされているフィルタ402を含む。
第1の要求レイヤ404は、キーイング・モジュール・レイヤなどのユーザ・モード・レイヤ292、またはネットワーク・スタック内のレイヤの1つなどのカーネル・レイヤ254とすることができる。第1の要求レイヤ404は、レイヤAPIを介してポリシー・エンジン400と通信する。
要求408、例えば、Classifyメソッドを使用する分類要求は、レイヤ・パラメータ410、パケット・コンテキスト412、および要求レイヤ404により受信されるような完全なパケット414を含む。ポリシー・エンジン400は、レイヤ・パラメータ410およびパケット・コンテキスト412を使用して、インストールされているフィルタ402からマッチするフィルタを識別する。通常、ポリシー・エンジン400は、マッチするフィルタによって規定される重みの順序でフィルタを適用する。その後、ポリシー・エンジン400は、アクション418およびポリシー・コンテキスト420を含む値416を返す。アクション418は、permitまたはblockなどのファイヤウォール・ポリシーを返すために使用される。ポリシー・コンテキスト420は、セキュリティまたはQOSポリシーなどの他のポリシーを返す場合に使用される。返されたアクション418およびポリシー・コンテキスト420は、対応するポリシーをフィルタが含まない場合、noneまたはnullとして示される。
第1の要求レイヤ404は、第2の要求レイヤ406と対話することができる。この対話は、要求レイヤがネットワーク・スタック内のカーネル・レイヤ254である場合に実行される。第1の要求レイヤ404は、要求レイヤにより処理されるレイヤ・パラメータを使用してパケット・コンテキスト422を更新することができる。また、第1の要求レイヤ404はレイヤ・プロトコルに従ってパケットを処理することができる。要求レイヤは、修正されたパケット422を第2の要求レイヤ406に渡す。パケット424がレイヤ・プロトコルに従って処理された後、要求レイヤはさらにそのパケットを渡す。例えば、第1の要求レイヤ404は、IPプロトコルを実装している場合、IPプロトコルに従ってパケットを処理する。その後、第1の要求レイヤは、到着パケットの場合にはトランスポート・プロトコル・レイヤであり、出発パケットの場合にはリンク・レイヤである、第2の要求レイヤ406にパケットを渡す。そして、第2の要求レイヤ406は、分類要求を送信し、返されたアクションおよびポリシー・コンテキスト値を受信することで、このプロセスを繰り返すことができる。
図9は、パケットに対する適用可能なネットワーク・ポリシー、例えば、アクションおよびポリシー・コンテキスト、を取得するために要求レイヤによって使用される500と示されているメソッドを例示している。ステップ502で、要求レイヤは完全なパケットおよび対応するパケット・コンテキストを、前のレイヤまたは他のプロセスまたはプログラム・モジュールから、受信する。
ステップ504で、要求レイヤはレイヤ・パラメータを識別する。レイヤ・パラメータは、パケット・コンテキストと組み合わせて、マッチするフィルタを識別するために使用されるパラメータである。既定のレイヤ・パラメータは、上の表Aで説明されており、Classifyメソッド350のpInFixedValuesに含まれる。
ステップ506で、要求レイヤは分類要求をカーネルまたはユーザ・ポリシー・エンジンに発行する。分類要求を発行する方法例については、レイヤAPI280のClassifyメソッド350を参照して説明されている。
ステップ508に示されているように、分類要求に対する応答として、アクションおよびポリシー・コンテキストが要求レイヤに返される。要求レイヤは、返されたアクションに基づき、パケットを削除(drop)するかどうかを決定する。ポリシー・エンジンがアクションとしてblockを返した場合、要求レイヤはパケットを削除(drop)する。要求レイヤはさらに、ポリシー・エンジンが、マッチするフィルタが見つからないとしてアクションを返した場合、パケットを削除(drop)することができる。すでに説明したように、このアクションを使用して、ファイヤウォール・ポリシーを実装する。マッチするフィルタがファイヤウォール・ポリシーを含まない場合、返されるアクションはnoneまたはnullである。
ステップ510、512、514は、通常、要求レイヤがネットワーク・スタック内のレイヤである場合にしか実行されないが、任意選択でユーザ・モード・レイヤにより実行することもできる。返されたアクションがpermitである場合、さらにパケット処理が実行される。ステップ510で、要求レイヤは、レイヤ情報、通常は分類要求にレイヤ・パラメータとして含まれていたのと同じ種類の情報、を含むようにパケット・コンテキストを修正する。こうして、表A(上記)では、レイヤ・パラメータを明記するだけでなく、パケット・コンテキストに各レイヤによって追加される既定の情報をも明記している。パケット・コンテキストは、図5を参照して説明されているデータ構造体などのデータ構造体内に保持される。
ステップ512で、要求レイヤはそのレイヤに対するプロトコル実装に従いパケットを処理する。このような処理はよく知られており、ここで詳しく説明する必要はない。プロトコルの実装の例としては、アプリケーション・レイヤのHTTP、FTP、SMTP、およびRPC、トランスポート・レイヤのTCPおよびUDP、ネットワーク・レイヤのIP、およびリンク・レイヤのNDISがある。
ステップ514で、要求レイヤは、修正されたパケット・コンテキストとともに、レイヤ・プロトコルに従って処理されたパケットを次のレイヤに受け渡す。プロセス500は各レイヤにより繰り返され、パケットが一連のレイヤ内のすべてのレイヤ、例えば、ネットワーク・スタック内のレイヤをトラバースするまで、またはパケットがレイヤの1つにより削除(drop)されるまで、続く。
ここでは図10を参照して、マッチするフィルタを識別し、アクションおよびポリシー・コンテキストを要求レイヤに返すためカーネルまたはユーザ・ポリシー・エンジンにより使用されるメソッド520について説明する。ステップ522で、ポリシー・エンジンは、適切なAPIを介して要求レイヤからパケット、レイヤ・パラメータ、およびパケット・コンテキストを受信する。
ステップ524で、ポリシー・エンジンは、1つまたは複数のマッチするフィルタを識別する。本発明の一実施形態では、フィルタは特定の要求レイヤに割り当てられる。ポリシー・エンジンは、フィルタが要求レイヤに割り当てられて、且つパケット・パラメータがすべてのフィルタ条件318(図5)を満たしている場合、フィルタをマッチしていると識別することを試みるだけである。すでに述べたように、パケット・パラメータは、要求レイヤとパケット・コンテキストの両方のレイヤ・パラメータを含む。すべてのマッチするフィルタが識別された後、ポリシー・エンジンは、それぞれのマッチするフィルタ内の重みフィールド314に基づきフィルタの順序付けを行う。あるいは、フィルタを特定の要求レイヤに割り当てず、すべてのフィルタをマッチするフィルタとすることもできる。
ステップ526で、ポリシー・エンジンはまだ適用されていない最高の重みのフィールド314を持つフィルタを適用する。特に、ポリシー・エンジンは、フィルタおよびポリシー・コンテキストで指定されているアクション316を識別する。アクション316でコールアウト・モジュールを指定している場合、ポリシー・エンジン256はコールアウトを実行する。コールアウトは、ポリシー・エンジンにアクションを返す場合がある。
ステップ536に示されているように、アクションがcalloutでなかった場合、またはコールアウトが実行された後、ポリシー・エンジンはマッチするフィルタから、またはコールアウトにより識別されている、関連するアクションおよびポリシー・コンテキストを要求レイヤに返す。あるいは、ポリシー・エンジンは、すべてのマッチするフィルタが適用されるまで、ステップ536の実行を待つ、つまりアクションを返す。
ステップ534で、ポリシー・エンジンは、さらにマッチするフィルタが存在するかどうかを決定する。存在しなければ、プロセスは終了する。マッチするフィルタがさらに存在すれば、プロセスはステップ526に戻り、そこで次に高い優先度のフィルタが適用される。このプロセスは、すべてのマッチするフィルタが適用されるまで続けられる。あるいは、このプロセスは、終了アクションがそのパケットに対して識別された後に終了する。アクションタイプは、終了アクションとして定義することができる。既定では、permitおよびblockは終了アクションである。そのパケットに対し識別されるマッチするフィルタがない場合、ポリシー・エンジンは、マッチするフィルタが見つからなかったと要求レイヤに通知する。
図11は、新しいフィルタを、一組のインストールされているフィルタに追加するためにユーザ・ポリシー・エンジン260により使用されるプロセス540を例示している。フィルタは、カーネル・ポリシー・エンジン256またはフィルタ・モジュール294にインストールすることができる。ステップ542で、ユーザ・ポリシー・エンジンは、ポリシー・プロバイダ262の1つからポリシーを受け取る。ポリシー・プロバイダは、LIPS、GUIなどの知られているプロセスを含む。ユーザ・ポリシー・エンジンは、必要に応じて、フィルタ条件、アクション、およびポリシー・コンテキストに関してポリシーを定義することによりポリシーをフィルタ形式にする。
ステップ544で、ユーザ・ポリシー・エンジンによりフィルタに重み値が割り当てられる。この重み値は、ポリシー・プロバイダ、例えば、ユーザがポリシー・プロバイダGUIを使用して手動で割り当てる。あるいは、ユーザ・ポリシー・エンジンは、この重み値を自動的に計算する。カーネル・ポリシー・エンジン256は、何らかの適当な方法を使用して重みを計算する。例えば、より具体的なフィルタ条件が設定されたフィルタに、あまり具体的でない詳しくないフィルタよりも高い重み値を付ける。フィルタ条件が具体的なほど、フィルタ条件を満たす潜在的パケットの数は少なくなる。例えば、単一のIPアドレスをそのフィルタ条件とするフィルタは、ある範囲のIPアドレスをフィルタ条件とするフィルタよりも具体的である。
ステップ548で、ユーザ・ポリシー・エンジン260は、新しいフィルタを、コンフリクトを識別するために、同じレイヤに割り当てられているインストールされているフィルタのそれぞれと、比較する。フィルタをコンフリクトさせるためには、同じパケットに作用し、異なるアクションを識別するような共通の一組のフィルタ条件を共有する必要がある。例えば、インストールされているフィルタのフィルタ条件が123.4.0.0から123.4.0.100までの範囲の送信元IPアドレスで、関連するアクションがpermitであり、新しいフィルタのフィルタ条件が123.4.0.50から123.4.0150までの範囲の送信元IPアドレスで、関連するアクションがblockの場合、両方のフィルタ条件に123.4.0.50から123.4.0.100までのIPアドレス範囲が含まれる限り、新しいインストールされたフィルタは重なり合う。
フィルタがコンフリクトする場合、ユーザ・ポリシー・エンジン260は、ステップ552で示されているように、適当な手法を使用してコンフリクトを解消する。フィルタ重みを計算し、フィルタのコンフリクトを識別して解消する方法は、「Method for Managing Network Filter Based Policy」という表題の米国同時係属特許出願で説明されている。コンフリクト解消プロセスの一部として、新しいフィルタを一組のインストールされているフィルタに追加することができる。新しいフィルタが一組のインストールされているフィルタとコンフリクトしない場合、新しいフィルタは、ステップ550で示されているように、ユーザ・ポリシー・エンジンまたはカーネル・ポリシー・エンジンのいずれかの一組のインストールされているフィルタに追加される。
新しいフィルタが一組のインストールされているフィルタにロードされると、ステップ554で示されているように、フィルタによって実行されるコールアウト、つまり、関連するアクションとしてフィルタに含まれるコールアウトに通知が行われる。コールアウトに通知する方法の例については、コールアウトAPI284の一部として説明したNotifyメソッド412を参照して説明されている(図6)。
本明細書で引用した参考文献はすべて、参照によりその全体が本明細書に組み込まれる。
本発明の原理を適用することが可能な考えうる多くの実施形態にかんがみて、図面に関して本明細書で説明した実施形態は説明のみを目的としており、本発明の範囲を制限するものとしてみなすべきではないことは理解されるであろう。例えば、当業者であれば、ソフトウェアで示されている説明した実施形態の要素は、ハードウェアで実装することができるが、その逆も可能であること、あるいは説明した実施形態は、本発明の精神から逸脱することなくその配置および詳細を修正できることを理解するであろう。本発明は、フィルタ、およびこれらのプロセスおよび追加プロセスのフィルタ・ベースのポリシーを管理し、実行するために使用できる。したがって、本明細書で説明した発明は、請求項およびそれと同等の条項の範囲内に納められるようなすべての実施形態を対象としている。
本発明が配置されるコンピュータ・システム例の概要を説明するブロック図である。 本発明を使用できるネットワーク環境例のブロック図である。 複数のネットワーク・ポリシーを実装し、管理するために使用されるシステム・アーキテクチャのブロック図である。 ポリシー・フィルタのデータ構造例の図である。 パケット・コンテキストのデータ構造例の図である。 本発明とともに使用されるアプリケーション・プログラミング・インターフェース例の図である。 本発明とともに使用されるアプリケーション・プログラミング・インターフェース例の図である。 データに対するポリシーを取得する要求レイヤを例示するブロック図である。 ネットワーク・ポリシーを実装するため要求レイヤによって使用される方法を例示する流れ図である。 データに対するネットワーク・ポリシーを識別するためポリシー・エンジンによって使用される方法を例示する流れ図である。 新しいポリシー・フィルタをポリシー・エンジンに追加するため使用される方法を例示する流れ図である。
符号の説明
100 コンピューティング・システム環境
110 コンピュータ
120 処理ユニット
121 システム・バス
130 システム・メモリ
131 読み取り専用メモリ(ROM)
132 ランダム・アクセス・メモリ(RAM)
133 基本入出力システム
134 オペレーティング・システム
135 アプリケーション・プログラム
136 その他のプログラム・モジュール
137 プログラム・データ
141 ハードディスク・ドライブ
151 磁気ディスク・ドライブ
152 取り外し可能な不揮発性磁気ディスク
155 光ディスク・ドライブ
156 取り外し可能な不揮発性光ディスク
160 ユーザ入力インターフェース
161 ポインティング・デバイス
162 キーボード
171 ローカル・エリア・ネットワーク(LAN)
172 モデム
173 ワイド・エリア・ネットワーク(WAN)
180 リモート・コンピュータ
181 メモリ記憶デバイス
185 リモート・アプリケーション・プログラム
190 ビデオ・インターフェース
191 モニタ
195 出力周辺インターフェース
196 プリンタ
197 スピーカ
200 プライベート・ネットワーク
202 パブリック・ネットワーク
204、206、208、210、および212 ネットワーク・デバイス
214 フィルタ管理モジュール
216 フィルタ
250 ユーザ・モード・プロセス
252 カーネル・モード・プロセス
254 カーネル・レイヤ
256 カーネル・ポリシー・エンジン
258 コールアウト
262 ポリシー・プロバイダ
266 フィルタ・エンジンAPI
268 データ・ストリーム・レイヤ
270 トランスポート・レイヤ
272 ネットワーク・レイヤ
274 リンク・レイヤ
276 ファイル・アクセス・レイヤ
280 レイヤAPI
282 フィルタ
284 コールアウトAPI
292 ユーザ・モード・レイヤ
294 フィルタ・モジュール
296 キーイング・モジュール・レイヤ
310 フィルタ
312 フィルタID
314 重み
316 アクション
317 ポリシー・コンテキスト
318 フィルタ条件
320 データ型
322 データ
324 レイヤID:フィールドID
332 レイヤId:フィールドIdフィールド
334 値
336 エントリ
350 Classifyメソッド
352 Addメソッド
354 Delete Layerメソッド
360 Callout Registrationメソッド
362 Callout Deregistrationメソッド
364 Add Filter
366 Delete Filter
368 Enum Layerメソッド
370 IPSec SA Acquireメソッド
372 Expire Notifyメソッド
374 IPSec SA Acquire Completeメソッド
376 Keying Module Registerメソッド
378 Keying Module Deregisterメソッド
380 IPSec Inbound Get SPIメソッド
382 Add Inbound SAメソッド
384 Add Outbound SAメソッド
386 Inbound SA Expireメソッド
388 Keying Module Initiateメソッド
400 ポリシー・エンジン
402 フィルタ
404 第1の要求レイヤ
406 第2の要求レイヤ
408 要求
410 レイヤ・パラメータ
412 パケット・コンテキスト
414 完全なパケット
418 アクション
420 ポリシー・コンテキスト
422 パケット・コンテキスト
500 プロセス
540 プロセス
262 ポリシー・プロバイダ

Claims (37)

  1. 少なくとも1つのファイヤウォール・ポリシーおよびセキュリティ・ポリシーを含む、データ・パケットに適用されるべき、複数のフィルタ・ベースのポリシーを統合するフレームワークであって、
    パケットに関連付けられている少なくとも1つのパラメータを識別する一組のレイヤ・プロセスと、
    前記一組のレイヤ・プロセスと通信するポリシー・エンジンと、
    前記ポリシー・エンジンに格納される一組のフィルタであって、前記一組のフィルタ内の各フィルタは、フィルタ条件、前記ファイヤウォール・ポリシーを識別するアクション、および前記セキュリティ・ポリシーを識別するポリシー・コンテキストを有する、一組のフィルタと
    を備えることを特徴とするフレームワーク。
  2. 前記複数のフィルタ・ベースのポリシーは、さらに、パケットに適用すべき送信設定を識別するサービスの品質(QOS)ポリシーを含み、前記サービスの品質(QOS)ポリシーは前記一組のフィルタ内の前記ポリシー・コンテキストにより定義されることを特徴とする請求項1に記載のフレームワーク。
  3. 前記一組のレイヤ・プロセス内に、前記少なくとも1つのパラメータを前記ポリシー・エンジンに送信する要求レイヤのプロセスを、さらに備え、
    前記ポリシー・エンジンは、前記少なくとも1つのパラメータにマッチするフィルタ条件を持つ前記一組のフィルタからマッチするフィルタを識別し、前記ファイヤウォール・ポリシーおよび前記セキュリティ・ポリシーを前記要求レイヤに返すことを特徴とする請求項1に記載のフレームワーク。
  4. 前記要求レイヤは、キー入力モジュール・レイヤであり、前記マッチするフィルタ内の前記セキュリティ・ポリシーは、鍵ネゴシエーション・プロトコルに従ってセキュリティ・アソシエーションのネゴシエーションを行うためのポリシーを、識別することを特徴とする請求項3に記載のフレームワーク。
  5. 前記少なくとも1つのパラメータは、複数のパラメータであり、前記複数のパラメータは、送信元および送信先IPアドレス、送信元および送信先ポート、およびプロトコル・タイプを備えることを特徴とする請求項4に記載のフレームワーク。
  6. 前記鍵ネゴシエーション・プロトコルは、IKEプロトコルであることを特徴とする請求項4に記載のフレームワーク。
  7. 前記要求レイヤは、さらに、パケット・コンテキストを送信し、前記ポリシー・エンジンは、さらに、前記パケット・コンテキストから前記マッチするフィルタを識別することを特徴とする請求項3に記載のフレームワーク。
  8. レイヤ・プロセスでパケットに適用すべき複数のネットワーク・ポリシーを決定する方法であって、
    前記レイヤ・プロセスにより、前記パケットに関連付けられている一組のパラメータを識別すること、
    前記レイヤ・プロセスにより、前記パケットに適用すべき前記ネットワーク・ポリシーを識別する、前記パケットに関連付けられている前記パラメータを含む要求を送信すること、および
    前記レイヤ・プロセスで、第1のネットワーク・ポリシーを識別する第1のポリシー値と第2のネットワーク・ポリシーを識別する第2のポリシー値を含む応答を受信すること
    を備えることを特徴とする方法。
  9. 前記レイヤ・プロセスは、ユーザ・レイヤであることを特徴とする請求項8に記載の方法。
  10. 前記レイヤ・プロセスは、カーネル・レイヤであることを特徴とする請求項8に記載の方法。
  11. 前記第1のネットワーク・ポリシーは、ファイヤウォール・ポリシーであり、前記第1のポリシー値は、アクション値であることを特徴とする請求項8に記載の方法。
  12. 前記アクション値は、許可(permit)または遮断(block)の一方であることを特徴とする請求項11に記載の方法。
  13. 前記第2のネットワーク・ポリシーは、鍵ネゴシエーション・プロトコル・パラメータを定義するセキュリティ・ポリシーであることを特徴とする請求項8に記載の方法。
  14. ネットワーク・デバイス内で複数のネットワーク・ポリシーを保持する方法であって、
    一組のフィルタをポリシー・エンジンにインストールすること
    を備え、前記それぞれのフィルタは、
    1組のフィルタ条件と、
    第1のネットワーク・ポリシーを識別する第1のポリシー値と第2のネットワーク・ポリシーを識別する第2のポリシー値と
    を備えることを特徴とする方法。
  15. 前記第1のネットワーク・ポリシーは、ファイヤウォール・ポリシーであり、前記第2のネットワーク・ポリシーは、セキュリティ・ポリシーであることを特徴とする請求項14に記載の方法。
  16. 前記セキュリティ・ポリシーは、IPSecポリシーであることを特徴とする請求項15に記載の方法。
  17. 前記第1のポリシー値は、アクションであり、前記第2のポリシー値は、ポリシー・コンテキストであることを特徴とする請求項15に記載の方法。
  18. ポリシー・エンジンにより、前記複数のネットワーク・ポリシーが適用されるパケットにマッチするフィルタ条件を含むマッチするフィルタを前記一組のフィルタから識別すること、および
    前記パケットに対して少なくとも前記第1のネットワーク・ポリシーを実行すること
    を備えることを特徴とする請求項14に記載の方法。
  19. 前記一組のフィルタをインストールするステップは、オペレーティング・システムのユーザ・モードで実行されることを特徴とする請求項14に記載の方法。
  20. 前記一組のフィルタをインストールするステップは、オペレーティング・システムのカーネル・モードで実行されることを特徴とする請求項14に記載の方法。
  21. 前記複数のポリシーは、ファイヤウォール・ポリシー、セキュリティ・ポリシー、およびサービスの品質(QOS)ポリシーを含むことを特徴とする請求項14に記載の方法。
  22. 前記一組のフィルタ条件は、目的のポリシーに従ってフィルタ条件が追加または削除されるように動的に構成可能であることを特徴とする請求項14に記載の方法。
  23. フィルタを定義するデータ構造体が格納されているコンピュータ可読媒体であって、
    マッチするパケットを定義する一組のフィルタ条件を備える第1の一組のデータと、
    第1のネットワーク・ポリシーを備える第2の一組のデータと、
    第2のネットワーク・ポリシーを備える第3の一組のデータと
    を備え、前記第1のネットワーク・ポリシーは前記第2のネットワーク・ポリシーと異なっていることを特徴とするコンピュータ可読媒体。
  24. 前記一組のフィルタ条件は、動的に構成可能な複数のフィルタ条件を含むように適合されることを特徴とする請求項23に記載のコンピュータ可読媒体。
  25. 前記一組のフィルタ条件は、データ型および当該データ型と一致する対応するデータを含むことを特徴とする請求項23に記載のコンピュータ可読媒体。
  26. 前記第1のネットワーク・ポリシーは、ファイヤウォール・ポリシーであることを特徴とする請求項23に記載のコンピュータ可読媒体。
  27. 前記第2のネットワーク・ポリシーは、サービスの品質(QOS)ポリシーであることを特徴とする請求項26に記載のコンピュータ可読媒体。
  28. 前記第2のネットワーク・ポリシーは、セキュリティ・ポリシーであることを特徴とする請求項26に記載のコンピュータ可読媒体。
  29. 前記データ構造体は、さらに、フィルタの優先度を識別するフィルタ重みを備えることを特徴とする請求項26に記載のコンピュータ可読媒体。
  30. 少なくとも1つのファイヤウォール・ポリシーおよびセキュリティ・ポリシーを含む、データ・パケットに適用すべき、複数のフィルタ・ベースのポリシーを統合するフレームワークを容易にするコンピュータ実行可能命令を実行するためのコンピュータ可読媒体であって、
    パケットに関連付けられている少なくとも1つのパラメータを識別する一組のレイヤ・プロセスと、
    前記一組のレイヤ・プロセスと通信するポリシー・エンジンと、
    前記ポリシー・エンジンに格納される一組のフィルタであって、前記一組のフィルタ内の各フィルタは、フィルタ条件、前記ファイヤウォール・ポリシーを識別するアクション、および前記セキュリティ・ポリシーを識別するポリシー・コンテキストを有する、一組のフィルタと
    を備えることを特徴とするコンピュータ可読媒体。
  31. 前記複数のフィルタ・ベースのポリシーは、さらに、パケットに適用すべき送信設定を識別するサービスの品質(QOS)ポリシーを含み、前記サービスの品質(QOS)ポリシーは、前記一組のフィルタ内の前記ポリシー・コンテキストにより定義されることを特徴とする請求項30に記載のコンピュータ可読媒体。
  32. 前記一組のレイヤ・プロセス内に、前記少なくとも1つのパラメータを前記ポリシー・エンジンに送信する要求レイヤのプロセスを、さらに備え、
    前記ポリシー・エンジンは、前記少なくとも1つのパラメータにマッチするフィルタ条件を持つ前記一組のフィルタからマッチするフィルタを識別し、前記ファイヤウォール・ポリシーおよび前記セキュリティ・ポリシーを前記要求レイヤに返すことを特徴とする請求項30に記載のコンピュータ可読媒体。
  33. 前記要求レイヤは、キー入力モジュール・レイヤであり、前記マッチするフィルタ内の前記セキュリティ・ポリシーは、鍵ネゴシエーション・プロトコルに従ってセキュリティ・アソシエーションのネゴシエーションを行うためのポリシーを識別することを特徴とする請求項32に記載のコンピュータ可読媒体。
  34. レイヤ・プロセスでパケットに適用すべき複数のネットワーク・ポリシーを決定するためのコンピュータ実行可能命令を実行するためのコンピュータ可読媒体であって、
    前記レイヤ・プロセスにより、前記パケットに関連付けられている一組のパラメータを識別すること、
    前記レイヤ・プロセスにより、前記パケットに適用すべき前記ネットワーク・ポリシーを識別する、前記パケットに関連付けられている前記パラメータを含む、要求を送信すること、および
    前記レイヤ・プロセスで、第1のネットワーク・ポリシーを識別する第1のポリシー値と第2のネットワーク・ポリシーを識別する第2のポリシー値とを含む応答を受信すること
    を備えることを特徴とするコンピュータ可読媒体。
  35. ネットワーク・デバイス内で複数のネットワーク・ポリシーを保持するコンピュータ実行可能命令を実行するためのコンピュータ可読媒体であって、
    一組のフィルタをポリシー・エンジンにインストールすること
    を備え、前記それぞれのフィルタは、
    1組のフィルタ条件と、
    第1のネットワーク・ポリシーを識別する第1のポリシー値と第2のネットワーク・ポリシーを識別する第2のポリシー値と
    を備えることを特徴とするコンピュータ可読媒体。
  36. ポリシー・エンジンにより、前記複数のネットワーク・ポリシーが適用されるパケットにマッチするフィルタ条件を含むマッチするフィルタを前記一組のフィルタから識別すること、および
    前記パケットに対して少なくとも前記第1のネットワーク・ポリシーを実行すること
    を、さらに備えることを特徴とする請求項35に記載のコンピュータ可読媒体。
  37. 前記一組のフィルタ条件は、目的のポリシーに従ってフィルタ条件が追加または削除されるように動的に構成可能であることを特徴とする請求項35に記載のコンピュータ可読媒体。
JP2004167768A 2003-06-06 2004-06-04 複数のネットワーク・ポリシーを統合するための方法とフレームワーク Pending JP2004364315A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/456,093 US7308711B2 (en) 2003-06-06 2003-06-06 Method and framework for integrating a plurality of network policies

Publications (1)

Publication Number Publication Date
JP2004364315A true JP2004364315A (ja) 2004-12-24

Family

ID=33159575

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004167768A Pending JP2004364315A (ja) 2003-06-06 2004-06-04 複数のネットワーク・ポリシーを統合するための方法とフレームワーク

Country Status (5)

Country Link
US (2) US7308711B2 (ja)
EP (1) EP1484886A3 (ja)
JP (1) JP2004364315A (ja)
KR (1) KR20040110981A (ja)
CN (1) CN1574791A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007043483A (ja) * 2005-08-03 2007-02-15 Nec Corp 情報処理装置、通信制御方法および通信制御用プログラム
JP2008053818A (ja) * 2006-08-22 2008-03-06 Hitachi Communication Technologies Ltd IPSec処理装置、ネットワークシステム、及びIPSec処理プログラム
JP2013511209A (ja) * 2009-11-12 2013-03-28 マイクロソフト コーポレーション 証明書属性に基づくipセキュリティ証明書交換
JP2014086083A (ja) * 2012-10-19 2014-05-12 Mcafee Inc ネットワークアクセス及び受付制御のためのソーシャルグラフの利用
JP2017135720A (ja) * 2007-09-26 2017-08-03 ニシラ, インコーポレイテッド ネットワークを管理する及び安全にするためのネットワークオペレーティングシステム

Families Citing this family (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7966078B2 (en) 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
US7152240B1 (en) * 2000-07-25 2006-12-19 Green Stuart D Method for communication security and apparatus therefor
EP1634175B1 (en) 2003-05-28 2015-06-24 Citrix Systems, Inc. Multilayer access control security system
US7509673B2 (en) * 2003-06-06 2009-03-24 Microsoft Corporation Multi-layered firewall architecture
US7260840B2 (en) * 2003-06-06 2007-08-21 Microsoft Corporation Multi-layer based method for implementing network firewalls
US7409707B2 (en) 2003-06-06 2008-08-05 Microsoft Corporation Method for managing network filter based policies
US7574603B2 (en) * 2003-11-14 2009-08-11 Microsoft Corporation Method of negotiating security parameters and authenticating users interconnected to a network
US20050251556A1 (en) * 2004-05-07 2005-11-10 International Business Machines Corporation Continuous feedback-controlled deployment of message transforms in a distributed messaging system
US20050251811A1 (en) * 2004-05-07 2005-11-10 International Business Machines Corporation Distributed messaging system supporting stateful
US7886180B2 (en) * 2004-05-14 2011-02-08 International Business Machines Corporation Recovery in a distributed stateful publish-subscribe system
US20050268331A1 (en) * 2004-05-25 2005-12-01 Franck Le Extension to the firewall configuration protocols and features
US7509493B2 (en) * 2004-11-19 2009-03-24 Microsoft Corporation Method and system for distributing security policies
JP4252954B2 (ja) * 2004-12-02 2009-04-08 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、情報処理装置のパワーマネージメント方法、およびそのためのプログラム
US7496956B1 (en) * 2005-01-05 2009-02-24 Symantec Corporation Forward application compatible firewall
US7620974B2 (en) * 2005-01-12 2009-11-17 Symantec Distributed traffic scanning through data stream security tagging
US8825166B2 (en) 2005-01-21 2014-09-02 John Sasha John Multiple-symptom medical treatment with roving-based neurostimulation
WO2006105093A2 (en) * 2005-03-28 2006-10-05 Wake Forest University Methods, systems, and computer program products for network firewall policy optimization
US8904486B2 (en) * 2005-05-19 2014-12-02 International Business Machines Corporation Method and system for autonomic security configuration
US7844996B2 (en) * 2005-05-23 2010-11-30 Broadcom Corporation Method and apparatus for constructing an access control matrix for a set-top box security processor
US9652637B2 (en) 2005-05-23 2017-05-16 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for allowing no code download in a code download scheme
US7913289B2 (en) * 2005-05-23 2011-03-22 Broadcom Corporation Method and apparatus for security policy and enforcing mechanism for a set-top box security processor
CN100401682C (zh) * 2005-06-01 2008-07-09 中兴通讯股份有限公司 一种直放站网管协议数据传输方法
US20070006294A1 (en) * 2005-06-30 2007-01-04 Hunter G K Secure flow control for a data flow in a computer and data flow in a computer network
US8798253B2 (en) * 2005-07-29 2014-08-05 Verizon Patent And Licensing Inc. Network routing
US8250229B2 (en) * 2005-09-29 2012-08-21 International Business Machines Corporation Internet protocol security (IPSEC) packet processing for multiple clients sharing a single network address
US7725737B2 (en) * 2005-10-14 2010-05-25 Check Point Software Technologies, Inc. System and methodology providing secure workspace environment
CN100364280C (zh) * 2005-12-15 2008-01-23 杭州华三通信技术有限公司 一种下发安全策略的方法
JP4419951B2 (ja) * 2005-12-22 2010-02-24 ブラザー工業株式会社 通信装置
US9177176B2 (en) 2006-02-27 2015-11-03 Broadcom Corporation Method and system for secure system-on-a-chip architecture for multimedia data processing
US9904809B2 (en) 2006-02-27 2018-02-27 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for multi-level security initialization and configuration
US20070214502A1 (en) * 2006-03-08 2007-09-13 Mcalister Donald K Technique for processing data packets in a communication network
US8122492B2 (en) * 2006-04-21 2012-02-21 Microsoft Corporation Integration of social network information and network firewalls
US8079073B2 (en) * 2006-05-05 2011-12-13 Microsoft Corporation Distributed firewall implementation and control
US8176157B2 (en) * 2006-05-18 2012-05-08 Microsoft Corporation Exceptions grouping
US7774837B2 (en) * 2006-06-14 2010-08-10 Cipheroptics, Inc. Securing network traffic by distributing policies in a hierarchy over secure tunnels
US9489318B2 (en) 2006-06-19 2016-11-08 Broadcom Corporation Method and system for accessing protected memory
US7886351B2 (en) * 2006-06-19 2011-02-08 Microsoft Corporation Network aware firewall
US20070297327A1 (en) * 2006-06-27 2007-12-27 International Business Machines Corporation Method for applying stochastic control optimization for messaging systems
US20080222693A1 (en) * 2006-08-08 2008-09-11 Cipheroptics, Inc. Multiple security groups with common keys on distributed networks
US8082574B2 (en) * 2006-08-11 2011-12-20 Certes Networks, Inc. Enforcing security groups in network of data processors
US20080072281A1 (en) * 2006-09-14 2008-03-20 Willis Ronald B Enterprise data protection management for providing secure communication in a network
US20080072033A1 (en) * 2006-09-19 2008-03-20 Mcalister Donald Re-encrypting policy enforcement point
US8379638B2 (en) * 2006-09-25 2013-02-19 Certes Networks, Inc. Security encapsulation of ethernet frames
US8284943B2 (en) * 2006-09-27 2012-10-09 Certes Networks, Inc. IP encryption over resilient BGP/MPLS IP VPN
US8607301B2 (en) * 2006-09-27 2013-12-10 Certes Networks, Inc. Deploying group VPNS and security groups over an end-to-end enterprise network
US8104082B2 (en) * 2006-09-29 2012-01-24 Certes Networks, Inc. Virtual security interface
US8046820B2 (en) * 2006-09-29 2011-10-25 Certes Networks, Inc. Transporting keys between security protocols
CN100465980C (zh) * 2006-10-30 2009-03-04 毛德操 通过进程行为的配伍禁忌提高操作系统安全性的方法
US20080162922A1 (en) * 2006-12-27 2008-07-03 Swartz Troy A Fragmenting security encapsulated ethernet frames
US7864762B2 (en) * 2007-02-14 2011-01-04 Cipheroptics, Inc. Ethernet encryption over resilient virtual private LAN services
US20080209535A1 (en) * 2007-02-28 2008-08-28 Tresys Technology, Llc Configuration of mandatory access control security policies
US8819271B2 (en) * 2007-05-24 2014-08-26 At&T Intellectual Property I, L.P. System and method to access and use layer 2 and layer 3 information used in communications
US8984504B2 (en) * 2007-06-22 2015-03-17 Red Hat, Inc. Method and system for determining a host machine by a virtual machine
US8539570B2 (en) 2007-06-22 2013-09-17 Red Hat, Inc. Method for managing a virtual machine
US9678803B2 (en) 2007-06-22 2017-06-13 Red Hat, Inc. Migration of network entities to a cloud infrastructure
US9727440B2 (en) 2007-06-22 2017-08-08 Red Hat, Inc. Automatic simulation of virtual machine performance
US8336108B2 (en) * 2007-06-22 2012-12-18 Red Hat, Inc. Method and system for collaboration involving enterprise nodes
US8949827B2 (en) * 2007-06-22 2015-02-03 Red Hat, Inc. Tracking a virtual machine
US9569330B2 (en) 2007-06-22 2017-02-14 Red Hat, Inc. Performing dependency analysis on nodes of a business application service group
US9354960B2 (en) 2010-12-27 2016-05-31 Red Hat, Inc. Assigning virtual machines to business application service groups based on ranking of the virtual machines
US9495152B2 (en) 2007-06-22 2016-11-15 Red Hat, Inc. Automatic baselining of business application service groups comprised of virtual machines
US8429748B2 (en) * 2007-06-22 2013-04-23 Red Hat, Inc. Network traffic analysis using a dynamically updating ontological network description
US8191141B2 (en) * 2007-06-22 2012-05-29 Red Hat, Inc. Method and system for cloaked observation and remediation of software attacks
CN101690126B (zh) * 2007-06-26 2013-12-18 艾利森电话股份有限公司 用于影响应用服务器向用户设备提供的服务的调用的方法和设备
US8819164B2 (en) 2007-08-31 2014-08-26 Microsoft Corporation Versioning management
KR101440154B1 (ko) * 2007-09-11 2014-09-12 주식회사 엘지씨엔에스 네트워크 보안시스템의 사용자 인증 장치 및 방법
US20090141737A1 (en) * 2007-11-30 2009-06-04 Texas Instruments Incorporated Systems and methods for prioritized channel access hardware assistance design
US8825883B2 (en) * 2008-02-29 2014-09-02 Microsoft Corporation Connectivity platform
US8364847B2 (en) 2008-02-29 2013-01-29 Microsoft Corporation Address management in a connectivity platform
US8140461B2 (en) * 2008-03-24 2012-03-20 Hewlett-Packard Development Company, L.P. System and method for identifying conflicting network access rules and creating a resolved consequence
US7920478B2 (en) * 2008-05-08 2011-04-05 Nortel Networks Limited Network-aware adapter for applications
US20100064353A1 (en) * 2008-09-09 2010-03-11 Facetime Communications, Inc. User Mapping Mechanisms
US8122129B2 (en) * 2008-09-09 2012-02-21 Actiance, Inc. Hash-based resource matching
US8484338B2 (en) * 2008-10-02 2013-07-09 Actiance, Inc. Application detection architecture and techniques
US8955033B2 (en) * 2008-11-25 2015-02-10 Citrix Systems, Inc. Systems and methods for HTTP callouts for policies
EP2384593A4 (en) * 2009-01-30 2016-05-18 Hewlett Packard Development Co DYNAMIC APPLICATION OF A DIRECTIVE TO A NETWORK
EP2452476B1 (en) * 2009-07-10 2013-09-18 Telefonaktiebolaget LM Ericsson (publ) Method for selecting an ipsec policy
US8495725B2 (en) * 2009-08-28 2013-07-23 Great Wall Systems Methods, systems, and computer readable media for adaptive packet filtering
US8307418B2 (en) * 2010-03-16 2012-11-06 Genband Inc. Methods, systems, and computer readable media for providing application layer firewall and integrated deep packet inspection functions for providing early intrusion detection and intrusion prevention at an edge networking device
US8792491B2 (en) 2010-08-12 2014-07-29 Citrix Systems, Inc. Systems and methods for multi-level quality of service classification in an intermediary device
US8638795B2 (en) 2010-08-12 2014-01-28 Citrix Systems, Inc. Systems and methods for quality of service of encrypted network traffic
US8990380B2 (en) 2010-08-12 2015-03-24 Citrix Systems, Inc. Systems and methods for quality of service of ICA published applications
US8914841B2 (en) * 2010-11-24 2014-12-16 Tufin Software Technologies Ltd. Method and system for mapping between connectivity requests and a security rule set
CN102185709B (zh) * 2011-04-22 2014-11-19 赛特斯信息科技股份有限公司 一体化网络服务质量保障管理系统
CN103597445A (zh) 2011-06-16 2014-02-19 惠普发展公司,有限责任合伙企业 用于策略生成的系统和方法
US8881258B2 (en) 2011-08-24 2014-11-04 Mcafee, Inc. System, method, and computer program for preventing infections from spreading in a network environment using dynamic application of a firewall policy
US9497082B2 (en) * 2011-10-03 2016-11-15 Alcatel Lucent Rules engine evaluation for policy decisions
US9245144B2 (en) 2012-09-27 2016-01-26 Intel Corporation Secure data container for web applications
US9137205B2 (en) 2012-10-22 2015-09-15 Centripetal Networks, Inc. Methods and systems for protecting a secured network
US9565213B2 (en) * 2012-10-22 2017-02-07 Centripetal Networks, Inc. Methods and systems for protecting a secured network
US9203806B2 (en) 2013-01-11 2015-12-01 Centripetal Networks, Inc. Rule swapping in a packet network
JP2014171211A (ja) * 2013-02-06 2014-09-18 Ricoh Co Ltd 情報処理システム
US9124552B2 (en) 2013-03-12 2015-09-01 Centripetal Networks, Inc. Filtering network data transfers
US9094445B2 (en) 2013-03-15 2015-07-28 Centripetal Networks, Inc. Protecting networks from cyber attacks and overloading
AU2014332244A1 (en) * 2013-10-07 2016-05-05 Fornetix Llc System and method for encryption key management, federation and distribution
US9510195B2 (en) * 2014-02-10 2016-11-29 Stmicroelectronics International N.V. Secured transactions in internet of things embedded systems networks
US9621588B2 (en) 2014-09-24 2017-04-11 Netflix, Inc. Distributed traffic management system and techniques
EP3216177B1 (en) 2014-11-06 2021-04-14 Hewlett Packard Enterprise Development LP Network policy graphs
US9264370B1 (en) 2015-02-10 2016-02-16 Centripetal Networks, Inc. Correlating packets in communications networks
US9866576B2 (en) 2015-04-17 2018-01-09 Centripetal Networks, Inc. Rule-based network-threat detection
WO2017014770A1 (en) 2015-07-22 2017-01-26 Hewlett Packard Enterprise Development Lp Adding metadata associated with a composite network policy
US9917856B2 (en) 2015-12-23 2018-03-13 Centripetal Networks, Inc. Rule-based network-threat detection for encrypted communications
US11729144B2 (en) 2016-01-04 2023-08-15 Centripetal Networks, Llc Efficient packet capture for cyber threat analysis
US11100046B2 (en) * 2016-01-25 2021-08-24 International Business Machines Corporation Intelligent security context aware elastic storage
US10581917B2 (en) 2016-06-14 2020-03-03 Motorola Solutions, Inc. Systems and methods for enforcing device policies
US10193863B2 (en) 2016-10-07 2019-01-29 Microsoft Technology Licensing, Llc Enforcing network security policy using pre-classification
CN108667776B (zh) * 2017-03-31 2022-02-22 中兴通讯股份有限公司 一种网络业务诊断方法
US10812342B2 (en) 2017-04-28 2020-10-20 Hewlett Packard Enterprise Development Lp Generating composite network policy
US10503899B2 (en) 2017-07-10 2019-12-10 Centripetal Networks, Inc. Cyberanalysis workflow acceleration
US10284526B2 (en) 2017-07-24 2019-05-07 Centripetal Networks, Inc. Efficient SSL/TLS proxy
US11233777B2 (en) 2017-07-24 2022-01-25 Centripetal Networks, Inc. Efficient SSL/TLS proxy
US10798104B2 (en) * 2018-01-15 2020-10-06 Ford Global Technologies, Llc Networked communications control for vehicles
US11108739B2 (en) * 2018-02-20 2021-08-31 Blackberry Limited Firewall incorporating network security information
US10333898B1 (en) 2018-07-09 2019-06-25 Centripetal Networks, Inc. Methods and systems for efficient network protection
US11362996B2 (en) 2020-10-27 2022-06-14 Centripetal Networks, Inc. Methods and systems for efficient adaptive logging of cyber threat incidents
US11159546B1 (en) 2021-04-20 2021-10-26 Centripetal Networks, Inc. Methods and systems for efficient threat context-aware packet filtering for network protection
US11627040B1 (en) * 2021-08-18 2023-04-11 Juniper Networks, Inc. Processing unmodified configuration data with a network device application

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5606668A (en) * 1993-12-15 1997-02-25 Checkpoint Software Technologies Ltd. System for securing inbound and outbound data packet flow in a computer network
US5835726A (en) * 1993-12-15 1998-11-10 Check Point Software Technologies Ltd. System for securing the flow of and selectively modifying packets in a computer network
US6003084A (en) 1996-09-13 1999-12-14 Secure Computing Corporation Secure network proxy for connecting entities
US6009475A (en) 1996-12-23 1999-12-28 International Business Machines Corporation Filter rule validation and administration for firewalls
US5987611A (en) 1996-12-31 1999-11-16 Zone Labs, Inc. System and methodology for managing internet access on a per application basis for client computers connected to the internet
US5968176A (en) * 1997-05-29 1999-10-19 3Com Corporation Multilayer firewall system
US6154775A (en) 1997-09-12 2000-11-28 Lucent Technologies Inc. Methods and apparatus for a computer network firewall with dynamic rule processing with the ability to dynamically alter the operations of rules
US6131163A (en) * 1998-02-17 2000-10-10 Cisco Technology, Inc. Network gateway mechanism having a protocol stack proxy
US6253321B1 (en) * 1998-06-19 2001-06-26 Ssh Communications Security Ltd. Method and arrangement for implementing IPSEC policy management using filter code
US6631466B1 (en) * 1998-12-31 2003-10-07 Pmc-Sierra Parallel string pattern searches in respective ones of array of nanocomputers
US6792615B1 (en) * 1999-05-19 2004-09-14 New Horizons Telecasting, Inc. Encapsulated, streaming media automation and distribution system
US6347376B1 (en) * 1999-08-12 2002-02-12 International Business Machines Corp. Security rule database searching in a network security environment
US6496935B1 (en) * 2000-03-02 2002-12-17 Check Point Software Technologies Ltd System, device and method for rapid packet filtering and processing
US7120931B1 (en) * 2000-08-31 2006-10-10 Cisco Technology, Inc. System and method for generating filters based on analyzed flow data
AU2002214230A1 (en) * 2000-10-31 2002-05-15 Firebit Ltd. A router-based system for providing multi-level data filtering and security services in a broadband environment
US7280540B2 (en) * 2001-01-09 2007-10-09 Stonesoft Oy Processing of data packets within a network element cluster
WO2002095543A2 (en) 2001-02-06 2002-11-28 En Garde Systems Apparatus and method for providing secure network communication
US7024460B2 (en) * 2001-07-31 2006-04-04 Bytemobile, Inc. Service-based compression of content within a network communication system
US20030084331A1 (en) 2001-10-26 2003-05-01 Microsoft Corporation Method for providing user authentication/authorization and distributed firewall utilizing same
US20030110379A1 (en) * 2001-12-07 2003-06-12 Tatu Ylonen Application gateway system, and method for maintaining security in a packet-switched information network
US7409707B2 (en) 2003-06-06 2008-08-05 Microsoft Corporation Method for managing network filter based policies
US7260840B2 (en) 2003-06-06 2007-08-21 Microsoft Corporation Multi-layer based method for implementing network firewalls
US7509673B2 (en) 2003-06-06 2009-03-24 Microsoft Corporation Multi-layered firewall architecture
US7559082B2 (en) 2003-06-25 2009-07-07 Microsoft Corporation Method of assisting an application to traverse a firewall

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007043483A (ja) * 2005-08-03 2007-02-15 Nec Corp 情報処理装置、通信制御方法および通信制御用プログラム
JP4507104B2 (ja) * 2005-08-03 2010-07-21 日本電気株式会社 情報処理装置、通信制御方法および通信制御用プログラム
JP2008053818A (ja) * 2006-08-22 2008-03-06 Hitachi Communication Technologies Ltd IPSec処理装置、ネットワークシステム、及びIPSec処理プログラム
JP4634349B2 (ja) * 2006-08-22 2011-02-16 株式会社日立製作所 IPSec処理装置、ネットワークシステム、及びIPSec処理プログラム
JP2017135720A (ja) * 2007-09-26 2017-08-03 ニシラ, インコーポレイテッド ネットワークを管理する及び安全にするためのネットワークオペレーティングシステム
US10749736B2 (en) 2007-09-26 2020-08-18 Nicira, Inc. Network operating system for managing and securing networks
US11683214B2 (en) 2007-09-26 2023-06-20 Nicira, Inc. Network operating system for managing and securing networks
JP2013511209A (ja) * 2009-11-12 2013-03-28 マイクロソフト コーポレーション 証明書属性に基づくipセキュリティ証明書交換
US9912654B2 (en) 2009-11-12 2018-03-06 Microsoft Technology Licensing, Llc IP security certificate exchange based on certificate attributes
JP2014086083A (ja) * 2012-10-19 2014-05-12 Mcafee Inc ネットワークアクセス及び受付制御のためのソーシャルグラフの利用

Also Published As

Publication number Publication date
EP1484886A3 (en) 2005-07-06
US20050010765A1 (en) 2005-01-13
US7761708B2 (en) 2010-07-20
CN1574791A (zh) 2005-02-02
KR20040110981A (ko) 2004-12-31
US7308711B2 (en) 2007-12-11
US20070204154A1 (en) 2007-08-30
EP1484886A2 (en) 2004-12-08

Similar Documents

Publication Publication Date Title
JP2004364315A (ja) 複数のネットワーク・ポリシーを統合するための方法とフレームワーク
JP4521225B2 (ja) ネットワークファイアウォールを実装するための多層ベースの方法
JP4572089B2 (ja) マルチレイヤーファイアウォールアーキテクチャ
JP4459722B2 (ja) ネットワークフィルタベースのポリシーを管理するための方法
US7559082B2 (en) Method of assisting an application to traverse a firewall
US8006297B2 (en) Method and system for combined security protocol and packet filter offload and onload
US20080267177A1 (en) Method and system for virtualization of packet encryption offload and onload
JP5270692B2 (ja) セキュリティ実施ポイントへのセキュリティ・アソシエーション情報の選択的ロードのための方法、装置、およびコンピュータ・プログラム
KR20050062368A (ko) 방화벽 서비스 관리를 위한 객체 모델
WO2005117327A2 (en) A system, method, and computer program product for updating the states of a firewall
US7774847B2 (en) Tracking computer infections
RU2695983C1 (ru) Способ фильтрации защищенных сетевых соединений в цифровой сети передачи данных
JP2018207436A (ja) トラヒック制御装置、方法、およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090814

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100126