JP4572089B2 - マルチレイヤーファイアウォールアーキテクチャ - Google Patents

マルチレイヤーファイアウォールアーキテクチャ Download PDF

Info

Publication number
JP4572089B2
JP4572089B2 JP2004165078A JP2004165078A JP4572089B2 JP 4572089 B2 JP4572089 B2 JP 4572089B2 JP 2004165078 A JP2004165078 A JP 2004165078A JP 2004165078 A JP2004165078 A JP 2004165078A JP 4572089 B2 JP4572089 B2 JP 4572089B2
Authority
JP
Japan
Prior art keywords
layer
packet
filter
firewall
action
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.)
Expired - Fee Related
Application number
JP2004165078A
Other languages
English (en)
Other versions
JP2004362581A (ja
Inventor
ディー.スワンダー ブライアン
ジー.メイフィールド ポール
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 JP2004362581A publication Critical patent/JP2004362581A/ja
Application granted granted Critical
Publication of JP4572089B2 publication Critical patent/JP4572089B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/0227Filtering policies
    • 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/0227Filtering policies
    • H04L63/0236Filtering by address, protocol, port number or service, e.g. IP-address or URL
    • 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/0227Filtering policies
    • H04L63/0254Stateful filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/164Implementing security features at a particular protocol layer at the network layer

Landscapes

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

Description

本発明は一般にコンピュータシステムおよびネットワークセキュリティに関する。より詳細には、本発明は1つまたは複数のネットワーク装置に実装されたファイアウォールアーキテクチャに関する。
ネットワークプロトコルは、データのオープンな交換を介してネットワーク装置間の通信を容易にするように設計されている。データのオープンな交換によって、ネットワーク装置を使用したタスクの達成が大幅に強化されるが、一方で問題ももたらされる。というのは、ネットワークプロトコルは、ネットワークセキュリティ用には設計されておらず、一般にネットワークセキュリティを提供しないからである。ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、イントラネット、インターネットなど公衆ネットワークおよびプライベートネットワークに結合されているコンピュータは、ネットワークに直接的、または間接的に結合されている他のネットワーク装置から悪意のある攻撃を受けやすい。こうした悪意のある攻撃には、データの盗用、サービス拒否(DOS)攻撃、コンピュータウィルスの蔓延などがある。子供による望ましくない、または不適切なWebサイトへのアクセスを制御するなど、コンピュータをネットワークに結合するときに他の関連の問題が生じる。
ファイアウォールは、ポリシーの実装によりネットワーク上のデータ交換を制御する能力を追加すると同時に、一般に悪意のある攻撃から個々のユーザ、ネットワーク装置、およびネットワークを保護するために使用するツールである。ファイアウォールは、ネットワークパケットを検査し、その検査に基づいて、パケットを許可すべきか、逆にパケットがネットワークをさらに横断することを阻止すべきかを判断することによってポリシーを実装する。
ファイアウォールを介して実装されるポリシーは、1つまたは複数のフィルタによって定義される。各フィルタは、フィルタパラメータおよび関連するアクションを含む。フィルタパラメータは、ファイアウォールポリシーの対象となるネットワークパケットを識別するために使用され、メディアアクセス制御(MAC)アドレスなどのハードウェアアドレス、インターネットプロトコル(IP)アドレスなどのネットワークアドレス、伝送制御プロトコル(TCP)などのプロトコルタイプ、ポート番号などの情報を含む。アクションは、フィルタパラメータと一致するパラメータをともなったパケットをどのように扱うべきかを定義する。具体例として、フィルタは、「http://www.foo.com」などのURL(Uniform Resource Locator)アドレスをそのパラメータとして含む。フィルタはさらに、阻止のアクション、すなわちパケットのドロップをそのURLアドレスと関連付ける。ファイアウォールは、パケットを検査し、その検査によってURLアドレス「http://www.foo.com」をパケットに埋め込まれているものと識別したときは、必ずパケットをドロップし、それによってそのパケットがネットワークを横断するのを防ぐ。
ネットワーク装置は、階層化されたネットワークアーキテクチャから成るネットワークスタックを介してパケットを送受信することによってデータを交換する。様々なネットワークアーキテクチャモデルが存在するが、大部分は少なくともアプリケーションレイヤー、トランスポートレイヤー、ネットワークレイヤー、およびリンクレイヤーを含んでいる。ネットワークパケットは、各レイヤーを順次に横断し、各レイヤーの横断中にパケットが処理される。アウトバウンドパケットの場合、アプリケーションレイヤーは、いくつか例を挙げるとハイパーテキスト転送プロトコル(HTTP)、ファイル転送プロトコル(FTP)、および簡易メール転送プロトコル(SMTP)などのアプリケーションプロトコルに従ってデータを処理する。ネットワークレイヤーやトランスポートレイヤーなどの他のレイヤーは、TCPおよびIPヘッダーに埋め込むことによってデータをパケット化する。レイヤーは、インバウンドパケットでは、例えばヘッダーを解析する、あるいはデータをパケット解除する(unpacketize)ことによって逆の処理を行う。いくつかのレイヤーによって実行される階層化された「スタック」アーキテクチャおよび処理機能によって、パケットがネットワークプロトコルスタックを横断する間にパケットパラメータを含むパケットの内容が変更される動的パケット構造が得られる。
ファイアウォールは、階層化されたネットワークスタック内にある検査ポイントでパケットを検査する。一方では、検査ポイントはアプリケーションレイヤーにある。例えば、ファイアウォールは、LSP(Layered Service Provider)として配置される。アプリケーションレイヤーのパケットは、別のネットワーク装置に送信され、または別のネットワーク装置から受信される基礎データを含む。アプリケーションレイヤーでパケットを検査することによって、ファイアウォールは、URLアドレスなどのアプリケーションレイヤーパラメータを識別し、アプリケーションレイヤーパラメータをフィルタパラメータと比較することができる。しかし、IPアドレス、ポート番号、MACアドレスなど他のパケットパラメータは使用できない。というのは、これらは、アウトバウンドパケットに追加されていないか、またはインバウンドパケットから離して解析されているからである。
もう一方では、ファイアウォール検査ポイントは、リンクレイヤーとネットワークレイヤーの間に介在する中間ドライバとして、下位レベルのネットワークスタックに実装される。下位レベルのネットワークスタックのパケットは、インターフェース番号、MACアドレス、IPアドレス、プロトコルタイプ、ポート、ペイロードデータなど、最大数のパラメータを含む。パケットはこうしたパラメータを含んでいるが、パラメータは容易に識別可能にはならない。ファイアウォールは、パケットを受信した後、フィルタパラメータと比較するために、関連するパケットパラメータを解析し、解釈する必要がある。したがって、ネットワークスタックのレイヤーおよびファイアウォールは、パケットの解析機能および解釈機能を重複して行っている。
本発明は、ネットワークスタック内のすべてのレイヤーでネットワークパケットにファイアウォールフィルタを適用できるようにするファイアウォールアーキテクチャを対象とする。アーキテクチャは、ネットワークパケットからのレイヤーパラメータを処理することができる1組のレイヤープロセッサを含む。レイヤーパラメータは、レイヤープロセッサに関連付けられたパラメータであり、レイヤープロセッサがネットワークパケットから解析するパラメータ、ネットワークパケットに追加するパラメータ、そうでない場合はネットワークパケットから導出するパラメータを含む。レイヤープロセッサはさらに、レイヤーパラメータを含む分類要求を発行することができる。
また、アーキテクチャは、レイヤーインターフェース、インストール済みの1組のフィルタ、およびルックアップ構成要素を含む第1のファイアウォールエンジンを含む。レイヤーインターフェースは、分類要求の一部として送信されるレイヤーパラメータを受信する。第1のファイアウォールエンジンルックアップ構成要素は、レイヤーパラメータを使用して、インストールされている1組のフィルタから1つまたは複数の整合フィルタを識別する。整合フィルタのそれぞれは、パケットがネットワークをさらに横断することを許可するか、パケットを阻止するかをレイヤープロセッサに指示するアクションを含む。第1のファイアウォールエンジンは、レイヤーインターフェースを介して少なくとも1つのアクションをレイヤープロセッサに戻す。
本発明の一実施形態では、レイヤープロセッサはパケットコンテキストを維持する。レイヤープロセッサは、前のレイヤープロセッサからパケットコンテキストを受信し、第1のファイアウォールエンジンにパケットコンテキストを送信する。第1のファイアウォールエンジン内のルックアップ構成要素は、パケットコンテキストをレイヤーパラメータとともに使用して、1つまたは複数の整合フィルタを識別する。また、レイヤープロセッサは、レイヤーパラメータを追加することによってパケットコンテキストを変更し、次いで変更されたパケットコンテキストを次のレイヤープロセッサに送信する。
本発明の別の実施形態では、1つまたは複数のコールアウト(callout)がファイアウォールアーキテクチャの一部として含まれる。1つまたは複数のコールアウトモジュールのそれぞれは、パケットロギング機能、インターネットプロトコルセキュリティ(IPSec)検証、および保護者による制限の実行など、(許可および阻止を超える)追加機能を提供する。コールアウトモジュールは、整合フィルタのうちの1つにおいてアクションとして識別されると、パケットに対して実行される。
本発明の別の実施形態では、第2のファイアウォールエンジンが提供される。第2のファイアウォールエンジンは、管理APIを介して、インストールされている1組のフィルタに新しいフィルタを追加する。第2のファイアウォールエンジンは、第2のファイアウォールエンジン内に第1のファイアウォールエンジンのサービスを複製する、フィルタモジュールと呼ばれる第1のファイアウォールエンジンも含む。
本発明の他の機能および利点は、添付の図面を参照して進める以下の実施形態の例の詳細な説明から明らかになる。
添付の特許請求の範囲には本発明の特徴を詳しく記載しているが、添付の図面と併せ読めば、本発明、およびその目的および利点を以下の詳細な説明から最もよく理解できよう。
本明細書ではレイヤーと呼ぶ多レイヤープロセスでのフィルタリングを可能にするファイアウォールアーキテクチャを開示する。アーキテクチャは、オペレーティングシステムにおいて実行されるユーザモードプロセスおよびカーネルモードプロセスを含む。あるいは、ファイアウォールアーキテクチャは、オペレーティングシステムの外部で1つまたは複数のプログラムモジュールで、または単一のオペレーティングシステムモード内で実行される。
カーネルモードプロセスは、プロトコルスタックを含む複数のレイヤー、カーネルファイアウォールエンジン、および1つまたは複数のコールアウトを含む。プロトコルスタックは、アプリケーションレイヤー、トランスポートレイヤー、ネットワークレイヤー、およびリンクレイヤーを含む。必要に応じて、レイヤーをさらにアーキテクチャに追加したり、アーキテクチャから削除する。レイヤーはそれぞれ、前のレイヤーまたはプロセスからネットワークパケットおよび対応するパケットコンテキストを受信することができる要求レイヤー(requesting layer)を形成する。次いで要求レイヤーは、レイヤーAPIを介してカーネルファイアウォールエンジンに分類要求を発行する。分類要求は、要求レイヤーによって受信されるパケット、パケットコンテキスト、および要求レイヤーに関連する1組のレイヤーパラメータを含む。カーネルファイアウォールエンジンは、要求を処理し、アクションを戻す。一例として、アクションは、パケットをどのように扱うか(許可、阻止など)を要求レイヤーに指示する。アクションが許可である場合、要求レイヤーは、レイヤープロトコルに従ってパケットを処理し、レイヤーパラメータを含むようにパケットコンテキストを変更し、パケットおよびパケットコンテキストを次のレイヤーに渡す。アクションが阻止の場合、要求レイヤーは、パケットをドロップし、パケットを次のレイヤーに渡さない。要求レイヤーは、阻止アクションの結果、TCPパケットがドロップされるTCP接続を切断するなど追加の機能を行うことができる。
カーネルファイアウォールエンジンは、レイヤーAPI、インストールされている1組のフィルタ、およびコールアウトAPIを含む。インストールされている1組のフィルタのそれぞれは、1組のフィルタ条件および関連するアクションを含む。カーネルファイアウォールエンジンは、1つまたは複数の整合フィルタを識別することによって要求レイヤーから送信された分類要求を処理する。整合フィルタは、レイヤーパラメータおよびパケットコンテキストと一致するフィルタ条件を有する。整合フィルタが識別されると、これらは、フィルタの優先度の順序で適用される。適用されるフィルタのアクションが許可または阻止である場合、アクションは要求レイヤーに戻される。アクションがコールアウトである場合、要求レイヤーによって発行される分類要求は、整合フィルタの識別とともに、コールアウトモジュールのうちの1つに渡される。コールアウトモジュールは、そのプログラムされた機能を実行し、アクションをカーネルファイアウォールエンジンに戻す。
カーネルファイアウォールエンジンは、少なくとも1つの終了アクション(terminating action)が指定されるまで、整合フィルタをパケットに優先度の順序で適用する。終了アクションが指定されると、そのアクションが要求レイヤーに戻され、整合フィルタはそれ以上適用されない。あるパケットについて整合フィルタが識別されない場合、整合フィルタが見つからなかったことが要求レイヤーに通知され、次いで要求レイヤーは、どのようにパケットを扱うかを決定する。一般に、整合フィルタが識別されない場合、要求レイヤーは、許可アクションが戻されたかのようにパケットを扱う。
典型的なユーザモードプロセスは、ユーザモードファイアウォールエンジンおよび1つまたは複数のポリシープロバイダを含む。ポリシープロバイダは、揮発性または不揮発性メモリ、またはグラフィカルユーザインターフェースなどのツールを介してユーザが入力したものなど適した任意のソースからポリシーを取得する。ポリシーは、1組のフィルタ条件、および関連するアクションを含む、新しいフィルタを提供するための情報のソースである。
また、ユーザモードは、ユーザファイアウォールエンジン内にカーネルファイアウォールエンジンのインスタンスを含み、それによってユーザモードレイヤーを作成することができる。次いでユーザモードレイヤーは、カーネルファイアウォールエンジンのユーザモードインスタンスを使用してフィルタをインストールし、ユーザモード内でのフィルタリングの適用を可能にする1組のパラメータに一致するフィルタを識別する。
本発明の一実施形態では、ファイアウォールエンジンから1組のコールアウトモジュールへのコールアウトインターフェースによって、ファイアウォール機能を事実上無限に拡張することができる。一例として、HTTPコンテキストコールアウトは、許容できるURLアドレスおよび許容できないURLアドレスを識別することによって保護者による制限機能を提供する。IPSecコールアウトは、IPSecを使用することになっているパケットが適切にIPSec処理の対象となっていることを確認する。ロギングコールアウトは、設定された基準を満たすパケットを記録し、それによってパケットのその後の検査が容易になる。侵入検知コールアウトは、既知のアルゴリズムに基づいて不審なパケットを識別する。
図面を参照すると、図中同様の参照番号は同様の要素を指しており、本発明を、適したコンピューティング環境で実施されるものとして説明している。必須ではないが、本発明は、パーソナルコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明されるであろう。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールを、ローカルおよびリモートのメモリ記憶装置に置くことができる。
図1は、本発明を実施するのに適したコンピューティングシステム環境100の例を示している。コンピューティングシステム環境100は、適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。また、コンピューティング環境100を、動作環境100の例に示した構成要素のいずれか1つ、またはその組合せに関連する依存性または必要条件を有しているものと解釈すべきではない。
本発明は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明を使用するのに適したよく知られたコンピューティングシステム、環境、および/または構成の例には、それだけには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境などが含まれる。
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体に置くことができる。
図1を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ110の形で含んでいる。コンピュータ110の構成要素は、それだけには限定されないが、処理ユニット120、システムメモリ130、およびシステムメモリを含む様々なシステム構成要素を処理ユニット120に結合するシステムバス121を含み得る。システムバス121は、様々なバスアーキテクチャの中の任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかの種類のバス構造のうちどんな種類のものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子装置規格化協会(VESA)ローカルバス、およびメザニンバスとしても知られている周辺部品相互接続(PCI)バスなどがある。
コンピュータ110は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含む。コンピュータ可読媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体がある。コンピュータ記憶媒体には、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ110からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。「変調されたデータ信号」という用語は、信号内の情報を符号化するように設定または変更された1つまたは複数のその特徴を有する信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、RF、赤外線、その他の無線媒体などの無線媒体がある。また、上記のどんな組合せでもコンピュータ可読媒体の範囲内に含まれるものとする。
システムメモリ130は、読取り専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132など、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入出力システム133(BIOS)は、例えば起動中など、コンピュータ110内の要素間での情報の転送を助ける基本ルーチンを含み、一般にROM131に格納されている。RAM132は一般に、処理ユニット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に接続される。モニタに加えて、コンピュータは、出力周辺インターフェース195などを介して接続できるスピーカー197、プリンタ196などの他の周辺出力装置を含むこともできる。
コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で操作することができる。リモートコンピュータ180は、別のパーソナルコンピュータ、サーバ、ルーター、ネットワークPC、ピア装置、または他の一般のネットワークノードでよく、一般にパーソナルコンピュータ110に関連して上述した多くまたはすべての要素を含むが、図1にはメモリ記憶装置181のみを示している。図1に示した論理接続は、ローカルエリアネットワーク(LAN)171および広域エリアネットワーク(WAN)173を含むが、他のネットワークを含んでいてもよい。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
LANネットワーキング環境で使用する場合、パーソナルコンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用する場合、コンピュータ110は一般に、モデム172、またはインターネットなどWAN173を介して通信を確立する他の手段を含む。モデム172は、内蔵のものでも外付けのものでもよく、ユーザ入力インターフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク式環境では、パーソナルコンピュータ110に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図1は、それだけには限定されないが一例として、リモートアプリケーションプログラム185をメモリ装置181上に存在するものとして示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
以下の説明では、特に指定のない限り、1つまたは複数のコンピュータによって実行される動作および操作の象徴を参照して本発明を説明する。したがって、コンピュータで実行されると言うこともあるこうした動作および操作は、コンピュータの処理単位による構造化された形式のデータを表す電気信号の操作を含むことは理解されよう。この操作は、データを変換し、またはコンピュータのメモリシステムのいくつかの場所にデータを維持し、これによって当分野の技術者にはよく理解されているようにコンピュータが再構成され、そうでない場合はその動作が変更される。データが維持されるデータ構造は、データの形式で定義された特定の特性を有するメモリの物理位置である。しかし、本発明を上記の文脈で説明しているが、以下に記載する様々な動作および操作をハードウェアでも実施できることを当分野の技術者であれば理解できるので、これに限定されるものではない。
次に図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は、本発明のアーキテクチャに従って実装され、プライベートネットワーク200に結合されているネットワーク装置204、206、208と、パブリックネットワーク202に結合されているネットワーク装置210、212との間で交換されるネットワークパケットを検査する1つまたは1組のプログラムモジュールである。本発明の一実施形態では、ファイアウォール214は、プライベートネットワーク200内でネットワーク装置が送信元および受信先であるローカル向けのネットワークパケットの検査も行う。
ファイアウォール214は、ネットワーク装置208に実装されてプライベートネットワーク200とパブリックネットワーク202の間で交換されるネットワークトラフィックを保護し、制御する。これをエッジファイアウォール(edge firewall)と呼ぶ。あるいは、ファイアウォール214は、ネットワーク装置210に示すように単一のネットワーク装置に実装され、それを保護する。これをホストファイアウォールと呼ぶ。また、ファイアウォールを、同期的に中央管理される1組のホストおよび/またはエッジファイアウォールとして実装することもできる。これを分散ファイアウォールと呼ぶ。ファイアウォール214を実装しているネットワーク装置の配置は、ファイアウォール214が保護することになっているネットワーク装置に向けられるすべてのネットワークトラフィックがファイアウォール214によって検査されるように選択されることが好ましい。
フィルタ216は、ファイアウォール214の一部として実装される。あるいはフィルタ216は、ファイアウォール214からアクセス可能な個別のデータ構造の一部として実装される。ファイアウォール214およびフィルタ216は、パブリックネットワークに結合されているネットワーク装置210、212から発せられる悪意のある攻撃からネットワーク装置204、206、208を保護するように設計されているファイアウォールポリシーを実行する。ファイアウォール214は、保護者による制限、侵入検知、ネットワークパケットのロギング、および他の追加フィルタベースの機能を簡易化するなど、追加の機能も提供する。
各フィルタ216は、1組のフィルタ条件および1つまたは関連するアクションを含む。フィルタ条件は、インターフェース番号、ハードウェアアドレス、ネットワークアドレス、プロトコルタイプ、ポート番号、ペイロードデータなど、ネットワークパケットから解析できる、そうでなければそこから取得できるパラメータおよび情報を含む。1つまたは複数の関連するアクションは、ファイアウォールを実装しているネットワーク装置がフィルタ条件に一致するパケットをどのように扱うべきかを定義する。一般のアクションは、許可、すなわちパケットが引き続きネットワークを横断できること、および阻止、すなわちパケットをドロップすることによってそれ以上のネットワークの横断を防止することなどがある。
ファイアウォール214は、ネットワークを横断するネットワークパケットがネットワーク装置208で受信されると、そのパケットを検査し、パケットパラメータをフィルタ条件と比較することによって、1つまたは複数の整合フィルタを識別する。整合フィルタは、フィルタ条件がパケットパラメータと一致したときに得られる。パケットパラメータは、フィルタ条件同様、パケットから解析され、そうでない場合はそこから取得される情報を含む。ファイアウォールが整合フィルタを識別したとき、フィルタ条件に関連する1つまたは複数のアクションが実行される。
図3は、本発明のファイアウォールアーキテクチャの一実施形態の概要を示す。アーキテクチャは、ネットワークスタックのすべてのレイヤーでパケットをフィルタにかける機能を提供する。ファイアウォールは、フィルタを追加、削除でき、フィルタ競合を識別し、解決する中央管理機能を提供する。ファイアウォールアーキテクチャは、フィルタレイヤーが必要に応じて追加、削除されるという点で拡張可能であり、許可および阻止のアクションを超える特化された機能を含むまで拡張される。本発明は、ファイアウォールおよびファイアウォールフィルタとの特定の関連で説明するが、他のフィルタおよびポリシーを簡易化し、管理するためにも使用される。具体例として、本発明は、サービス品質(QOS)、インターネットプロトコルセキュリティ(IPSec)スイートなどとともに使用するフィルタ、他の暗号化プロトコル、認証プロトコル、鍵管理プロトコルを簡易化し、管理するのに適している。
ファイアウォールアーキテクチャは、ユーザモードプロセス250およびカーネルモードプロセス252を含む。ユーザモードプロセス250およびカーネルモードプロセス252は、ネットワーク装置においてオペレーティングシステムの一部として実行される。オペレーティングシステムのユーザモードプロセス250およびカーネルモードプロセス252が、簡単化のために図示はされていないが、追加の構成要素を含んでいることを当分野の技術者であれば理解できるであろう。あるいは、ファイアウォールアーキテクチャの全部または一部は、オペレーティングシステムの外部で、1つまたは複数のプログラムモジュールまたはアプリケーションプログラムとして、または単一のオペレーティングシステムプロセス内で実行される。
カーネルモードプロセス252は、ネットワークスタック254、本明細書ではカーネルファイアウォールエンジン256と呼ばれる第1のファイアウォールエンジン、および任意選択のコールアウト258を含む。まとめると、カーネルモードプロセス252は、ネットワークパケットについて合フィルタを識別し、既知のプロトコルに従ってパケットを処理し、合フィルタによって指示されているようにパケットに対する他のアクションを実行することによって、設定されたファイアウォールポリシーを実装する。
ネットワークスタック254は、データストリームレイヤー268、トランスポートレイヤー270、ネットワークレイヤー272、およびリンクレイヤー274を含む、本明細書ではレイヤーと呼ぶ複数のレイヤープロセスを備えている。本発明のファイアウォールアーキテクチャは拡張可能であり、必要に応じて追加のレイヤーが動的に追加、削除される。追加されるレイヤーの例には、サーバマスターブロック(SMB)プロトコルに従って実装されるファイルアクセスレイヤー276がある。レイヤーは、ハイパーテキスト転送プロトコル(HTTP)パーサモジュール278など他のプログラムモジュールと連携して動作することができる。
ネットワークスタック254内のレイヤーは、インバウンドおよびアウトバウンドのネットワークパケットを処理する。アウトバウンドネットワークパケットは、ファイアウォールアーキテクチャをネットワーク上に実装しているネットワーク装置から送信されるパケットである。インバウンドパケットは、ファイアウォールアーキテクチャを実装しているネットワーク装置で受信されるパケットである。図3に示したそれぞれの矢印で示すように、インバウンドパケットは、ネットワークスタック254を下から上に横断し、アウトバウンドパケットは、ネットワークスタック254を上から下に横断する。
ネットワークパケットは、ネットワークレイヤーを連続的に横断し、ネットワークレイヤーによって連続的に処理される。既知の技術によれば、ネットワークスタック254の各レイヤーは、前のレイヤーまたはプロセスからパケットを受信し、仕様またはプロトコルに従ってパケットを処理し、処理されたパケットを次のレイヤーまたはプロセスに送信することができる。本発明によれば、ネットワークスタック254の各レイヤーは、パケットコンテキストを維持し、パケットコンテキストを次のレイヤーに渡し、分類要求をカーネルファイアウォールエンジン256に発行し、ファイアウォールポリシーに従ってパケットに対するアクションを起こすこともできる。
パケットコンテキストは、パケットに付随してレイヤーからレイヤーに進むデータ構造である。各レイヤーは、例えばレイヤーがインバウンドパケットから解析する情報、アウトバウンドパケットに追加する情報、そうでない場合はパケットの内容から導出するように設計されている情報など、レイヤーが処理するように設計されている1組のパラメータをコンテキストデータ構造に追加することによってコンテキストを維持する。パケットコンテキストに使用するデータ構造の例は、図5を参照して説明する。
ネットワークスタック254のレイヤーによって実行される操作の1つは、分類要求を発行することによってカーネルファイアウォールエンジンを呼び出すことである。分類要求とは、ネットワークスタック254の1つのレイヤーによる呼出であり、パケットに一致する任意のフィルタの識別と、例えば許可や阻止などをレイヤーに戻すといった関連する任意のアクションとを要求するものである。分類要求を発行するレイヤーを、本明細書では要求レイヤーと呼ぶ。また、各レイヤーは、カーネルファイアウォールエンジン256によって戻されるパケットに対するアクションを起こす。
カーネルファイアウォールエンジン256は、レイヤーAPI280、インストールされている1組のフィルタ282、およびコールアウトAPI284を含む。カーネルファイアウォールエンジン256は、(1)ファイアウォールポリシーを定義するインストールされている1組のフィルタ282を維持すること、(2)ネットワークスタック254内のレイヤーから分類要求を受信すること、(3)分類要求に基づいて1つまたは複数の整合フィルタを識別すること、(4)整合フィルタに基づいてパケットに対して起こすべき任意のアクションを要求レイヤーに伝えることを含む様々な機能を実行する。
インストールされている1組のフィルタのそれぞれは、1組のフィルタ条件および1つまたは複数の関連するアクションを含む。図2を参照して説明したように、フィルタ条件は、関連するフィルタアクションの対象となるネットワークパケットを識別する。インストールされている1組のフィルタ282で指定されているアクションには、許可および阻止がある。追加の機能は、任意選択のコールアウト258によって追加される。フィルタの形式の例については、図4を参照して説明する。
レイヤーAPI280は、ネットワークスタック254のレイヤーとカーネルファイアウォールエンジン256の間にインターフェースを提供する。レイヤーAPI280を介して、要求レイヤーは、分類要求をカーネルファイアウォールエンジン256に発行する。分類要求は、要求レイヤーによって受信されたパケット、要求レイヤーによって受信されたパケットコンテキスト、およびレイヤーパラメータを含む。レイヤーパラメータは、例えば要求レイヤーによって追加または解析することによって処理されるパケットパラメータである。具体例として、ソースおよび宛先のインターネットプロトコル(IP)アドレスは、IPプロトコルを実装するときにネットワークレイヤー272によって送信されるレイヤーパラメータである。またレイヤーパラメータは、パケットに追加されるパケットパラメータまたはパケットから解析されるパケットパラメータを超える情報を含むことができる。具体例として、レイヤーパラメータは、ローカルアドレスタイプを含む。ローカルアドレスタイプは、IPレイヤーによって決定され、分類要求の一部として送信される。ローカルアドレスタイプには、ユニキャスト、ブロードキャスト、マルチキャスト、エニーキャストなどがある。レイヤーAPI280の具体的な一実装形態については、図6を参照して説明する。
任意選択で、コ―ルアウト258を使用して、許可および阻止のフィルタアクションを超える追加の機能を実施する。コールアウトは、カーネルファイアウォールエンジン256が、関連するアクションとしてコールアウトモジュールのうちの1つへのコールアウトを含むパケットの整合フィルタを識別するときに実行される。カーネルファイアウォールエンジンは、要求レイヤーによって発行された分類要求、すなわち全パケット、レイヤーパラメータ、およびパケットコンテキストを整合フィルタの識別とともに、コールアウトAPI284を介してコールアウトモジュールに送信する。本発明の一実施形態では、ファイアウォールアーキテクチャは、基本的な1組のコールアウト258を含む。追加のコールアウトは、レイヤーのように、必要に応じて拡張可能なファイアウォールアーキテクチャに追加される。コールアウトAPI284の具体的な一実装形態については、図6を参照して説明する。
ユーザモードプロセス250は、ユーザファイアウォールエンジン260と呼ばれる第2のファイアウォールエンジン、および「PP1」、「PP2」、「PP3」として識別される1つまたは複数のポリシープロバイダ262を含む。ポリシープロバイダ262は、ファイアウォールポリシー、すなわちインストールされているフィルタ282をファイアウォールアーキテクチャに追加するプロセスである。このタスクの達成には、任意のプロセスが使用される。一例にはレガシーIPSecポリシーサービス(legacy IPSec policy service:LIPS)がある。レガシーIPSecポリシーサービスは、カプセル化セキュリティプロトコル(Encapsulating Security Protocol:ESP)、認証ヘッダープロトコル(Authentication Header Protocol:AH)などのIPSecプロトコルを使用することになっているネットワークトラフィックを定義するフィルタを追加する。具体例として、レガシーIPSecポリシーは、要求していないすべてのインバウンドパケットをESPプロトコルに従って暗号化する必要があることを知らせるファイアウォールポリシーを追加する。ポリシーはさらに、平文の要求していない任意のインバウンドパケット、すなわち暗号化されていないパケットを阻止すべきであることを規定する。ポリシープロバイダ262は、揮発性または不揮発性メモリ内のデータ、あるいは管理者またはシステムユーザがポリシーを直接入力することができるグラフィカルユーザインターフェース(GUI)など、適した任意のソースからポリシーを取得する。ユーザファイアウォールエンジン260は、ポリシーを新しいフィルタに変換する。すなわち、フィルタ条件および関連するアクションに関してポリシーを定義し、インストールされている1組のフィルタ282に新しいフィルタを追加する。
また、ユーザファイアウォールエンジン260は、フィルタ調停機能および競合解決機能を実行する。ポリシープロバイダ262がユーザモードファイアウォールエンジン260に新しいポリシーを提供するとき、ユーザファイアウォールエンジンは、新しいポリシーに起因する新しいフィルタが、インストールされているフィルタ282の中のいずれかと競合するかどうかを判断する。
アーキテクチャはさらに、ユーザモードファイアウォールエンジン260とカーネルファイアウォールエンジン256の間のインターフェースを形成するフィルタエンジンAPI266を含む。フィルタエンジンAPI266は、ユーザファイアウォールエンジン260が、インストールされている1組のフィルタ282に新しいフィルタを追加し、またはそこからフィルタを削除し、フィルタ競合を検出でき、解決できるようにインストールされているフィルタ282を検査するための機構を提供する。また、ポリシープロバイダ262からアクセス可能な管理API290は、アーキテクチャにフィルタを追加し、そこからフィルタを削除する機構を提供する。
ユーザモードファイアウォールエンジン260は、フィルタモジュール294も含む。フィルタモジュール294は、ユーザモード250でのカーネルファイアウォールエンジン256のインスタンスである。ユーザモードファイアウォールエンジン260内のフィルタモジュール294のインスタンスによって、ユーザファイアウォールエンジン260は、本明細書ではユーザモードレイヤー282と呼ばれる1つまたは複数のユーザモードレイヤープロセスに対してカーネルファイアウォールエンジン256のサービスを複製することができる。ユーザモードレイヤー282は、カーネルモードレイヤーが作成されたのと同じように追加される。フィルタモジュール294は、カーネルファイアウォールエンジン256のユーザモードのインスタンスであるため、本明細書で記載したカーネルモードエンジン256の任意の機能は、フィルタモジュール294にも適用されることを理解されよう。
キーイングモジュールAPI288は、ユーザポリシーエンジン260とキーイングモジュール296の間のインターフェースを提供する。キーイングモジュールAPI288は、SAを確立する必要があることをキーイングモジュールに知らせるために使用する。
ファイアウォールアーキテクチャは、起動時間ポリシー286およびフェールセーフポリシー264を含む。起動時間ポリシー286およびフェールセーフポリシー264は、ネットワーク装置が初期化されているとき、例えばオンになった、リセットされた、再起動されたときなどシステムが移行状態の間に、インストールされている基本的な1組のフィルタ282を提供するために実装される。移行状態の間、ユーザモード250は確立されておらず、ポリシープロバイダ262およびユーザファイアウォールエンジン260を介してフィルタをインストールすることができない待ち時間がある。その結果、ネットワーク装置は、例えば要求していないインバウンドパケットなど、悪意のある攻撃を受けやすい。起動時間ポリシー286は、カーネルモード252内にあり、ユーザモード250が確立される時間より前にカーネルファイアウォールエンジン256にロードされる。起動時間ポリシー286は、移行状態の間システムを保護するのに適した任意のフィルタ条件および関連するアクションを提供するように設定可能な、インストールされている基本的なフィルタ282を提供する。起動時間ポリシー286の一例には、インバウンドおよびアウトバウンドのすべてのネットワークパケットを阻止するものがある。
ユーザモード250が確立すると、移行状態は、ポリシープロバイダ262がポリシーを識別し、インストールされているフィルタ282をカーネルファイアウォールエンジン256に追加しようとしている間続く。ユーザモード250が確立すると、ユーザファイアウォールエンジン260は、まず、ポリシープロバイダ262が任意のポリシーを受諾する前にフェールセーフポリシー264をカーネルファイアウォールエンジン256にロードする。次いで起動時間ポリシー286が無効になる。起動時間ポリシー286と同様、フェールセーフポリシー264は、ポリシープロバイダおよびユーザファイアウォールエンジンが依然としてフィルタのインストールの最中である移行状態の間、システムを攻撃から保護するように設計されている基本的なフィルタである。ポリシープロバイダ262がそれぞれのフィルタをネットワーク装置に正常にインストールすると、フェールセーフポリシー264は無効になる。
次に図4を参照して、インストールされている1組のフィルタ282について説明する。インストールされている1組のフィルタ282の各フィルタ310は、フィルタID312、重み314、1つまたは複数のアクション316、ポリシーコンテキスト328、および1組のフィルタ条件318を含む複数のフィールドを有する。フィルタID312は、一意の識別をフィルタに提供する。フィルタID312は、例えばカーネルファイアウォールエンジン256が整合フィルタ情報をユーザファイアウォールエンジン260およびコールアウト258に戻すための手段として使用される。本発明の一実施形態では、フィルタは、ネットワークスタック254内のレイヤーのうちの1つに割り当てられる。フィルタID312は、カーネルファイアウォールエンジン256によってどのフィルタがどのレイヤーに割り当てられるかを追跡するために使用する。
重みフィールド314は、フィルタ310の優先度を識別する値を含む。重みフィールド314内の値が高くなれば、それだけフィルタの優先度が高くなる。フィルタの優先度は、整合フィルタがカーネルファイアウォールエンジン256によってパケットに適用される順序を決定する。
本発明の一実施形態では、優先度の最も高い、すなわち重み値の最も高いフィルタが最初に適用され、次いで次に優先度の高いフィルタが適用され、以下同様に、終了アクションを備える整合フィルタに出会うまで続けられる。終了アクションについては、以下で詳しく説明する。終了アクションを備える整合フィルタが適用されると、カーネルファイアウォールエンジン256は、整合フィルタの適用を停止する。したがって、終了アクションが適用された後は、優先度のより低い整合フィルタで指定されたアクション316はパケット上で行われない。あるいは、ファイアウォールエンジン256は、単一の整合フィルタを識別し、単一の整合フィルタから1組のアクションを戻す。
1組のフィルタ条件318は、パケットがフィルタ310と一致するかどうかを決定する。各フィルタ条件318は、型320、データ322、およびレイヤーID:フィールドID324を含む。型320は、対応するデータ322に含まれる変数の長さおよび数を定義する。アーキテクチャは、Byte、Short、Long、8Bytes、String、Internet Protocol version 4(IPv4)Address、Internet Protocol version 6(IPv6)Address、IPv4 Address plus Mask、IPv6 Address plus Mask、Address Rangeなど事前に定義されている既知の変数型を提供する。
データフィールド322は、型に一致するデータを含む。例えば、型がIPv4 Addressの場合、データフィールド322の許容値は、ドット付き10進数表記で表される00.00.00.00から255.255.255.255までの範囲内の32ビットの数字である。場合によっては、型320によってデータフィールド322に複数の値が提供される。Address Range、IPv4 Address plus Mask、およびIPv6 Address plus maskの型によって、IPアドレスの最初と最後の範囲を定義する2つのIPアドレス値が可能になる。柔軟性を最大にするために、アーキテクチャは、ユーザ定義された型も許可する。あるいは、追加の型を手動でシステムアーキテクチャに追加する。
レイヤーID:フィールドID324は、発信レイヤー、および発信レイヤーからのパラメータをそれぞれ識別するために使用する。発信レイヤーおよび発信レイヤーからのパラメータは、パケットパラメータ、すなわち整合フィルタを識別するときにデータ322が比較されるレイヤーパラメータおよびパケットコンテキストを定義する。発信レイヤーは、ネットワークスタック内のレイヤーを識別する。発信レイヤーからのパラメータは、発信レイヤーに関連する特定のパラメータを識別する。具体例をフィルタ条件326によって示す。型はIPv4であり、それによってデータ322が32ビットのIPアドレスであることを示す。レイヤーIDは「IP」であり、32ビットの数字がIP、すなわちネットワークレイヤーパラメータであることを表す。フィールドIDは、「Sc IP Addr」であり、この例ではソースIPアドレスを示す。データフィールド322に提供されるIPアドレスは、「123.3.2.1」であり、そのソースIPアドレスを備える任意のパケットは、フィルタ条件を満たし、それによってフィルタに一致することを示す。フィルタ310は、複数のフィルタ条件318を含むことができ、この場合、すべてのフィルタ条件が満たされる場合のみ、パケットはフィルタ310に一致する。
フィルタ310のアクション316は、許可、阻止、またはコールアウトである。フィルタ310のアクション316が許可または阻止であり、パケットがフィルタ310に一致する場合、許可または阻止のアクションは、カーネルファイアウォールエンジン256によって要求レイヤーに戻される。アクション316がコールアウトの場合、カーネルファイアウォールエンジン256は、全パケット、レイヤーパラメータ、コンテキストおよび整合フィルタの識別を含むそれ自体の分類要求を指定されたコールアウトモジュール258に発行する。コールアウトモジュール258は、侵入検知など、パケットに対してプログラムされたその機能を実行する。コールアウトは、アクション(許可または阻止)をカーネルファイアウォールエンジンに戻し、カーネルファイアウォールエンジンは、要求レイヤーにアクションを中継して送る。コールアウトは、カーネルファイアウォールエンジン256を介して同じように要求レイヤーに戻されるパケットコンテキストの維持を行うこともできる。アクションは、ファイアウォールポリシーが存在しないことを示すヌル値などの値でもよい。
アクションには、終了または非終了が指定される。アクションが終了である場合、パケットに対してアクションが識別されると、そのアクションは、要求レイヤーに戻され、フィルタはそれ以上パケットに適用されない。アクションが非終了である場合、パケットに対する終了アクションが識別されるまで、さらにフィルタ検索が続行する。デフォルトとして、許可および阻止に終了アクションが指定されている。
ポリシーコンテキスト328は、セキュリティポリシーやQOSポリシーなど、ファイアウォールポリシー以外のポリシーを格納するために使用する。ポリシーコンテキストは、適したデータ構造であればどんなものでもよい。例えばポリシーコンテキストは、ポリシーコンテキストを追加したプロセスによって解釈される64ビットの数字である。ポリシーコンテキストおよび/またはアクションは、ヌル値とすることができる。
図5は、ネットワークスタック254のレイヤーおよびコールアウトモジュール258によって維持され、それらに渡されるパケットコンテキストに使用するデータ構造330の例を示す。パケットコンテキスト330は、レイヤーを横断する間インバウンドまたはアウトバウンドのネットワークパケットに付随し、336〜340とラベル付けされた1つまたは複数のエントリを含む。各エントリは、レイヤーID:フィールドID332および対応する値334を含む。
レイヤーID:フィールドID332は、フィルタ310(図4)のフィルタ条件318の一部として提供されているレイヤーID:フィールドID324と同じ意味を有する。つまり、レイヤーID:フィールドID332は、値フィールド334内のデータについての発信レイヤー、および発信レイヤーからのレイヤーパラメータを識別する。値フィールド334は、特定のレイヤーパラメータを含む。
具体例として、エントリ336は、レイヤーID:フィールドID332「NDIS:Src.MAC Addr」を含む。「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は、実際の宛先IPアドレス「123.3.2.1」を含む。
本発明の基礎となるファイアウォールアーキテクチャについて説明してきたが、本明細書に記載した基礎となるファイアウォールアーキテクチャを使用して実行されるシステムの機能インターフェースおよび方法の例に注目する。機能インターフェースが複数のアプリケーションプログラミングインターフェース(API)として実装される。APIは、図6および図7に示すように、レイヤーAPI280、コールアウトAPI284、フィルタエンジンAPI266、およびキーイングモジュールAPI288を含む。
レイヤーAPI280は、ネットワークスタック254の各レイヤーとカーネルファイアウォールエンジン256の間のデータ交換を容易にする。図に示すように、レイヤーAPI280は、Classifyメソッド402、Add Layerメソッド404、およびDelete Layerメソッド406を含む。レイヤーAPI280は、フィルタモジュール294内で、ユーザモードレイヤーとフィルタモジュール294の間の通信を容易にするために実行することもできる。
Classifyメソッド402は、要求レイヤーによって使用されて、レイヤーパラメータ、要求レイヤーが受信したパケット、およびパケットコンテキストをカーネルファイアウォールエンジン256に送信する。カーネルファイアウォールエンジン256は、(1)要求レイヤーからのレイヤーパラメータ、および(2)パケットコンテキストエントリを、要求レイヤーに割り当てられる各フィルタ310内のフィルタ条件318と比較して、整合フィルタを識別する。以下は、Classifyメソッドの実装の例である。以下のメソッドはデータ値を受信する、または戻すものとして説明していることは理解されよう。既知のプログラミング技術によれば、こうしたメソッドは、実際のデータ値の代わりに、データ値へのポインタを使用することができる。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
LayerIdは、分類要求を発行するネットワークレイヤー、すなわち要求レイヤーを識別する。図3を参照すると、レイヤーIDは、デ―タストリームレイヤー268、トランスポートレイヤー270、ネットワークレイヤー272、またはリンクレイヤー274としてレイヤーを識別する。他のレイヤーをシステムに追加した場合、それも有効である。例えばSMBレイヤー276を追加すると、SMBレイヤーはそれ自体の一意の識別を有する。本発明のファイアウォールアーキテクチャによって、ネットワークスタック254の1つのレイヤーにおける複数のプロトコルの実装がさらに可能になる。例えば、スタックが2つのトランスポートレイヤー270を有している場合、第1のトランスポートレイヤーは、TCPプロトコルを使用し、第2のトランスポートレイヤーはUDPプロトコルを使用する。ユーザモードレイヤー282を追加して、それによって有効なレイヤーを形成することもできる。
pInFixedValuesは、要求レイヤーによって処理されるレイヤーパラメータの一部を含む。pInFixedValuesは、パケットコンテキストエントリとともにフィルタ条件と比較されて、パケットがフィルタと一致するかどうかが判断される。レイヤーごとにpInFixedValuesに含まれているデフォルトのレイヤーパラメータの例を次の表Aに示す。このアーキテクチャの利点はそのレイヤーからアクセス可能な任意の値をレイヤーが使用できることなので、以下の値は例にすぎない。
Figure 0004572089
pInContextは、要求レイヤーで受信されたコンテキストデータ構造330(図5)を含む。カーネルファイアウォールエンジン256は、パケットコンテキストをレイヤーパラメータとともに使用して、一致するパケットを識別する。
pPacketは、要求レイヤーによって受信された全パケットを含む。カーネルファイアウォールエンジン256は、整合フィルタを識別するのにpPacketを使用しない。上述したように、カーネルファイアウォールエンジン256は、pInFixedValuesおよびpInContextを使用して整合フィルタを識別する。pPacketは、Classifyメソッドに含まれ、これにより、カーネルファイアウォールエンジン256は、整合フィルタでアクション316として識別された1つまたは複数のコールアウトモジュール258にそれを送信できる。pActionTypeは、要求レイヤーに戻されるアクション316を含む。戻されるアクション316は、整合フィルタで識別される許可または阻止であるか、整合フィルタによって実行されるコールアウトモジュールである。
pOutContextは、ポリシーコンテキストデータを含む。上述したように、ポリシーコンテキストは、IPSec、QOS、および他の非ファイアウォールフィルタベースのポリシーに関連するネットワークポリシーを簡易化するために使用する。
Add Layer404メソッドおよびDelete Layer406メソッドは、それぞれファイアウォールアーキテクチャへのレイヤーの追加、ファイアウォールアーキテクチャからのレイヤーの削除のために使用する。以下は、Add Layer404メソッドの形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
pLayerldは、追加されるレイヤー、すなわちAdd Layerメソッドを実行するレイヤーに戻される一意のレイヤー識別値である。
以下は、Delete Layer406メソッドの形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
Layerldは、削除されるレイヤー、すなわちDelete Layerメソッドを実行するレイヤーを識別する。
コールアウトAPI284は、カーネルファイアウォールエンジン256とコールアウト258の間のデータ交換を容易にする。コールアウトAPI284は、Classifyメソッド410、Notifyメソッド412、Register Calloutメソッド414、およびDeregister Calloutメソッド416を含む。コールアウトAPI284のClassifyメソッド410は、整合フィルタデータも含んでいることを除いてレイヤーAPI280のClassifyメソッド402と似ている。以下は、コールアウトの実行に使用するClassifyメソッド410の形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
fixedValuesは、要求レイヤーから送信されたレイヤーパラメータを含む。fixedValuesは、レイヤーAPI280のClassifyメソッド402の一部として送信されるpInFixedValuesデータ中の要求レイヤーによって提供されるデータと同じものである。
wfpContextは、コンテキストデータ構造330(図5)を含む。このデータは、レイヤーAPI280のClassifyメソッド402の一部として送信されるpInContext中の要求レイヤーによって送信されるデータと同じものである。
packetは、要求レイヤーによって受信された全パケットを含む。このデータは、レイヤーAPI280のClassifyメソッド402の一部として送信されるpPacket中の要求レイヤーによって送信されるデータと同じものである。
matchedFilterは、コールアウトを要求するフィルタを識別する。一般に、整合フィルタは、コールアウトAPI284のClassifyメソッド410を開始する整合フィルタ310のフィルタID312によって識別される。
pActionTypeは、コールアウト258からカーネルファイアウォールエンジン256に戻されるアクションを含む。pActionTypeは、許可または阻止の場合、レイヤーAPI280によって戻されるpActionTypeとして要求レイヤーに戻される。また、コールアウトは、パケットに整合フィルタを引き続き適用することをカーネルファイアウォールエンジン256に指示する続行アクションを戻すことができる。
pOutContextは、セキュリティまたはQOSポリシーデータなどのポリシーコンテキストデータを含む。
Notifyメソッド412は、そのアクション316の1つとしてコールアウトモジュール258を識別するインストールされている1組のフィルタ282にフィルタ310が追加されたとき、またはそこからフィルタ310が削除されたときにコールアウトに知らせるために使用する。notifyは、カーネルファイアウォールエンジン256によって実行されたときにコールアウト258が使用するバッファの割り当ておよび割り当て解除など必要な任意のアクションを起こす機会をコールアウトに提供する。以下は、Notifyメソッドの形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
notifyは、フィルタが追加されるか、削除されるかを示す数値を含む。例えば、値1はフィルタが追加されることを示し、値2はフィルタが削除されることを示す。
filterは、一意の値によって追加または削除されるフィルタを示す。これは、フィルタ310の一部として含まれているフィルタID312を提供することによって達成できる。
callout Registrationメソッド414およびcallout Deregistrationメソッド416は、それぞれコールアウトモジュールを追加、および削除するために使用する。Registrationメソッド414の形式の例は以下の通りである。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
callout Idは、登録するコールアウトモジュールの一意の識別を提供する。
calloutは、ドライバサービス名、装置名、およびコールアウトのClassify関数およびNotify関数へのポインタなど任意のコールアウト固有の情報を提供する。
sdは、コールアウトのセキュリティ記述子を提供する。セキュリティ記述子は、どのプロセスがコールアウトを変更し、削除できるかを指定するアクセスコントロールリスト(ACL)を提供する。
callout deregistrationメソッド416の形式の例は、以下の通りである。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
callout Idは、削除すべきコールアウトの一意のIDである。
フィルタエンジンAPI266は、ユーザモードファイアウォールエンジン260とカーネルモードファイアウォール256エンジンの間のデータ交換を容易にする。図に示すように、管理API266は、Add Filterメソッド418、Delete Filterメソッド420、Enum Layerメソッド422を含む。また、フィルタエンジンAPI266のメソッドは、管理API290の一部としても提供される。
Add Filterメソッド418およびDelete Filterメソッド420は、それぞれインストールされている1組のフィルタ282への新しいフィルタの追加、インストールされている1組のフィルタ282からの既存のフィルタの削除のために使用する。以下は、Add Filterメソッド418の形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
Layerldは、フィルタが割り当てられるレイヤーを識別する。
pFilterは、インストールされている1組のフィルタ282に追加されるフィルタ310である。
以下は、Delete Filterメソッド420の形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
Layerldは、フィルタが割り当てられるレイヤーを識別する。
pFilterは、インストールされている1組のフィルタから削除されるフィルタである。
Enum Layerメソッド422は、ユーザファイアウォールエンジン260が1組の基準と一致するすべてのフィルタを識別するための機構を提供する。これによって、フィルタエンジンAPIは、フィルタの調停および競合の解決のために競合するフィルタを識別することができる。以下は、Enum Layerメソッド422の形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
pEnumTemplateは、戻されるべきフィルタを定義するデータ構造を含む。例えばこれは、フィルタが戻されるためにフィルタ条件が一致しなければならないパラメータを含む。
pMatchCountは、指定されたpEnumTemplateに基づくフィルタの一致数を含む。
pEnumHanldeは、一致したフィルタエントリへの参照を含む。
キーイングモジュールAPI288は、キーイングモジュールとユーザファイアウォールエンジン260の間のインターフェースを提供する。キーイングモジュールAPI288は、IPSec SA Acquireメソッド430、Expire Notifyメソッド432、IPSec SA Acquire Completeメソッド434、Keying Module Registerメソッド436、Keying Module Deregisterメソッド438、IPSec Inbound Get SPIメソッド440、Add Inbound SAメソッド444、Add Outbound SAメソッド446、Inbound SA Expireメソッド448、およびKeying Module Initiateメソッド350を含む。キーイングモジュールAPI288は、Classifyメソッド402、Add Layerメソッド404、およびDelete Layerメソッド406など、レイヤーAPIに関して上述したメソッドを含むこともできる。
キーイングモジュールAPIを使用すると、開始側コンピュータおよび応答側コンピュータによって使用される、例えばIPSecによって定義される既知のセキュリティプロトコルの使用が容易になる。IPSecは、AHやESPなどのプロトコルを含む。ESPプロトコルは、暗号機構を使用して整合性、ソース認証、およびデータの機密性を提供する認証および暗号化プロトコルである。AHプロトコルは、パケットヘッダーにハッシュ署名を使用してパケットデータの整合性および送信者の真正さを検証する認証プロトコルである。
IKEプロトコルは、開始側コンピュータおよび応答側コンピュータがAHプロトコルおよびESPプロトコルとともに使用するセキュリティ設定をネゴシエートするための方法を提供する。ネゴシエートされたセキュリティ設定は、セキュリティアソシエーション(SA)と呼ばれるデータ構造を形成する。SAは、ESPまたはAHによって使用される認証アルゴリズム、暗号化アルゴリズム、鍵、および鍵の寿命などのパラメータを定義してIPパケットの内容を保護する。ESPおよびAHは、確立されたSAを必要とするため、IKEネゴシエーションは、開始側および応答側のコンピュータがESPまたはAHプロトコルを使用する前に実行される。所与のSAは、セキュリティパラメータインデックス(SPI)として知られる値によって識別される。
開始側コンピュータおよび応答側コンピュータのそれぞれは、IPSecポリシーに基づいて、開始側コンピュータと応答側コンピュータの間で送信されるデータが暗号化または認証を必要とするかどうかを決定するIPSecドライバを含む。IPSecポリシーは、ネットワーク装置がどのようにIPSecを使用するかを定義する1組のフィルタであり、フィルタリスト、認証メソッド、および他の情報を含む。本発明の一実施形態では、IPSecポリシーは、カーネルファイアウォールエンジンまたはフィルタモジュール294にインストールされている1組のフィルタに含まれるフィルタによって定義される。パケットに適用されるポリシーは、Classifyメソッドを使用して整合フィルタを識別するキーイングモジュールレイヤーを呼び出すことによって識別される。
IPSec SA Acquireメソッド430は、(クライアントプロキシを介して)ユーザファイアウォールエンジン260によって呼び出されて、ドライバ取得または外部開始要求をキーイングモジュールレイヤーとして実装されているユーザモードレイヤー282に渡す。キーイングモジュールレイヤーは、この呼出を戻し、非同期にネゴシエーションを行う。キーイングモジュールレイヤーがネゴシエーションを完了すると、キーイングモジュールレイヤーは、IPSec SA Acquire Completeメソッド434を呼び出して、ネゴシエーションが完了したことをユーザポリシーエンジン260に通知する。以下は、IPSec SA Acquireメソッドの形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
ipsecContextは、acquireを追加されるSAと連結するハンドルである。
acquireは、IKEなど既知のプロトコルに従ってSAをネゴシエートするために必要な情報を含む。
inboundSAspiは、インバウンドSAに使用するSPIを含む。
Expire Notifyメソッド432は、インバウンドSAを追加したキーイングモジュールレイヤーに期限切れ通知を渡すために呼び出される。以下は、Expire Notifyメソッドの形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
expireNotifyは、期限切れのSAを識別する情報を含む。例えば、アウトバウンドSAの場合、SPIが提供される。
IPSec SA Acquire Complete434メソッドは、キーイングモジュールレイヤーによって呼び出されて、ネゴシエーションが終了し、すべてのSAが追加された後、またはエラーが検出された後に、ユーザファイアウォールエンジンのコンテキストを閉じる。このメソッドが実行された後、キーイングモジュールレイヤーは、他の任意のAPIメソッドにipsecContextを再利用しない。以下は、IPSec SA Acquire Completeメソッドの形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
engineHandleは、ユーザファイアウォールエンジン260へのハンドルを提供する。
ipsecContextは、IPSec Acquireメソッドによりユーザファイアウォールエンジンによって渡されたコンテキストである。
statusは、SAネゴシエーションの状態および他の詳細を提供する。acquireがFwpKeyingModulelnitiate0を介して外部で開始された場合、ユーザファイアウォールエンジン260によってstatusが戻される。
Keying Module Registerメソッド436は、キーイングモジュールレイヤーによって呼び出されてユーザファイアウォールエンジン260にキーイングモジュールを登録し、その関数ポインタを渡す。以下は、Keying Module Registerメソッドの形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
engineHandleは、ユーザファイアウォールエンジン260へのハンドルを提供する。
keyingModuleIDは、キーイングモジュールレイヤーの一意のIDである。
keymodlnfoは、プロセスIPSec SA Acquire関数やプロセスIPSec SA Expire関数へのポインタなど、キーイングモジュールレイヤーに関する登録情報を含む。
Keying Module Deregisterメソッド438は、キーイングモジュールレイヤーによって呼び出されて、キーイングモジュールをユーザファイアウォールエンジン260から登録解除する。以下は、Keying Module Deregisterメソッドの形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
engineHandleは、ユーザファイアウォールエンジン260へのハンドルである。
keyingModuleIDは、キーイングモジュールレイヤーの一意のIDである。
IPSec Inbound Get SPIメソッド440は、キーイングモジュールレイヤーによって呼び出されて新しいインバウンドSAのSPIを取得する。IPSec Inbound Get SPIメソッド440は、通常、キーイングモジュールレイヤーが応答側ネットワーク装置で実行されるときに使用する。以下は、IPSec Inbound Get SPIメソッドの形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
engineHandleは、ユーザファイアウォールエンジン260へのハンドルである。
ipsecTrafficDescriptionは、初期段階の(larval)インバウンドSAを作成する5タプル記述である。5タプルは、ソースおよび宛先のIPアドレス、ソースおよび宛先のポート、およびトランスポートレイヤープロトコルタイプを含む。
udpEncapInfoは、初期段階のSAを作成するUDPカプセル化データである。UDPカプセル化とは、セキュリティプロトコルに従って書式化されたパケットを暗号化されていないUDPパケットに埋め込む既知の方法である。
inboundSpiは、インバウンドSAのSPIである。
Add Inbound SAメソッド444は、キーイングモジュールレイヤーによって呼び出されてインバウンドSAを追加する。すなわち、初期段階のSAを更新する。ユーザファイアウォールエンジン260は、SAにSPIを使用して、この呼出をその内部状態にマップし、SAに対してIPSecドライバまでioctlを実行する。以下は、Add Inbound SAメソッドの形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
engineHandleは、ユーザファイアウォールエンジン260へのハンドルである。
inboundSAは、インバウンドSAを含む。
Add Outbound SA446メソッドは、キーイングモジュールレイヤーによって呼び出されてアウトバウンドSAを追加する。ユーザファイアウォールエンジンは、インバウンドSPIパラメータを使用して、この呼出をその内部状態にマップし、SAに対してIPSecドライバまでioctlを実行する。以下は、Add Outbound SAメソッドの形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
engineHandleは、ユーザファイアウォールエンジン260へのハンドルである。
inboundSpiは、アウトバウンドSAと対のインバウンドSAのSPIである。
outboundSAは、アウトバウンドSAを含む。
Inbound SA Expireメソッド448は、キーイングモジュールレイヤーによって呼び出されて以前追加されたインバウンドSAを無効にする。以下は、Inbound SA Expireメソッド448の形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
engineHandleは、ユーザファイアウォールエンジン260へのハンドルである。
expireは、SAを無効にするためのデータを含む。
Keying Module Initiateメソッド450は、RAS、Winsock APIなど既知の外部アプリケーションによって呼び出されて、アプリケーションがそのネットワークトラフィックの送信を開始する前にキーイングモジュールレイヤーを開始し、SAをセットアップする。ユーザファイアウォールエンジン260は、RPC呼出を非同期に保留し、IPSecドライバからSPIを取得し、acquireを適切なキーイングモジュールに渡す。キーイングモジュールレイヤーがFwpIPSecSAAcquireComplete0を呼び出すと、ユーザファイアウォールエンジンは、非同期RPCをネゴシエーション状態で完了する。以下は、Keying Module Initiateメソッドの形式の例である。
Figure 0004572089
示したパラメータの特徴を以下に述べる。
engineHandleは、ユーザファイアウォールエンジン260へのハンドルである。
acquireは、SAのネゴシエーションに必要なデータを含む。
waitEventは、ネゴシエーション状態が使用可能なときにトリガされるイベントへのハンドルである。クライアント、すなわち呼出側外部アプリケーションは、ネゴシエーションの完了を待つことに関係がない場合、このパラメータをNULLに設定することができる。非同期RPC呼出が完了すると、内部的に、クライアントプロキシはこのイベントを任意選択でRPCに渡し、イベントを設定するようRPCに要求する。
negotiationStatusは、ネゴシエーションの結果を含む。waitEventがNULLである場合、negotiationStatusはNULLである。そうでない場合、waitEventがトリガされるまでnegotiationStatusは有効なままである。
図8は、本発明に従ってネットワークスタック254内のレイヤーが使用する方法を示している。図8で示した方法は、フィルタモジュール294およびユーザファイアウォールエンジン260とともに1つまたは複数のユーザモードレイヤー282によって使用することもできる。
各レイヤーでは、ネットワークパケットの処理、分類要求のカーネルファイアウォールエンジン256への発行、およびパケットコンテキストの管理などを含む複数の機能が可能になる。本発明の一実施形態では、ネットワークスタック254にインストールされている各レイヤーのシム(shim)460、462、464、466で機能が実行される。あるいは、シムの必要なく、機能が直接個々のレイヤーに組み込まれる。
ネットワークスタック254は、データストリームレイヤー268、トランスポートレイヤー270、ネットワークレイヤー272、およびリンクレイヤー274を含む。本発明を説明するために、リンクレイヤー274はNDISドライバとして、ネットワークレイヤー272はIPレイヤーとして、トランスポートレイヤー270はTCPレイヤーとして、またデータストリームレイヤー268はHTTPレイヤーとして実装されている。レイヤーは任意のプロトコルに従って実装できることを理解されたい。例えば、トランスポートレイヤーは、ユーザデータグラムプロトコル(UDP)にも対応している。アプリケーションレイヤーは、ファイル転送プロトコル(FTP)、リモートプロシージャコール(RPC)、簡易メール転送プロトコル(SMTP)、サーバマスターブロック(SMB)などに対応している。上述したように、追加のレイヤーをアーキテクチャに追加したり、レイヤーを削除したりすることができる。例えば、図6を参照して説明したように、Add LayerメソッドおよびDelete Layerメソッドを使用してレイヤーを追加、削除する。
468(a)〜(d)とラベル付けしたネットワークパケットは、それがネットワークスタック254内のレイヤーを横断し、それらによって処理される間のネットワークパケットを示している。パケット468(a)〜(d)がインバウンドパケットの場合、パケットは、ネットワークスタックを下から上に横断する。パケット468(a)〜(d)がアウトバウンドパケットの場合、パケットは、ネットワークスタックを上から下に横断する。こうした処理はよく知られているが、本発明を説明する目的で簡単に説明する。
Webブラウザなどネットワーク装置で実行されているアプリケーションが別のネットワーク装置上にあるWebページの内容の要求を開始すると仮定すると、アプリケーションは、要求をデータストリームレイヤー268に発行する。この例では、データストリーム264は、HTTPプロトコルに従って要求をフォーマットし、その要求をパケット468(a)でトランスポートレイヤーに送信する。トランスポートレイヤー270は、パケット468(a)を受信する。トランスポートレイヤー270は、TCPプロトコルを実装しており、データを1つまたは複数のパケットに入れ、各パケットはTCPヘッダーを備える。TCPヘッダーは、ソースポートおよび宛先ポート、プロトコルタイプ、すなわちTCP、シーケンス番号、フラグ、チェックサムなどの情報を含む。次いでトランスポートレイヤーは、468(b)とラベル付けされているパケットをネットワークレイヤーに送信する。
ネットワークレイヤーは、IPプロトコルを実装し、ソースおよび宛先のIPアドレス、フラグ、チェックサム、および他の既知の情報を含むデータをIPヘッダー内にカプセル化する。また、IPヘッダーは、パケットをフラグメント化するかどうかも示す。パケットは、IPパケットのサイズがパケットの送信に使用するネットワーク技術の最大伝送単位(MTU)サイズを超えるときにフラグメント化される。例えば、Ethernet(登録商標)技術は、MTUを1500バイトと規定している。IPパケット長がMTUを超える場合、パケットは、それ自体のIPヘッダーをそれぞれ備え、すべてがMTUと比較して等しいかそれより短い長さの2つ以上のIPパケットにフラグメント化される。
本発明の一実施形態では、ネットワークレイヤーは、第1のレイヤーおよび第2のレイヤーに分割される。第1のレイヤーは、フラグメントレイヤー(fragment layer)と呼ばれ、IPパケットフラグメントを処理する。第2のレイヤーは、完全アセンブル済みレイヤー(fully assembled layer)と呼ばれ、例えばアウトバウンドIPパケットがフラグメント化される前、インバウンドIPパケットが単一のIPパケットに再アセンブルされた後などに全IPパケットを処理する。ネットワークレイヤーの処理および起こりうるフラグメンテーションに続いて、パケット468(c)はリンクレイヤー274に送信される。リンクレイヤー274は、ソースおよび宛先のMACアドレスおよび他の情報をMACヘッダーに提供することによってさらにデータをパケット化する。次いでパケットは、パケットがネットワークに物理的に送信されるネットワークインターフェースカード(NIC)に送信される。
インバウンドパケットは、逆のやり方で処理される。パケット468(d)は、NICによって受信され、リンクレイヤー274に送信される。MACヘッダーが取り除かれ、パケット468(c)はネットワークレイヤーに送信され、そこで必要に応じてIPパケットのフラグメントが再アセンブルされ、IPアドレスが解析される。次いでネットワークレイヤーは、パケット468(b)をトランスポートレイヤーに送信し、そこでTCPヘッダーが取り除かれ、データストリームが複数のTCPパケットで送信された場合、データストリームが再アセンブルされる。最後に、データストリーム468(a)はデータストリームレイヤー268に送信され、そこでアプリケーションプロトコルによってデータが解読される。この場合、アプリケーションプロトコルはHTTPプロトコルである。
ネットワークスタックのレイヤーは、アウトバウンドパケットごとに、パケットコンテキスト470(a)〜(c)を維持する。ネットワークスタックのレイヤーは、インバウンドパケットごとに、パケットコンテキスト472(a)〜(c)を維持する。パケットコンテキストは、各パケットがネットワークレイヤーを横断する間、それに付随する。また、パケットコンテキストは、コールアウト258(図3)に渡され、それらによって変更されることもある。
パケットコンテキストは、パケットが各レイヤーで処理されるときに更新される。各レイヤーは、そのレイヤーパラメータをパケットコンテキストに追加し、それによってこの情報をその後のレイヤーまたはプロセスに提供する。図に示すように、リンクレイヤー274は、コンテキスト472(a)で示すようにソースおよび宛先のMACアドレスおよびインバウンドパケットのインターフェース番号を追加する。そのコンテキストをネットワークレイヤー272が受信し、コンテキスト472(b)で示すようにソースおよび宛先のIPアドレスを追加する。トランスポートレイヤー270は、コンテキストを受信し、コンテキスト472(c)で示すようにポート番号を追加する。
同様のプロセスが、アウトバウンドパケットに関連するコンテキスト470(a)〜(c)について行われる。データストリームレイヤー268は、コンテキスト470(a)で示すようにパケットペイロードからURLアドレスなどの情報を追加し、トランスポートレイヤー270は、コンテキスト470(b)で示すようにソースおよび宛先のポート番号をさらに追加し、ネットワークレイヤーは、コンテキスト470(c)で示すようにソースおよび宛先のIPアドレスを追加する。
各レイヤーがそのレイヤーで使用可能な任意のコンテキスト情報を追加できることは理解されよう。一般にこれは、パケットに対する処理、すなわちパケットに追加する、パケットから解析する、そうでない場合はパケットから導出するなどの処理を行うようにレイヤーが設計されているという任意の情報を含む。
パケットおよびその対応するコンテキストが各レイヤーで受信されると、レイヤーは、レイヤーパラメータを識別し、474とラベル付けした分類要求を送信することによって、要求レイヤーとして機能する。分類要求474は、レイヤーパラメータ476、前のレイヤーから受信されたパケットコンテキスト478、および全パケット480を含む。分類要求の発行に使用する方法の例は、レイヤーAPI280(図6)を参照して説明したClassifyメソッド402である。
各分類要求に応答して、カーネルファイアウォールエンジン256は、レイヤーパラメータ476およびパケットコンテキスト478を、要求レイヤーに割り当てられたフィルタのフィルタ条件318(図4)と比較する。カーネルファイアウォールエンジン256は、最高の重み314を有する整合フィルタ310からのアクション484を含む482とラベル付けされた応答を要求レイヤーに送信する。また、カーネルファイアウォールエンジン256は、ポリシーコンテキスト472を戻す。整合フィルタがカーネルファイアウォールエンジン256によって識別されない場合、カーネルファイアウォールエンジンは、整合フィルタが存在しないことを要求レイヤーに通知する。カーネルファイアウォールエンジン256は、整合フィルタが終了アクション、すなわち許可または阻止を指定するか、要求レイヤーに割り当てられたすべてのフィルタがチェックされるかのいずれかが先に起こるまで、引き続き整合フィルタを識別する。あるいは、カーネルファイアウォールエンジン256は、すべての一致を識別し、単一の応答でアクションを要求レイヤーに戻す。
全体的に示したように、レイヤーパラメータの識別は、ネットワークスタック254のレイヤーによって実行される通常のレイヤーの処理の一部として行われる。追加のパケット解析は必要なく、それによってシステムパフォーマンスへの影響が最小限に抑えられる。さらに、レイヤーは、パケットコンテキストの維持に協力するため、ファイアウォールエンジン256は、フィルタ条件を、通常こうしたパケットパラメータにアクセスできないレイヤーにあるパケットパラメータと比較することができる。例えば、ネットワークレイヤー268は、ソースおよび宛先のMACアドレスを含むリンクレイヤー274からインバウンドパケットのコンテキストを受信する。ネットワークレイヤー272は、ソースおよび宛先のIPアドレスなどのネットワークレイヤーパラメータ、およびパケットコンテキストを備える分類要求を発行するので、カーネルファイアウォールエンジン256は、MACアドレスが通常使用できない場合でさえ、ネットワークレイヤー272でIPアドレスおよびMACアドレスにフィルタをかけることができる。
次に図9を参照して、本発明のファイアウォールアーキテクチャに含まれるコールアウトモジュール258の組の例について説明する。コールアウトモジュール258は、HTTPコンテキストコールアウト500、侵入検知コールアウト502、IPSecコールアウト504、およびロギングコールアウト506を含む。コールアウトAPI284は、カーネルファイアウォールエンジン256とコールアウト258の間のデータ交換を形成する。
HTTPコンテキストコールアウト500は、許容可能な、あるいは許容不可のURLアドレスのキャッシュ508を維持する。HTTPコンテキストコールアウト500は、URLアドレスを維持し、それらを許容可能または許容不可と分類するパブリックネットワークに接続されているサーバ510に定期的にアクセスする。カーネルファイアウォールエンジン256がHTTPコンテキストコールアウトを実行すると、コールアウトは、パケットを検査し、必要に応じてURLアドレスを解読し、キャッシュ508内の情報に基づいて許容可能かどうかを判断する。次いでHTTPコールアウトは、URLアドレスが許容可能な場合はアクション316として許可を、URLアドレスが許容不可の場合は阻止をカーネルモードファイアウォールエンジン256に戻し、カーネルモードファイアウォールエンジンは、次には、レイヤーAPI280を介してアクション316を要求レイヤーに戻す。HTTPコンテキストコールアウトは、保護者による制限機能を実装するのに役立つ。
侵入検知コールアウト502は、使用可能なアルゴリズムおよび技術を使用して、パケットを検査してウィルスの徴候、そうでない場合は不審なパケットを識別する。不審なパケットが検出されると、阻止のアクション316が戻される。不審なパケットの一例は、IPヘッダーおよびTCPヘッダー内のすべてのフラグが値1に設定されるパケットである。このパケットは、決して有効ではなく、攻撃シグネチャを示し得るため、不審である。あるいは、侵入検知コールアウト502は、パケットコンテキストを変更してパケットの不審な性質にフラグを立て、それによってネットワークスタックのその後のレイヤーへのパケットを阻止するかどうかについての決定を保留する。
IPSecコールアウト504は、適切なセキュリティプロトコルがパケットに適用されたかどうかを決定するように設計されている。IPSecコールアウト504は、IPSecプロセスと通信し、IPSecポリシーに基づいてパケットがIPSec処理の対象になる予定だったかどうかを判断する。そうである場合、IPSecコールアウト504は、パケットコンテキストに基づいてパケットが実際にIPSec処理にかけられたかどうかを確認する。パケットはIPSecに従って処理される予定であったが、例えばパケットが平文であったので処理されなかった場合、阻止のアクションが戻される。パケットがIPSec処理の対象であった場合、IPSecコールアウトは、適切なセキュリティアソシエーション(SA)が適用されたことを確認する。適切なSAが適用されなかった場合、コールアウトは、阻止のアクション316を戻し、そうでない場合は許可のアクション316が戻される。あるいは、IPSecコールアウトは、次のレイヤーに対する許可を阻止するか許可するかについての決定を保留するパケットコンテキストを変更する。
ロギングコールアウト506は、後で使用するために、全パケット(full packet)などパケットに関連する情報を保存するために使用する。こうした後での使用は、例えば一部のネットワークトラフィックが、阻止されているために予期せずネットワークを横断しない原因の診断、またはシステムに対する悪意のある攻撃を追跡するための診断であっても良い。
本明細書で述べたすべての参照は、参照により本明細書に完全に組み込む。
本発明の原理を適用できる多くの可能な実施形態を考慮して、図面との関連で本明細書に記載した実施形態は、例示的なものにすぎず、本発明の範囲を限定するものとみなされるべきではないことを理解されたい。例えば、ソフトウェアで示した実施形態の例の要素をハードウェアに、またその逆に実装でき、あるいは、実施形態の例を、本発明の意図から逸脱することなく、構成および詳細について変更できることを当分野の技術者であれば理解されよう。したがって、本明細書に記載した本発明は、特許請求の範囲、およびその均等物の範囲内に含まれ得るすべての実施形態を企図する。
本発明が存在するコンピュータシステムの例を示す概略ブロック図である。 本発明が使用されるネットワーク環境の例を示す概略ブロック図である。 本発明のファイアウォールアーキテクチャを示す概略ブロック図である。 本発明とともに使用するフィルタの例を示すブロック図である。 本発明とともに使用するパケットコンテキストのデータ構造の例を示すブロック図である。 本発明とともに使用する1組のアプリケーションプログラミングインターフェースの例を示すブロック図である。 本発明とともに使用するアプリケーションプログラミングインターフェースの例を示すブロック図である。 本発明によるネットワークレイヤーによって実行される機能を示すブロック図である。 本発明とともに使用する1組のコールアウトの例を示すブロック図である。
符号の説明
100 コンピューティングシステム環境
110 コンピュータ
120 処理ユニット
121 システムバス
130 システムメモリ
131 読取り専用メモリ(ROM)
132 ランダムアクセスメモリ(RAM)
133 基本入出力システム(BIOS)
134 オペレーティングシステム
135 アプリケーションプログラム
136 他のプログラムモジュール
137 プログラムデータ
140 インターフェース
141 ハードディスクドライブ
144 オペレーティングシステム
145 アプリケーションプログラム
146 他のプログラムモジュール
147 プログラムデータ
150 インターフェース
151 磁気ディスクドライブ
152 リムーバブル不揮発性磁気ディスク
155 光ディスクドライブ
156 リムーバブル不揮発性光ディスク
160 ユーザ入力インターフェース
161 ポインティング装置
162 キーボード
170 ネットワークインターフェースまたはアダプタ
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 コールアウト
260 ユーザモードファイアウォールエンジン
262 ポリシープロバイダ
264 フェールセーフポリシー
266 フィルタエンジンAPI
268 データストリームレイヤー
270 トランスポートレイヤー
272 ネットワークレイヤー
274 リンクレイヤー
276 SMBレイヤー
278 ハイパーテキスト転送プロトコル(HTTP)パーサモジュール
280 レイヤーAPI
282 フィルタ
282 ユーザモードレイヤー
284 コールアウトAPI
286 起動時間ポリシー
288 キーイングモジュールAPI
290 管理API
294 フィルタモジュール
296 キーイングモジュール
310 フィルタ
312 フィルタID
314 重み
316 アクション
318 フィルタ条件
320 型
322 データ
324 レイヤーID:フィールドID
326 フィルタ条件
328 ポリシーコンテキスト
330 コンテキストデータ構造
332 レイヤーID:フィールドID
334 値
336 エントリ
338 エントリ
340 エントリ
350 Keying Module Initiateメソッド
402 Classifyメソッド
404 Add Layerメソッド
406 Delete Layerメソッド
410 Classifyメソッド
412 Notifyメソッド
414 Register Calloutメソッド
416 Deregister Calloutメソッド
418 Add Filterメソッド
420 Delete Filterメソッド
422 Enum Layerメソッド
430 IPSec SA Acquireメソッド
432 Expire Notifyメソッド
434 IPSec SA Acquire Completeメソッド
436 Keying Module Registerメソッド
438 Keying Module Deregisterメソッド
440 IPSec Inbound Get SPIメソッド
444 Add Inbound SAメソッド
446 Add Outbound SAメソッド
448 Inbound SA Expireメソッド
450 Keying Module Initiateメソッド
460 シム
462 シム
464 シム
466 シム
468 パケット
470 パケットコンテキスト
472 パケットコンテキスト
474 分類要求
476 レイヤーパラメータ
478 パケットコンテキスト
480 全パケット
482 応答
484 アクション
500 HTTPコンテキストコールアウト
502 侵入検知コールアウト
504 IPSecコールアウト
506 ロギングコールアウト
508 キャッシュ
510 サーバ

Claims (31)

  1. パケットのマルチレイヤーフィルタリングを提供するファイアウォールフレームワークを実装するためのコンピュータシステムであって
    各レイヤープロセッサが、プロトコルスタックの個々のレイヤーに関連付けられ、そのレイヤープロセッサに関連する前記パケットのレイヤーパラメータを処理することができ、各レイヤープロセッサがさらに、前のレイヤープロセッサから前記パケットに対応するパケットコンテキストを受信し、前記レイヤーパラメータと前記パケットと前記パケットコンテキストとを含む分類要求を発行することによって前記パケットに対するアクションを要求し、該レイヤープロセッサに関連する前記レイヤーパラメータを追加することによって前記パケットコンテキストを変更する、要求レイヤーとなることができる1組のレイヤープロセッサと、
    前記要求レイヤーから前記分類要求を受信し前記パケットに対するアクションを前記要求レイヤーに戻すレイヤーインターフェースと、
    少なくとも1つのフィルタ条件および関連するアクションを有する1組のインストール済みフィルタと、
    前記1組のインストール済みフィルタから、前記分類要求内の前記パケットコンテキストおよび前記レイヤーパラメータに合致するフィルタ条件を有する少なくとも1つの整合フィルタを識別し、該識別された整合フィルタから前記レイヤーインターフェースが前記要求レイヤーにすべき前記アクションを識別するルックアップ構成要素と
    を含む第1のファイアウォールエンジンと
    を含むことを特徴とするコンピュータシステム
  2. 前記第1のファイアウォールエンジンは、
    記レイヤーパラメータ、前記パケットコンテキスト、および前記パケットを、前記パケットを分析して前記アクションを前記第1のファイアウォールエンジンに戻すコールアウトに送信するコールアウトインターフェース
    をさらに備えることを特徴とする請求項に記載のコンピュータシステム
  3. 前記要求レイヤーは、前記パケットコンテキストを次のレイヤーに渡すことを特徴とする請求項に記載のコンピュータシステム
  4. 任意のソースからポリシーを取得するポリシープロバイダと、
    前記ポリシープロバイダが取得したポリシーに対するフィルタ条件および関連するアクションを定義して新しいフィルタを作成し、該新しいフィルタを前記1組のインストール済みフィルタに追加する第2のファイアウォールエンジンと
    をさらに備えることを特徴とする請求項1に記載のコンピュータシステム
  5. 前記インストール済みフィルタのそれぞれは、
    データのサイズを定義する型と、フィルタパラメータを含むデータとからなる型―データ対を含むフィルタ条件と、
    前記アクションと
    を備えることを特徴とする請求項1に記載のコンピュータシステム
  6. 前記フィルタパラメータは、値の範囲を含むことを特徴とする請求項に記載のコンピュータシステム
  7. 前記フィルタは、前記フィルタの優先度を定義する重み係数を備えることを特徴とする請求項に記載のコンピュータシステム
  8. 前記1組のレイヤープロセッサは、
    インターフェース番号、ソースおよび宛先のMACアドレスを含むレイヤーパラメータを有するリンクレイヤーと、
    ソースおよび宛先のIPアドレスを含むレイヤーパラメータを有するネットワークレイヤーと、
    ソースおよび宛先のポートを含むレイヤーパラメータを有するトランスポートレイヤーと、
    データストリームを含むレイヤーパラメータを有するアプリケーションレイヤーと
    をさらに含むことを特徴とする請求項1に記載のコンピュータシステム
  9. 前記ネットワークレイヤーは、IPパケットのフラグメントを処理するフラグメントレイヤー、および完全なIPパケットを処理する完全アセンブル済みレイヤーにさらに分割され、前記フラグメントレイヤーおよび前記完全アセンブル済みレイヤーは、各々、前記分類要求を発行することを特徴とする請求項に記載のコンピュータシステム
  10. 前記第1のファイアウォールエンジンは、オペレーティングシステムカーネルモードで実行されることを特徴とする請求項1に記載のコンピュータシステム
  11. 前記第のファイアウォールエンジンは、オペレーティングシステムユーザモードで実行されることを特徴とする請求項1に記載のコンピュータシステム
  12. オペレーティングシステム内で第1のレイヤープロセスとファイアウォールプロセスの間で通信を行う方法において、
    前記第1のレイヤープロセスが、プロトコルパケット、前記第1のレイヤープロセスに関連する少なくとも1つのレイヤーパラメータ、および第2のレイヤープロセスから受信したパケットコンテキストを含む複数のパラメータを有する分類要求を発行するステップであって、前記第1のレイヤープロセスは、該第1のレイヤープロセスに関連する前記レイヤーパラメータを追加することによって前記パケットコンテキストを変更し、前記第1のレイヤープロセスは、前記分類要求を発行することによって前記パケットに対するアクションを要求する、ステップと、
    前記分類要求を前記ファイアウォールプロセス受信するステップと、
    前記ファイアウォールプロセスが、少なくとも1つのフィルタ条件および関連するアクションを有する1組のインストール済みフィルタから、前記分類要求内の前記パケットコンテキストおよび前記レイヤーパラメータに合致するフィルタ条件を有する少なくとも1つの整合フィルタを識別するステップであって、前記パケットコンテキストは、前記第1のレイヤープロセスおよび前記少なくとも1つのレイヤーパラメータを識別するレイヤー識別フィールドと前記少なくとも1つのレイヤーパラメータを含む値とを有する少なくとも1つのエントリを含む、ステップと、
    前記ファイアウォールプロセスが、前記少なくとも1つの整合フィルタからアクションを識別して前記第1のレイヤープロセスに発行するステップと
    を含むことを特徴とする方法。
  13. 前記第1のレイヤープロセスは、新しいプロセスであり、
    前記第1のレイヤープロセスが、該第1のレイヤープロセスをネットワークスタックのレイヤーとして追加するためのアドレイヤー呼出しを発行するステップ
    をさらに含むことを特徴とする請求項12に記載の方法。
  14. 前記第1のレイヤープロセスは、既存のプロセスであり、
    前記第1のレイヤープロセスが、該第1のレイヤープロセスをネットワークスタックから削除するためのデリートレイヤー呼出しを発行するステップ
    をさらに含むことを特徴とする請求項12に記載の方法。
  15. オペレーティングシステム内でカーネルモードのファイアウォールプロセスとコールアウトプロセスの間で通信を行う方法において、
    前記ファイアウォールプロセスが、前記オペレーティングシステムのカーネルモードの要求レイヤーから、プロトコルパケット、前記要求レイヤーに関連する少なくとも1つのレイヤーパラメータ、およびパケットコンテキストを受信して、少なくとも1つのフィルタ条件および関連するアクションを有する1組のインストール済みフィルタから、前記パケットコンテキストおよび前記レイヤーパラメータに合致するフィルタ条件を有する少なくとも1つの整合フィルタを識別するステップであって、前記パケットコンテキストは、前記要求レイヤーによって、該要求レイヤーに関連する前記少なくとも1つのレイヤーパラメータを使用して変更されており、前記要求レイヤーおよび前記少なくとも1つのレイヤーパラメータを識別するレイヤー識別フィールドと前記少なくとも1つのレイヤーパラメータを含む値とを有する少なくとも1つのエントリを含む、ステップと、
    前記ファイアウォールプロセスが、識別された前記整合フィルタが有する前記アクションに基づいて、前記プロトコルパケット、前記少なくとも1つのレイヤーパラメータ、前記パケットコンテキスト、および前記整合フィルタの識別を含む複数のパラメータを有する分類要求を発行するステップと、
    前記分類要求を前記コールアウトプロセス受信するステップと、
    前記コールアウトプロセスが、前記プロトコルパケットに対してプログラムされた機能を実行するステップと、
    前記コールアウトプロセスが、前記分類要求に含まれる前記複数のパラメータに基づいて前記プロトコルパケットに対するアクションを識別して前記ファイアウォールプロセスに発行するステップと
    を含むことを特徴とする方法。
  16. 前記コールアウトプロセスは、許容可能なリソース位置のキャッシュを維持する保護者による制御モジュールであり、
    前記パケットを検査することによりリソース位置を識別し、前記リソース位置を前記許容可能な位置と比較するステップ
    をさらに含むことを特徴とする請求項15に記載の方法。
  17. 前記コールアウトプロセスによって発行された前記アクションは、阻止であり、前記プロトコルパケットは、ネットワークを横断できないことを特徴とする請求項16に記載の方法。
  18. 前記コールアウトプロセスによって発行された前記アクションは、許可であり、前記プロトコルパケットは、前記ネットワークをさらに横断できることを特徴とする請求項16に記載の方法。
  19. 前記コールアウトプロセスは、ロギングモジュールであり、前記プロトコルパケットをメモリに格納するステップをさらに含むことを特徴とする請求項15に記載の方法。
  20. 前記コールアウトプロセスは、セキュリティモジュールであり、
    前記セキュリティモジュールによって、前記プロトコルパケットがセキュリティプロトコルに適合することが求められると決定するステップと、
    前記プロトコルパケットが前記セキュリティプロトコルに適合することを確認するステップと
    をさらに含むことを特徴とする請求項15に記載の方法。
  21. 前記セキュリティプロトコルは、IPSecセキュリティプロトコルであることを特徴とする請求項20に記載の方法。
  22. パケットのマルチレイヤーフィルタリングを提供するファイアウォールフレームワークを実装するためにコンピュータシステム
    各レイヤープロセッサが、プロトコルスタックの個々のレイヤーに関連付けられ、そのレイヤープロセッサに関連する前記パケットのレイヤーパラメータを処理することができ、各レイヤープロセッサがさらに、前のレイヤープロセッサから前記パケットに対応するパケットコンテキストを受信し、前記レイヤーパラメータと前記パケットと前記パケットコンテキストとを含む分類要求を発行することによって前記パケットに対するアクションを要求し、該レイヤープロセッサに関連する前記レイヤーパラメータを追加することによって前記パケットコンテキストを変更する、要求レイヤーとなることができる1組のレイヤープロセッサ、および
    前記要求レイヤープロセッサから前記分類要求を受信し前記パケットに対するアクションを前記要求レイヤーに戻すレイヤーインターフェースと、
    少なくとも1つのフィルタ条件および関連するアクションを有する1組のインストール済みフィルタと、
    前記1組のインストール済みフィルタから、前記分類要求内の前記パケットコンテキストおよび前記レイヤーパラメータに合致するフィルタ条件を有する少なくとも1つの整合フィルタを識別し、該識別された整合フィルタから前記レイヤーインターフェースが前記要求レイヤーにすべき前記アクションを識別するルックアップ構成要素と
    を含む第1のファイアウォールエンジン
    として機能させるためのコンピュータ可読命令を記憶したことを特徴とするコンピュータ可読な記憶媒体。
  23. 前記第1のファイアウォールエンジンは、
    前記レイヤーパラメータ、前記パケットコンテキスト、および前記パケットを、前記パケットを分析して前記アクションを前記第1のファイアウォールエンジンに戻すコールアウトに送信するコールアウトインターフェース
    をさらに含むことを特徴とする請求項22に記載のコンピュータ可読な記憶媒体。
  24. 前記要求レイヤーは、前記パケットコンテキストを次のレイヤーに渡すことを特徴とする請求項23に記載のコンピュータ可読な記憶媒体。
  25. 前記コンピュータ可読命令は、前記コンピュータシステムを、
    新しいフィルタを前記1組のインストール済みフィルタに追加するポリシープロバイダ、および
    前記新しいフィルタを前記1組のインストール済みフィルタに追加する第2のファイアウォールエンジン
    としてさらに機能させることを特徴とする請求項22に記載のコンピュータ可読な記憶媒体。
  26. オペレーティングシステム内で第1のレイヤープロセスとファイアウォールプロセスの間で通信を行う方法を実行するためのコンピュータ可読命令を記録したコンピュータ可読な記憶媒体であって、前記方法は
    前記第1のレイヤープロセスが、プロトコルパケット、前記第1のレイヤープロセスに関連する少なくとも1つのレイヤーパラメータ、および第2のレイヤープロセスから受信したパケットコンテキストを含む複数のパラメータを有する分類要求を発行するステップであって、前記第1のレイヤープロセスは、該第1のレイヤープロセスに関連する前記レイヤーパラメータを追加することによって前記パケットコンテキストを変更し、前記第1のレイヤープロセスは、前記分類要求を発行することによって前記パケットに対するアクションを要求する、ステップと、
    前記分類要求を前記ファイアウォールプロセス受信するステップと、
    前記ファイアウォールプロセスが、少なくとも1つのフィルタ条件および関連するアクションを有する1組のインストール済みフィルタから、前記分類要求に含まれる前記パケットコンテキストおよび前記レイヤーパラメータに合致するフィルタ条件を有する少なくとも1つの整合フィルタを識別するステップであって、前記パケットコンテキストは、前記第1のレイヤープロセスおよび前記少なくとも1つのレイヤーパラメータを識別するレイヤー識別フィールドと前記少なくとも1つのレイヤーパラメータを含む値とを有する少なくとも1つのエントリを含む、ステップと、
    前記ファイアウォールプロセスが、前記少なくとも1つの整合フィルタからアクションを識別して前記第1のレイヤープロセスに発行するステップと
    を含むことを特徴とするコンピュータ可読な記憶媒体。
  27. 前記第1のレイヤープロセスは、新しいプロセスであり、
    前記第1のレイヤープロセスが、該第1のレイヤープロセスをネットワークスタックのレイヤーとして追加するためのアドレイヤー呼出しを発行するステップ
    をさらに含むことを特徴とする請求項26に記載のコンピュータ可読な記憶媒体。
  28. 前記第1のレイヤープロセスは、既存のプロセスであり、
    前記第1のレイヤープロセスが、該第1のレイヤープロセスをネットワークスタックから削除するためのデリートレイヤー呼出しを発行するステップ
    をさらに含むことを特徴とする請求項26に記載のコンピュータ可読な記憶媒体。
  29. オペレーティングシステム内でカーネルモードのファイアウォールプロセスとコールアウトプロセスの間で通信を行う方法を実行するためのコンピュータ可読命令を記憶したコンピュータ可読な記憶媒体であって、前記方法は
    前記ファイアウォールプロセスが、前記オペレーティングシステムのカーネルモードの要求レイヤープロセスから、プロトコルパケット、前記第1のレイヤープロセスに関連する少なくとも1つのレイヤーパラメータ、およびパケットコンテキストを受信して、少なくとも1つのフィルタ条件および関連するアクションを有する1組のインストール済みフィルタから、前記パケットコンテキストおよび前記レイヤーパラメータに合致するフィルタ条件を有する少なくとも1つの整合フィルタを識別するステップであって、前記パケットコンテキストは、前記要求レイヤーによって、該要求レイヤーに関連する前記レイヤーパラメータを使用して変更されており、前記要求レイヤーおよび前記少なくとも1つのレイヤーパラメータを識別するレイヤー識別フィールドと前記少なくとも1つのレイヤーパラメータを含む値とを有する少なくとも1つのエントリを含む、ステップと、
    前記ファイアウォールプロセスが、識別された前記整合フィルタが有する前記アクションに基づいて、前記プロトコルパケット、前記少なくとも1つのレイヤーパラメータ、前記パケットコンテキスト、および前記整合フィルタの識別を含む複数のパラメータを有する分類要求を発行するステップと、
    前記分類要求を前記コールアウトプロセス受信するステップと、
    前記コールアウトプロセスが、前記プロトコルパケットに対してプログラムされた機能を実行するステップと、
    前記コールアウトプロセスが、前記分類要求に含まれる前記複数のパラメータに基づいて前記プロトコルパケットに対するアクションを識別して前記ファイアウォールプロセスに発行するステップと
    を含むことを特徴とするコンピュータ可読な記憶媒体。
  30. 前記コールアウトプロセスは、ロギングモジュールであり、前記プロトコルパケットをメモリに格納するステップをさらに含むことを特徴とする請求項29に記載のコンピュータ可読な記憶媒体。
  31. 前記コールアウトプロセスは、セキュリティモジュールであり、
    前記セキュリティモジュールによって、前記プロトコルパケットはセキュリティプロトコルに適合することが求められると決定するステップと、
    前記プロトコルパケットは、前記セキュリティプロトコルに適合することを確認するステップと
    をさらに含むことを特徴とする請求項29に記載のコンピュータ可読な記憶媒体。
JP2004165078A 2003-06-06 2004-06-02 マルチレイヤーファイアウォールアーキテクチャ Expired - Fee Related JP4572089B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/456,766 US7509673B2 (en) 2003-06-06 2003-06-06 Multi-layered firewall architecture

Publications (2)

Publication Number Publication Date
JP2004362581A JP2004362581A (ja) 2004-12-24
JP4572089B2 true JP4572089B2 (ja) 2010-10-27

Family

ID=33159591

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004165078A Expired - Fee Related JP4572089B2 (ja) 2003-06-06 2004-06-02 マルチレイヤーファイアウォールアーキテクチャ

Country Status (13)

Country Link
US (1) US7509673B2 (ja)
EP (1) EP1484884A3 (ja)
JP (1) JP4572089B2 (ja)
KR (1) KR101026635B1 (ja)
CN (1) CN1574839B (ja)
AU (1) AU2004202137C1 (ja)
BR (1) BRPI0401894B1 (ja)
CA (1) CA2464784C (ja)
MX (1) MXPA04005464A (ja)
MY (1) MY143502A (ja)
RU (1) RU2365986C2 (ja)
TW (1) TWI349471B (ja)
ZA (1) ZA200403075B (ja)

Families Citing this family (92)

* 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
US7904187B2 (en) 1999-02-01 2011-03-08 Hoffberg Steven M Internet appliance system and method
EP1634175B1 (en) * 2003-05-28 2015-06-24 Citrix Systems, Inc. Multilayer access control security system
US7308711B2 (en) * 2003-06-06 2007-12-11 Microsoft Corporation Method and framework for integrating a plurality of network policies
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
US20040268124A1 (en) * 2003-06-27 2004-12-30 Nokia Corporation, Espoo, Finland Systems and methods for creating and maintaining a centralized key store
US7574603B2 (en) * 2003-11-14 2009-08-11 Microsoft Corporation Method of negotiating security parameters and authenticating users interconnected to a network
JP3758661B2 (ja) * 2003-11-17 2006-03-22 株式会社インテリジェントウェイブ 不正監視プログラム、不正監視の方法及び不正監視システム
US7797752B1 (en) * 2003-12-17 2010-09-14 Vimal Vaidya Method and apparatus to secure a computing environment
US20050268331A1 (en) * 2004-05-25 2005-12-01 Franck Le Extension to the firewall configuration protocols and features
CA2594020C (en) * 2004-12-22 2014-12-09 Wake Forest University Method, systems, and computer program products for implementing function-parallel network firewall
WO2006094428A1 (en) * 2005-03-05 2006-09-14 Intel Corporation Asynchronous network stack operation in an operating system independent environment
US9288078B2 (en) * 2005-03-25 2016-03-15 Qualcomm Incorporated Apparatus and methods for managing content exchange on a wireless device
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
US7475138B2 (en) * 2005-06-23 2009-01-06 International Business Machines Corporation Access control list checking
US7716729B2 (en) * 2005-11-23 2010-05-11 Genband Inc. Method for responding to denial of service attacks at the session layer or above
JP4545085B2 (ja) * 2005-12-08 2010-09-15 富士通株式会社 ファイアウォール装置
KR101218698B1 (ko) * 2006-02-03 2013-01-04 주식회사 엘지씨엔에스 복수의 ip 버전을 지원하는 네트워크 보안솔루션구현방법
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
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
US9489318B2 (en) 2006-06-19 2016-11-08 Broadcom Corporation Method and system for accessing protected memory
US8302179B2 (en) * 2006-12-13 2012-10-30 Avaya Inc. Embedded firewall at a telecommunications endpoint
US8291483B2 (en) * 2007-04-30 2012-10-16 Hewlett-Packard Development Company, L.P. Remote network device with security policy failsafe
US8166534B2 (en) 2007-05-18 2012-04-24 Microsoft Corporation Incorporating network connection security levels into firewall rules
US8341723B2 (en) * 2007-06-28 2012-12-25 Microsoft Corporation Filtering kernel-mode network communications
CN101399827A (zh) * 2007-09-26 2009-04-01 国际商业机器公司 用于安全地为系统安装补丁的方法和系统
US20090094596A1 (en) * 2007-10-05 2009-04-09 Scense B.V. Systems and methods for an adaptive installation
US7920478B2 (en) * 2008-05-08 2011-04-05 Nortel Networks Limited Network-aware adapter for applications
WO2010045089A1 (en) * 2008-10-08 2010-04-22 Sourcefire, Inc. Target-based smb and dce/rpc processing for an intrusion detection system or intrusion prevention system
US8955033B2 (en) * 2008-11-25 2015-02-10 Citrix Systems, Inc. Systems and methods for HTTP callouts for policies
US20100251355A1 (en) * 2009-03-31 2010-09-30 Inventec Corporation Method for obtaining data for intrusion detection
US8495725B2 (en) 2009-08-28 2013-07-23 Great Wall Systems Methods, systems, and computer readable media for adaptive packet filtering
US8782773B2 (en) * 2009-09-30 2014-07-15 Avaya Inc. Framework for communicating across a firewall
GB0919253D0 (en) 2009-11-03 2009-12-16 Cullimore Ian Atto 1
US8925039B2 (en) * 2009-12-14 2014-12-30 At&T Intellectual Property I, L.P. System and method of selectively applying security measures to data services
CN101783796B (zh) * 2009-12-28 2013-09-11 山东中创软件商用中间件股份有限公司 Web应用防火墙系统和基于该系统的应用方法
US8983989B2 (en) * 2010-02-05 2015-03-17 Microsoft Technology Licensing, Llc Contextual queries
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
US8504718B2 (en) * 2010-04-28 2013-08-06 Futurewei Technologies, Inc. System and method for a context layer switch
CN101888374B (zh) * 2010-05-19 2013-06-26 山东中创软件商用中间件股份有限公司 基于内嵌的对响应内容进行缓存过滤的方法、装置及系统
JP5617137B2 (ja) 2010-05-28 2014-11-05 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 仮想レイヤ2およびそれをスケーラブルにするための機構
WO2012006190A1 (en) 2010-06-29 2012-01-12 Huawei Technologies Co., Ltd. Delegate gateways and proxy for target hosts in large layer 2 and address resolution with duplicated internet protocol addresses
SG10201505168TA (en) 2010-06-29 2015-09-29 Huawei Tech Co Ltd Asymmetric network address encapsulation
FR2965997B1 (fr) * 2010-10-07 2013-06-28 Electricite De France Procede et dispositif de transfert securise de donnees
US8875276B2 (en) * 2011-09-02 2014-10-28 Iota Computing, Inc. Ultra-low power single-chip firewall security device, system and method
RU2453905C1 (ru) * 2011-01-21 2012-06-20 Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) Способ проверки функционирования протоколов информационных систем
US20120198541A1 (en) * 2011-02-02 2012-08-02 Reeves Randall E Methods and apparatus for preventing network intrusion
CN102195972B (zh) * 2011-03-24 2014-05-07 北京思创银联科技股份有限公司 利用wfp拦截网络数据的方法
US8904216B2 (en) 2011-09-02 2014-12-02 Iota Computing, Inc. Massively multicore processor and operating system to manage strands in hardware
US9100324B2 (en) 2011-10-18 2015-08-04 Secure Crossing Research & Development, Inc. Network protocol analyzer apparatus and method
US8613089B1 (en) 2012-08-07 2013-12-17 Cloudflare, Inc. Identifying a denial-of-service attack in a cloud-based proxy service
CN102891848B (zh) * 2012-09-25 2015-12-02 汉柏科技有限公司 利用IPSec安全联盟进行加密解密的方法
US9565213B2 (en) 2012-10-22 2017-02-07 Centripetal Networks, Inc. Methods and systems for protecting a secured network
US9137205B2 (en) 2012-10-22 2015-09-15 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
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
CN103227742B (zh) * 2013-03-26 2015-09-16 汉柏科技有限公司 一种IPSec隧道快速处理报文的方法
US20150003607A1 (en) * 2013-06-26 2015-01-01 Samsung Electronics Co., Ltd. Secure connection method and apparatus of electronic device
TW201501487A (zh) 2013-06-28 2015-01-01 Ibm 無網路位址之端點管理資訊設備
RU2545516C2 (ru) * 2013-07-23 2015-04-10 Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) Устройство обнаружения атак в беспроводных сетях стандарта 802.11g
US10367785B2 (en) 2013-10-01 2019-07-30 Perfecta Federal Llc Software defined traffic modification system
KR102087404B1 (ko) * 2013-11-12 2020-03-11 삼성전자주식회사 전자 장치에서 보안 패킷을 처리하기 위한 장치 및 방법
US10102019B2 (en) * 2014-06-09 2018-10-16 Verizon Patent And Licensing Inc. Analyzing network traffic for layer-specific corrective actions in a cloud computing environment
US9621588B2 (en) * 2014-09-24 2017-04-11 Netflix, Inc. Distributed traffic management system and techniques
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
US9825960B2 (en) * 2015-05-29 2017-11-21 Oracle International Corporation System and method providing automatic pushdown hierarchical filters
US10609053B2 (en) * 2015-11-24 2020-03-31 Intel Corporation Suspicious network traffic identification method and apparatus
RU2625046C2 (ru) * 2015-12-18 2017-07-11 Федеральное государственное автономное образовательное учреждение высшего образования "Санкт-Петербургский политехнический университет Петра Великого" Способ многопоточной защиты сетевого трафика и система для его осуществления
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
JP6781109B2 (ja) * 2016-07-06 2020-11-04 日本電信電話株式会社 トラヒック制御装置および方法
US10503899B2 (en) 2017-07-10 2019-12-10 Centripetal Networks, Inc. Cyberanalysis workflow acceleration
US11233777B2 (en) 2017-07-24 2022-01-25 Centripetal Networks, Inc. Efficient SSL/TLS proxy
US10284526B2 (en) 2017-07-24 2019-05-07 Centripetal Networks, Inc. Efficient SSL/TLS proxy
US10791092B2 (en) * 2018-02-14 2020-09-29 Nicira, Inc. Firewall rules with expression matching
RU183015U1 (ru) * 2018-03-02 2018-09-07 Общество с ограниченной ответственностью "АСП Лабс" Средство обнаружения вторжений
US10333898B1 (en) 2018-07-09 2019-06-25 Centripetal Networks, Inc. Methods and systems for efficient network protection
US11190542B2 (en) * 2018-10-22 2021-11-30 A10 Networks, Inc. Network session traffic behavior learning system
US11652848B1 (en) 2019-09-26 2023-05-16 Amazon Technologies, Inc. Distributed evaluation of networking security rules
US11960623B2 (en) * 2020-03-27 2024-04-16 EMC IP Holding Company LLC Intelligent and reversible data masking of computing environment information shared with external systems
CN111984602B (zh) 2020-09-23 2024-10-29 三星(中国)半导体有限公司 数据流的管理方法和装置
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
CN113810428B (zh) * 2021-09-30 2023-07-18 深圳市九洲电器有限公司 边缘计算设备的安全控制系统和安全控制方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002507362A (ja) * 1997-06-30 2002-03-05 サン・マイクロシステムズ・インコーポレーテッド 多層ネットワーク要素のためのシステムおよび方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6092110A (en) * 1997-10-23 2000-07-18 At&T Wireless Svcs. Inc. Apparatus for filtering packets using a dedicated processor
US6131163A (en) * 1998-02-17 2000-10-10 Cisco Technology, Inc. Network gateway mechanism having a protocol stack proxy
US6219786B1 (en) * 1998-09-09 2001-04-17 Surfcontrol, Inc. Method and system for monitoring and controlling network access
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
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
KR20020051599A (ko) * 2000-12-23 2002-06-29 오길록 분산 컴퓨팅 환경에서의 보안 정책 시스템 및 그 방법
US20020162026A1 (en) * 2001-02-06 2002-10-31 Michael Neuman 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
US7409707B2 (en) * 2003-06-06 2008-08-05 Microsoft Corporation Method for managing network filter based policies
US7308711B2 (en) * 2003-06-06 2007-12-11 Microsoft Corporation Method and framework for integrating a plurality of network policies
US7260840B2 (en) * 2003-06-06 2007-08-21 Microsoft Corporation Multi-layer based method for implementing network firewalls
US7559082B2 (en) * 2003-06-25 2009-07-07 Microsoft Corporation Method of assisting an application to traverse a firewall

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002507362A (ja) * 1997-06-30 2002-03-05 サン・マイクロシステムズ・インコーポレーテッド 多層ネットワーク要素のためのシステムおよび方法

Also Published As

Publication number Publication date
CA2464784A1 (en) 2004-12-06
KR101026635B1 (ko) 2011-04-04
ZA200403075B (en) 2004-10-28
TWI349471B (en) 2011-09-21
JP2004362581A (ja) 2004-12-24
EP1484884A3 (en) 2006-08-02
AU2004202137A1 (en) 2004-12-23
BRPI0401894B1 (pt) 2018-11-13
AU2004202137B2 (en) 2009-11-05
MXPA04005464A (es) 2005-03-23
MY143502A (en) 2011-05-31
CA2464784C (en) 2012-10-23
US7509673B2 (en) 2009-03-24
US20050022010A1 (en) 2005-01-27
EP1484884A2 (en) 2004-12-08
AU2004202137C1 (en) 2010-04-29
RU2004117067A (ru) 2005-11-10
BRPI0401894A (pt) 2005-02-22
KR20040105587A (ko) 2004-12-16
CN1574839A (zh) 2005-02-02
TW200501698A (en) 2005-01-01
CN1574839B (zh) 2010-05-26
RU2365986C2 (ru) 2009-08-27

Similar Documents

Publication Publication Date Title
JP4572089B2 (ja) マルチレイヤーファイアウォールアーキテクチャ
JP4521225B2 (ja) ネットワークファイアウォールを実装するための多層ベースの方法
JP4459722B2 (ja) ネットワークフィルタベースのポリシーを管理するための方法
US7761708B2 (en) Method and framework for integrating a plurality of network policies
US8782260B2 (en) Network access control system and method using adaptive proxies
JP3954385B2 (ja) 迅速なパケット・フィルタリング及びパケット・プロセシングのためのシステム、デバイス及び方法
US8266267B1 (en) Detection and prevention of encapsulated network attacks using an intermediate device
US6772348B1 (en) Method and system for retrieving security information for secured transmission of network communication streams
US8607302B2 (en) Method and system for sharing labeled information between different security realms
US8336093B2 (en) Abnormal IPSec packet control system using IPSec configuration and session data, and method thereof

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100319

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100621

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100810

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100816

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130820

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees