JP4521225B2 - ネットワークファイアウォールを実装するための多層ベースの方法 - Google Patents

ネットワークファイアウォールを実装するための多層ベースの方法 Download PDF

Info

Publication number
JP4521225B2
JP4521225B2 JP2004167769A JP2004167769A JP4521225B2 JP 4521225 B2 JP4521225 B2 JP 4521225B2 JP 2004167769 A JP2004167769 A JP 2004167769A JP 2004167769 A JP2004167769 A JP 2004167769A JP 4521225 B2 JP4521225 B2 JP 4521225B2
Authority
JP
Japan
Prior art keywords
packet
layer
filter
firewall
network
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
JP2004167769A
Other languages
English (en)
Other versions
JP2004362590A (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 JP2004362590A publication Critical patent/JP2004362590A/ja
Application granted granted Critical
Publication of JP4521225B2 publication Critical patent/JP4521225B2/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/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • 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/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates

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)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、一般に、コンピュータシステムおよびネットワークセキュリティに関する。より詳細には、本発明は、ネットワークデバイスにファイアウォールを実装する方法に関する。
ネットワークプロトコルは、オープンデータ交換(open exchange of data)を通して、ネットワークデバイス間の通信を容易にするよう設計されている。オープンデータ交換は、タスクを遂行するためのネットワークデバイスの使用を大幅に向上させるが、ネットワークプロトコルがネットワークセキュリティのために設計されているわけではなく、また、一般にネットワークセキュリティを提供しないため、問題を生じさせる原因ともなっている。ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、イントラネット、インターネットなどの公衆ネットワークおよび専用ネットワークの両方に結合されたコンピュータは、ネットワークに直接または間接的に結合されたその他のネットワークデバイスによる悪意ある攻撃を受けやすい。このような悪意ある攻撃には、データを盗むこと、サービス妨害(DOS)攻撃、ウィルスの拡散などが含まれる。コンピュータをネットワークに結合する際には、子供達による望ましくないまたは不適切なウェブサイトへのアクセスの制御など、その他の関連する問題も生じてくる。
ファイアウォールは、個々のユーザ、ネットワークデバイス、およびネットワーク全般を悪意ある攻撃から保護し、また、ポリシーの実装によりネットワークを介したデータの交換を制御する機能を追加するために使用されるツールである。ファイアウォールは、ポリシーを実装して、ネットワークパケットを調べ、調べた結果に基づいて、そのパケットを許可すべきか、または逆にそのパケットがネットワークをさらにトラバースしないようブロックすべきかを判断する。
ファイアウォールを介して実装されるポリシーは、1つまたは複数のフィルタによって定義される。各フィルタは、パラメータおよび関連するアクションを含む。フィルタのパラメータを使って、ファイアウォールポリシーに支配され、また、例えば媒体アクセス制御(MAC)アドレスなどのハードウェアアドレス、例えばインターネットプロトコル(IP)アドレスなどのネットワークアドレス、例えば伝送制御プロトコル(TCP)などのプロトコル型、ポート番号などの情報を含むネットワークパケットが識別される。アクションは、フィルタパラメータにマッチするパラメータを備えたパケットをどのように扱うべきかを定義する。具体例として、フィルタは、そのパラメータとして、例えば「http://www.foo.com」などのユニフォームリソースロケータ(URL)アドレスを含む。フィルタはさらに、そのURLアドレスに、ブロックのアクションを関連付ける、すなわちパケットを落とす。ファイアウォールは、パケットを調べて、調べた結果、そのURLアドレス「http://www.foo.com」をパケットに埋め込まれているものとして識別した場合にはいつでも、そのパケットを落とし、それによって、それがネットワークをトラバースしないようにする。
ネットワークデバイスは、階層化ネットワークアーキテクチャから成るネットワークスタックを介してパケットを送受信することにより、データを交換する。様々なネットワークアーキテクチャモデルが存在するが、そのほとんどが、少なくともアプリケーション層、トランスポート層、ネットワーク層、およびリンク層を含んでいる。ネットワークパケットは、各層を順番にトラバースし、各層をトラバースするたびに処理される。アウトバウンドパケットの場合、アプリケーション層は、アプリケーションプロトコルに従ってデータを処理する。アプリケーションプロトコルの例を2、3挙げると、ハイパーテキスト転送プロトコル(HTTP)、ファイル転送プロトコル(FTP)、簡易メール転送プロトコル(SMTP)などがある。ネットワーク層やトランスポート層などのその他の層は、データをTCPヘッダおよびIPヘッダに埋め込むことによってパケット化する。これらの層は、例えば、ヘッダのパース、データの非パケット化(unpacketize)などによって、インバウンドパケットに対する相互処理を行う。階層化「スタック」アーキテクチャ、および各層が実行する処理機能は、パケットがネットワークプロトコルスタックをトラバースするのにつれてパケットパラメータを含むパケット内容が変化する、動的パケット構造をもたらす。
ファイアウォールは、階層化ネットワークスタックを使って位置付けられる検査点(inspection point)においてパケットを調べる。一方では、検査点はアプリケーション層にある。例えば、ファイアウォールは階層化サービスプロバイダ(LSP)として配置される。アプリケーション層におけるパケットは、別のネットワークデバイスに送られ、または別のネットワークデバイスから受け取った、基礎をなすデータ(underlying data)を含む。アプリケーション層でパケットを調べることにより、ファイアウォールは、URLアドレスなどのアプリケーション層パラメータを識別し、そのアプリケーション層パラメータをフィルタパラメータと比較することができる。しかし、IPアドレス、ポート番号、MACアドレスなどのその他のパケットパラメータは、アウトバウンドパケットに追加されていないか、またはインバウンドパケットから落とされているために利用可能ではない。
その一方、ファイアウォールの検査点は、リンク層とネットワーク層との間に置かれた中間ドライバとして、ネットワークスタックのより低いレベルで実装される。ネットワークスタックのこのより低いレベルにおけるパケットは、例えば、インターフェース数、MACアドレス、IPアドレス、プロトコル型、ポート、およびペイロードデータなど、最大数のパラメータを含む。パケットはこのようなパラメータを含むが、それらのパラメータが容易に識別可能であるとは限らない。ファイアウォールは、パケットを受け取った後、フィルタパラメータと比較するために、関連するパケットパラメータをパースして解釈する必要がある。したがって、ネットワークスタック中の層とファイアウォールの両方が、パケットをパースする機能および解釈する機能を重複して行う。
本発明は、ファイアウォールフレームワーク中にファイアウォールを実装する方法を対象としている。ファイアウォールフレームワークは複数の層を含み、各層は層プロトコルに従ってパケットを処理することができる。さらに、各層は、パケットにファイアウォールポリシーが提供されることを要求することができる。ファイアウォールフレームワークは、複数のインストールされているフィルタを含む、ファイアウォールエンジンをさらに含む。
要求層は、複数の層のうちの前の層からネットワークパケットを受け取る。要求層は、パケットから1組のパラメータを識別し、その1組のパラメータを用いてファイアウォールエンジンに分類要求を発行する。これに応答して、ファイアウォールは、要求層にアクションを返す。このアクションが、パケットが複数の層をさらにトラバースすることを許可する命令である場合、要求層は、層プロトコルに従ってパケットを処理し、そのパケットを複数の層のうちの次の層に送る。逆に、アクションがパケットを落とす命令である場合、層はパケットを処理せず、次の層に送らない。
1組のインストールされているフィルタのそれぞれは、1組のフィルタ条件およびアクションを含む。要求層が分類コールを発行すると、ファイアウォールエンジンは、複数のインストールされているフィルタのうちのいずれかのフィルタが1組のパラメータとマッチするかどうかを判断する。次いで、ファイアウォールエンジンは、マッチするフィルタ中の情報に基づいてアクションを返す。
本発明はさらに、信頼できる開始デバイスからのパケットが、一般に非送信請求インバウンドパケットをブロックするように構成されているファイアウォールをトラバースして、応答デバイスに到達することを許可する方法を提供する。開始デバイスは、最初に、キーネゴシエーションプロトコルを使って認証を開始する。認証が成功すると、応答コンピュータは、開始コンピュータからのパケットが応答コンピュータの対象プロセスに到達することを許可するフィルタを作成する。
本発明のさらなる特徴および利点は、添付の図を参照しながら進む、以下の例示の実施形態の詳細な説明を読むことにより明らかになろう。
添付の特許請求の範囲は、本発明の特徴を詳細に述べているが、本発明、およびその目的および利点は、添付の図面に関連して以下の詳細な説明を読むことにより最もよく理解できる。
ネットワークデバイス内のファイアウォールアーキテクチャに従って、ファイアウォールを実装する方法を説明する。この方法は、プロトコルスタックにおける複数の層において、ネットワークパケットをフィルタにかける。本発明の一実施形態では、この方法およびファイアウォールアーキテクチャを、カーネルモードプロセスおよびユーザモードプロセスと呼ばれる複数のオペレーティングシステムプロセスに実装する。あるいは、この方法およびアーキテクチャを、単一のオペレーティングシステムプロセス、またはオペレーティングシステムの外側で実行している1つまたは複数のプログラムモジュールまたはアプリケーションプログラムに実装する。
カーネルモードプロセスは、プロトコルスタック、カーネルファイアウォールエンジン、および1つまたは複数のコールアウト(callout)を含む。プロトコルスタックは、アプリケーション層、トランスポート層、ネットワーク層、およびリンク層を含む。所望する通りにさらなる層が追加され、またはシステムから削除される。各層は、ネットワークパケットおよび対応するパケットコンテキストデータを前の層またはプロセスから受け取る、要求層を形成する。次いで、要求層が、層APIを介して、分類要求をカーネルファイアウォールエンジンに発行する。分類要求は、要求層が受け取ったパケット、パケットコンテキスト、および要求層に関連付けられた1組の層パラメータを含む。カーネルファイアウォールエンジンは、要求を処理し、アクションを返す。一例として、アクションは、パケットをどのように扱うかを(例えば、許可かブロックかを)要求層に指示する。アクションが許可の場合、要求層は、層プロトコルに従ってパケットを処理し、層パラメータを含むようにパケットコンテキストを修正し、そのパケットおよびパケットコンテキストを次の層に渡す。アクションがブロックの場合、要求層はパケットを落として、次の層には渡さない。要求層は、ブロックアクションの結果、TCP接続を断つなど、さらなる機能を実行することができる。
カーネルファイアウォールエンジンは、層API、1組のインストールされているフィルタ、およびコールアウトAPIを含む。1組のインストールされているフィルタのそれぞれは、1組のフィルタ条件および関連アクションを含む。カーネルファイアウォールエンジンは、1つまたは複数のマッチするフィルタを識別することによって、要求層から送られてきた分類要求を処理する。マッチするフィルタは、層パラメータおよびパケットコンテキストにマッチするフィルタ条件を有する。マッチするフィルタが識別されると、それらはフィルタの優先順位の順に適用される。適用されているフィルタリングのアクションが許可またはブロックの場合、そのアクションは要求層に返される。アクションがコールアウトの場合は、マッチするフィルタの識別と共に分類要求が要求層によって発行され、コールアウトモジュールの1つに渡される。コールアウトモジュールは、そのプログラムされた機能を実行して、カーネルファイアウォールエンジンにアクションを返す。あるパケットについてマッチするフィルタが識別されなかった場合、要求層は、マッチするフィルタが見つからなかったことを通知され、次いで、パケットをどのように扱うかを決定する。
例示的なユーザモードプロセスは、ユーザモードファイアウォールエンジンおよび1つまたは複数のポリシープロバイダを含む。ポリシープロバイダは、揮発性または不揮発性メモリなどの任意の適切なソースからポリシーを取得する。ポリシーは、1組のフィルタ条件および関連アクションを含む、新しいフィルタを提供するための情報のソースである。ユーザのファイアウォールエンジンは、フィルタエンジンAPIを介して、カーネルファイアウォールエンジン中の1組のインストールされているフィルタに新しいフィルタを追加する。
ユーザモードはまた、カーネルファイアウォールエンジンのインスタンスを含み、それによってユーザモード層の作成を可能にする。次いで、ユーザモード層が、カーネルファイアウォールエンジンのユーザモードインスタンスを使って、ユーザモードでのフィルタリングの適用を可能にする1組のパラメータにマッチするフィルタを識別する。
本発明の一実施形態では、カーネルファイアウォールエンジンから1組のコールアウトモジュールへのコールアウトインターフェースが、ファイアウォールの機能をほぼ無制限に拡張することを可能にしている。一例として、HTTPコンテキストコールアウトは、受付可能および受付不可能なURLアドレスを識別することによって、保護者機能(parental feature)を提供する。インターネットプロトコルセキュリティ(IPSec)コールアウトは、パケットが正しくIPSec処理を受けたかどうかを確認する。ロギングコールアウトは、確立されている基準を満たすパケットを記録し、それによってその後のパケットの検査を容易にする。侵入検出コールアウトは、既知のアルゴリズムに基づいて疑わしいパケットを識別する。
本発明はまた、信頼できるネットワークデバイスとの非送信請求通信を許可する一方、その他のネットワークデバイスからのその他の非送信請求通信をブロックするための方法も提供する。
図面を見ると、同じ参照番号は同じ構成要素を指しており、本発明を、適切なコンピューティング環境に実装されているものとして図示してある。必ずしも要求されるわけではないが、本発明を、パーソナルコンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的な状況において説明する。一般に、プログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明はまた、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境においても実施することができる。分散コンピューティング環境では、プログラムモジュールをローカルおよびリモート両方のメモリ記憶デバイスに置くことができる。
図1は、本発明を実装することができる、適切なコンピューティングシステム環境100の例を示す。コンピューティングシステム環境100は、適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関していずれかの制限を示唆することを意図したものではない。また、コンピューティングシステム環境100を、例示的な動作環境100中に示すコンポーネントのいずれか1つまたは組合せに依存し、またはそれらを必要とするものとして解釈するべきでもない。
本発明は、その他の多数の汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明で使用するのに適した周知のコンピューティングシステム、環境、および/または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な大衆消費電子製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれるが、それらに限定されるものではない。
本発明を、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的な状況で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明はまた、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境においても実施することができる。分散コンピューティング環境では、メモリ記憶デバイスを含む、ローカルおよびリモート両方のメモリ記憶媒体にプログラムモジュールを置くことができる。
図1を参照すると、本発明を実装するための例示的なシステムは、汎用コンピューティングデバイスをコンピュータ110の形態で含む。コンピュータ110のコンポーネントには、処理装置120、システムメモリ130、および、システムメモリを含めて様々なシステムコンポーネントを処理装置120に結合する、システムバス121を含めることができるが、それらに限定されるわけではない。システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む、様々なバスアーキテクチャのいずれかを使用したいくつかのバス構造のうちいずれかであってよい。例として、このようなアーキテクチャには、ISA(Indusry Standard Archtecture)バス、MCA(Micro Channel Archtecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Associate)ローカルバス、およびメザニンバスとしても知られるPCI(Peripheral Component Interconnect)バスが含まれるが、それらに限定されるわけではない。
コンピュータ110は、一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110がアクセスでき、揮発性および不揮発性媒体、取外し可能および取外し不可能媒体を含む、任意の利用可能な媒体であってよい。例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むが、それらに限定されるわけではない。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための、いずれかの方法または技術で実装された、揮発性および不揮発性、取外し可能および取外し不可能媒体が含まれる。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリ、またはその他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、またはその他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、またはその他の磁気記憶装置、あるいは、所望の情報を記憶するために使用でき、コンピュータ110がアクセスできる任意のその他の媒体が含まれるが、それらに限定されるわけではない。通信媒体は、一般に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波またはその他のトランスポートメカニズムなどの変調データ信号に実施し、また、いずれかの情報配信媒体を含む。「変調データ信号」という用語は、その特性の1つまたは複数が、その信号中の情報を符号化するように設定または変更された信号を意味する。例として、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体、および音響、RF、赤外線、およびその他の無線媒体などの無線媒体を含まれるが、それらに限定されるわけではない。上記のいずれかの組合せも、コンピュータ可読媒体の範囲に含まれるものとする。
システムメモリ130は、読取り専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132などの揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時などにコンピュータ110中の構成要素間の情報の転送の助けとなる基本ルーチンを含む、BIOS(basic input/output system)133が、通常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に接続される。コンピュータは、一般に、モニタに加えて、スピーカ197やプリンタ196などのその他の周辺出力デバイスも含むことができ、それらを、出力周辺インターフェース195を介して接続することができる。
コンピュータ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の両方に結合され、それらの間にインターフェースを提供している。ネットワークデバイスは、イーサネット(登録商標)、1394または802.11(b)などの任意の適切な技術を使って、公衆および専用ネットワークに結合される。ネットワークデバイスは、さらに、パーソナルコンピュータ、サーバ、ハンドヘルドデバイス、プリンタ、スイッチ、ルータ、ブリッジ、リピータなどの任意の適切なコンピューティングデバイスとして実装される。
ネットワークデバイス208は、ファイアウォール214、および1つまたは複数のフィルタ216を含む。ファイアウォール214は、本発明による方法が利用されているファイアウォールアーキテクチャに従って実装された、プログラムモジュールまたは1組のプログラムモジュールである。ファイアウォール214は、専用ネットワーク200に結合されたネットワークデバイス204、206、208と公衆ネットワーク202に結合されたネットワークデバイス210、212の間で交換されるネットワークパケットを調べる。本発明の一実施形態では、ファイアウォール214はまた、専用ネットワーク200内のネットワークデバイスから送られてきた、またはそれらに宛てられた、ローカルに宛てられたネットワークパケットも調べる。
ファイアウォール214を、専用ネットワーク200と公衆ネットワーク202との間で交換されるネットワークトラフィックの保護および制御を行うためにネットワークデバイス208に実装する。これをエッジファイアウォールと呼ぶ。あるいは、ファイアウォール214を、ネットワークデバイス210中に示すような単一のネットワークデバイスに実装し、それを保護する。これをホストファイアウォールと呼ぶ。また、ファイアウォールを、集中管理された1組のホストおよび/またはエッジファイアウォールとして同期させて実装することもできる。これを分散ファイアウォールと呼ぶ。ファイアウォール214を実装したネットワークデバイスまたは複数ネットワークデバイスの配置は、好ましくは、ファイアウォール214が、それが保護するよう意図されているネットワークデバイスに宛てられたすべてのネットワークトラフィックを調べることができるように選択する。
フィルタ216をファイアウォール214の一部として実装する。あるいは、フィルタ216を、ファイアウォール214がアクセス可能な別個のデータ構造の一部として実装する。ファイアウォール214およびフィルタ216は、公衆ネットワークに結合されたネットワークデバイス210、212から発信された悪意ある攻撃からネットワークデバイス204、206、208を保護するよう設計された、ファイアウォールポリシーを実行する。ファイアウォール214はまた、保護者制御、侵入の検出、ネットワークパケットのロギング、およびその他の追加されたフィルタベースの機能を容易にするなど、追加の機能も提供する。
各フィルタ216は、1組のフィルタ条件、および1つまたは複数の関連アクションを含む。フィルタ条件は、インターフェース番号、ハードウェアアドレス、ネットワークアドレス、プロトコル型、ポート番号、ペイロードデータなど、ネットワークパケットからパースし、あるいはまた、取得することができるパラメータおよび情報を含む。1つまたは複数の関連アクションは、ファイアウォールを実装しているネットワークデバイスが、フィルタ条件にマッチするパケットをどのように扱うべきかを定義する。代表的なアクションには、許可、すなわちパケットにネットワークのトラバースを続けさせること、およびブロック、すなわち、パケットを落とすことによってネットワークのさらなるトラバースを妨げることが含まれる。
ファイアウォール214は、ネットワークをトラバースするネットワークパケットを、それらがネットワークデバイス208で受信されたときに調べ、また、パケットのパラメータをフィルタ条件と比較することにより、1つまたは複数のマッチするフィルタを識別する。マッチするフィルタは、フィルタ条件がパケットパラメータにマッチしたときに得られる。パケットパラメータは、フィルタ条件のように、パケットからパースされ、あるいはまた、取得される情報を含む。ファイアウォールがマッチするフィルタを識別すると、フィルタ条件に関連する1つまたは複数のアクションが実行される。
本明細書で使用しているパケットという用語は、データを指す。パケットは、ネットワークプロトコルに従ってフォーマットされたネットワークパケット、あるいは、層、プログラム、またはモジュールによって処理されたデータストリームの場合がある。
図3は、本発明の方法を利用できるファイアウォールアーキテクチャの例示的な実施形態を示す。この方法は、ネットワークスタックのすべての層においてパケットをフィルタにかける能力を提供する。この方法は、フィルタの追加および削除を可能にし、また、フィルタのコンフリクトの識別および解決を可能にする中央管理機能を提供する。ファイアウォールアーキテクチャは、必要に応じてフィルタ層が追加および削除され、また、許可アクションおよびブロックアクション以外の特殊な機能を含むように拡張されるという点で、拡張可能である。本発明を、特にファイアウォールおよびファイアウォールフィルタに関して記載しているが、本方法を、その他のフィルタおよびポリシーを容易にし、かつ管理するために使用することもできる。具体例として、本発明は、QOS(Quality of Service)、インターネットプロトコルセキュリティ(IPSec)スイート、およびその他の暗号化プロトコル、認証プロトコル、および鍵管理プロトコルで使用されるフィルタを容易にし、かつ管理するために適している。
ファイアウォールアーキテクチャは、ユーザモードプロセス250およびカーネルモードプロセス252を含む。ユーザモードプロセス250およびカーネルモードプロセス252は、ネットワークデバイス中のオペレーティングシステムの一部として実行する。当業者には、簡略化のために図示していないが、オペレーティングシステムのユーザモードプロセス250およびカーネルモードプロセス252がさらなるコンポーネントを含むことを理解されよう。あるいは、ファイアウォールアーキテクチャの全体または一部が、1つまたは複数のプログラムモジュールまたはアプリケーションプログラムとしてオペレーティングシステムの外で実行され、または、単一のオペレーティングシステムプロセスの中で実行される。
カーネルモードプロセス252は、ネットワークスタック254、カーネルファイアウォールエンジン256、およびオプションのコールアウト258を含む。これらが協働して、カーネルモードプロセス252は、ネットワークパケットにマッチするフィルタを識別し、既知のプロトコルに従ってパケットを処理し、マッチしたフィルタによって指定されるようにその他のアクションをパケットに実行することにより、確立されたファイアウォールポリシーを実装する。
ネットワークスタック254は、データストリーム層268、トランスポート層270、ネットワーク層272、およびリンク層274を含む、複数の層を含む。ファイアウォールアーキテクチャは拡張可能であり、必要に応じて、さらなる層が動的に追加され、または削除される。追加層の例としては、サーバマスタブロック(SMB)プロトコルに従って実装されるファイルアクセス層276が挙げられる。層は、ハイパーテキスト転送プロトコル(HTTP)パーサモジュール278などのその他のプログラムモジュールと協働して動作する。
ネットワークスタック254中の層は、インバウンドおよびアウトバウンドネットワークパケットを処理する。アウトバウンドネットワークパケットは、ファイアウォールアーキテクチャをネットワークに実装するネットワークデバイスから送られてくるパケットである。インバウンドパケットは、ファイアウォールアーキテクチャを実装するネットワークデバイスで受信されるパケットである。図3に示す矢印がそれぞれ表しているように、インバウンドパケットは、ネットワークスタック254を底部から上部にトラバースし、アウトバウンドパケットは、ネットワークスタック254を上部から底部にトラバースする。
ネットワークパケットは、ネットワーク層を順番にトラバースし、それらのネットワーク層によって順番に処理される。既知の技術に従って、ネットワークスタック254中の各層は、前の層またはモジュールからパケットを受け取り、そのパケットを仕様またはプロトコルに従って処理し、処理したパケットを次の層またはモジュールに送ることができる。本発明によれば、各ネットワークスタック254中の各層はまた、パケットコンテキストを維持し、パケットコンテキストを次の層に渡し、カーネルファイアウォールエンジン256に分類要求を発行し、ファイアウォールポリシーに従ってパケットに対するアクションを実行する。
パケットコンテキストは、層から層へとパケットについて行くデータ構造である。各層は、その層が処理するように設計されている1組のパラメータ、例えば、その層がパケットから追加、パース、またはその他の方法で引き出すように設計されている情報を、コンテキストデータ構造中に追加することによって、コンテキストを維持する。パケットコンテキストに使用される例示的なデータ構造について、図5を参照しながら説明する。
ネットワークスタック254の層が本発明に従って実行するオペレーションの1つは、分類要求を発行することによってカーネルファイアウォールエンジン256を呼び出すことである。分類要求は、ネットワークスタック254中の層による、パケットにマッチするいずれかのフィルタを識別し、いずれかの関連ポリシー、例えばファイアウォールポリシーを返すことを要求するコールである。本明細書では、この分類要求を発行する層を要求ステージまたは要求層と呼ぶ。各層はまた、カーネルファイアウォールエンジン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)アドレスは、ネットワーク層272がIPプロトコルを実装する際に送信する層パラメータである。層パラメータはまた、パケットから追加またはパースされた、パケットパラメータ以外の情報も含む。具体例として、層パラメータにはローカルアドレス型も含まれる。ローカルアドレス型はIP層によって決定され、分類要求の一部として送られる。ローカルアドレス型には、ユニキャスト、ブロードキャスト、マルチキャスト、エニーキャストなどが含まれる。層API280の具体的な実装について、図6を参照しながら説明する。
オプションとして、コールアウト258を使って、許可およびブロックのフィルタアクション以外の追加機能が実装される。コールアウトは、カーネルファイアウォールエンジン256が、コールアウトモジュールの1つに対するコールアウトを関連動作として含むパケットにマッチするフィルタを識別すると、実行される。カーネルファイアウォールエンジンは、要求層によって発行された状態の分類要求、すなわちフルパケット、層パラメータ、およびパケットコンテキストを、コールアウトAPI284を介して、マッチしたフィルタの識別と共にコールアウトモジュールに送る。ファイアウォールアーキテクチャは、コールアウト258の基本セットを含む。層と同様に、追加コールアウトが必要に応じて追加され、それによって拡張アーキテクチャが提供される。コールアウトAPI284の具体的な実装について、図6を参照しながら説明する。
ユーザモードプロセス250は、ユーザファイアウォールエンジン260、および
「PP1」、「PP2」、および「PP3」として識別される、1つまたは複数のポリシープロバイダ262を含む。ポリシープロバイダ262は、ファイアウォールポリシー、すなわちインストールされているフィルタ282をファイアウォールアーキテクチャに追加するプロセスである。任意のプロセスを使って、このタスクを遂行する。一例として、レガシーIPSecポリシーサービス(LIPS)が挙げられる。レガシーIPSecポリシーサービスは、カプセル化セキュリティプロトコル(ESP)および認証ヘッダプロトコル(AH)などのIPSecプロトコルを使用すると考えられるネットワークトラフィックを定義する、フィルタを追加する。具体例として、レガシーIPSecポリシーサービスは、すべての非送信請求インバウンドパケットがESPプロトコルに従って暗号化されなければならないことを指示するファイアウォールポリシーを追加する。このポリシーはさらに、平文の非送信請求インバウンドパケットはどれも、すなわち暗号化されていないパケットはブロックされるべきであることも定めている。ポリシープロバイダ262は、揮発性または不揮発性メモリ中の任意の適切なソースから、または、管理者またはシステムユーザが直接、ポリシーを入力できるようにするグラフィカルユーザインターフェース(GUI)からポリシーを取得する。ユーザファイアウォールエンジン260は、そのポリシーを新しいフィルタに変換し、すなわち、ポリシーをフィルタ条件および関連アクションについて定義し、その新しいフィルタを1組のインストールされているフィルタ282中に追加する。
ユーザファイアウォールエンジン260はまた、フィルタアービトレーション機能およびコンフリクト解決機能も実行する。ポリシープロバイダ262がユーザモードファイアウォールエンジン260に新しいポリシーを供給すると、ユーザファイアウォールエンジン260は、その新しいポリシーから得られる新しいフィルタが、インストールされているフィルタ282のいずれかとコンフリクトするかどうかを判断する。コンフリクトがある場合、ユーザファイアウォールエンジン260は、そのコンフリクトを解決する。例えば、本発明の枠組みにおいて使用するのに適した、コンフリクトを識別して解決するための方法の例が、「Method for Managing Network Filtr Based Policy」という名称の代理人整理番号221037号に記載されている。
このアーキテクチャは、ユーザファイアウォールエンジン260とカーネルファイアウォールエンジン256の間にインターフェースを形成する、フィルタエンジンAPI266をさらに含む。フィルタエンジンAPI266は、新しいフィルタを1組のインストールされているフィルタ282中に追加し、1組のインストールされているフィルタ282を調べてフィルタのコンフリクトを検出し、解決できるようにするメカニズムを、ユーザファイアウォールエンジン260に提供する。管理API290は、フィルタエンジンAPI266の機能をポリシープロバイダ262に公開する。
ユーザモードファイアウォールエンジン260はまた、フィルタモジュール294も含む。フィルタモジュール294は、ユーザモード250中のカーネルファイアウォールエンジン256のインスタンスである。ユーザモードファイアウォールエンジン260中のフィルタモジュール294のインスタンスは、ユーザファイアウォールエンジン260が、1つまたは複数のユーザモード層であるフィルタ282のためにカーネルファイアウォールエンジン256のサービスを複製できるようにする。カーネルモード層が作成されるのと同じ方法で、ユーザモード層であるフィルタ282が追加される。フィルタモジュール294は、カーネルファイアウォールエンジン256のユーザモードインスタンスであるため、カーネルモードファイアウォールエンジンについて本明細書に記載されているどの機能もフィルタモジュール294に適用されることが理解されよう。例えば、さらなるユーザモード層をシステムアーキテクチャに追加またはそこから削除し、コールアウトを作成することができ、それによって、ユーザモード層に追加機能が提供される。
キーイングモジュールAPI288は、ユーザファイアウォールエンジン260とキーイングモジュール296との間にインターフェースを提供する。キーイングモジュールは、所与のパケットにどのセキュリティ設定を使用するかを決定するためのメカニズムを提供する。キーイングモジュールAPI288を使用して、キーイングモジュールにSAを確立する必要性を合図する。
次に、図4を参照しながら、1組のインストールされているフィルタ282について説明する。各フィルタ310は、フィルタID312、重み314、1つまたは複数のアクション316、ポリシーコンテキスト317、および1組のフィルタ条件318を含む、複数のフィールドを有する。フィルタID312は、フィルタに一意の識別を提供する。フィルタID312は、例えば、カーネルファイアウォールエンジン256が、マッチするフィルタの情報をユーザファイアウォールエンジン260およびコールアウト258に返すための手段として使用される。本発明の一実施形態では、フィルタ310を、ネットワークスタック254中の層の1つに割り当てる。フィルタID312は、カーネルファイアウォールエンジン256が、どのフィルタがどの層に割り当てられたかを追跡するために使用する。
重み314は、フィルタ310の優先順位を識別する値を含む。重み314中の値が大きいほど、そのフィルタの優先順位は高くなる。フィルタの優先順位は、カーネルファイアウォールエンジン256が、マッチするフィルタをパケットに適用する順番を決定する。
本発明の一実施形態では、優先順位の最も高いフィルタ、すなわち重みの値が最も大きいフィルタが最初に適用され、次いで、次に優先順位が高いフィルタが適用され、というように、終了アクションを有する、マッチするフィルタに遭遇するまで、それが続けられる。以下に、終了アクションについてより詳細に説明する。終了アクションを有する、マッチするフィルタが適用されると、カーネルファイアウォールエンジン256はマッチするフィルタの適用を停止する。したがって、終了アクションが適用された後は、優先順位の低い、マッチするフィルタによって指定されるアクション316は、パケットに対して実行されない。あるいは、カーネルファイアウォールエンジン256は、単一のマッチするフィルタを識別し、その単一のマッチするフィルタから1組のアクションを返す。カーネルファイアウォールエンジン256は、重み314に関係なく、すべてのマッチするフィルタを適用することもできる。
1組のフィルタ条件318は、パケットがフィルタ310にマッチするかどうかを判断する。各フィルタ条件318は、型320、データ322、および層ID:フィールドID324を含む。型320は、対応するデータ322中に含まれる変数の長さおよび数を定義する。アーキテクチャは、バイト、ショート、ロング、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:フィールドID324を使って、発信層、および発信層からのパラメータをそれぞれ識別する。発信層、および発信層からのパラメータは、パケットパラメータ、すなわち、データ322を比較する対象となる層パラメータおよびパケットコンテキストを定義する。発信層は、ネットワークスタック中の層を識別する。発信層からのパラメータは、発信層に関連する特定のパラメータを識別する。具体例を、フィルタ条件326によって示す。型はIPv4であり、それによって、データ322が32ビットIPアドレスであることを示す。層IDは、その32ビットの数がIP、すなわちネットワークの層パラメータであることを表す「IP」である。フィールドIDは「Src IP Addr」であり、これは、この例ではIP層パラメータ、特に発信IPアドレスを表す。データフィールド中に供給された発信IPアドレスは、その発信IPアドレスを有するパケットがどれもフィルタ条件を満たし、したがってフィルタにマッチすることを表す、「123.3.2.1」である。
複数のフィルタ条件318を指定することができる。複数のフィルタ条件318を指定した場合、パケットは、すべてのフィルタ条件318が満たされると、フィルタ310にマッチする。
フィルタ310中に指定されるアクション316は、許可、ブロック、またはコールアウトである。フィルタ310中のアクション316が許可またはブロックであり、パケットがフィルタ310にマッチする場合、カーネルファイアウォールエンジン256が、許可またはブロックアクションを要求層に返す。アクション316がコールアウトの場合、カーネルファイアウォールエンジン256は、フルパケット、層パラメータ、コンテキスト、およびマッチするフィルタの識別を含むそれ自身の分類要求を、指定したコールアウトモジュール258に発行する。コールアウトモジュール258は、パケットに対して、プログラムされた機能、例えば侵入検出を実行する。コールアウトは、カーネルファイアウォールエンジンにアクション(許可またはブロックのいずれか)を返すことができ、カーネルファイアウォールエンジンは、そのアクションを要求層に中継する。コールアウトはまた、許可またはブロックアクションを供給することなくパケットを供給し続けるよう、カーネルファイアウォールエンジンに指示することができる。コールアウトはまた、同様にカーネルファイアウォールエンジン256を介して要求層に返されるパケットコンテキストを維持することができる。
アクションの終了または非終了を指定することができる。デフォルトでは、許可およびブロックは終了アクションに指定されている。終了アクションとは、マッチするパケットにおいて識別されると、上述のマッチするフィルタを適用するプロセスを停止させるために使用することができるアクションである。
ポリシーコンテキスト317を使って、セキュリティポリシーやQOSポリシーなど、ファイアウォールポリシー以外のポリシーを記憶する。ポリシーコンテキストは、任意の適切なデータ構造である。例えば、ポリシーコンテキストは、そのポリシーコンテキストを追加したプロセスによって解釈される、64ビットの数である。ポリシーコンテキストおよび/またはアクションはナル値の場合もある。
図5は、ネットワークスタック254中の層およびコールアウトモジュール258によって維持され、それらに渡されるパケットコンテキストに使用される、データ構造330の例を示す。パケットコンテキスト(データ構造330)は、インバウンドまたはアウトバウンドネットワークパケットが層をトラバースするのについていき、符号336〜340で示してある1つまたは複数のエントリを含む。各エントリは、層ID:フィールドID332および対応する値334を含む。
層ID:フィールドID332は、フィルタ310中のフィルタ条件318の一部として提供される層ID:フィールドID324(図4)と同じ意味を持つ。すなわち層ID:フィールドID332は、値フィールド334中のデータについて、発信層、およびその発信層からの層パラメータを識別する。値フィールド334は、特定の層パラメータを含む。
具体例として、エントリ336は、層ID:フィールドID332「NDIS:Src. Mac Addr」を含む。「NDIS」は、リンク層274(図3)のネットワークドライバインターフェース仕様による実装を表す。「Src MAC addr.」は発信元MACアドレスを表す。したがって、層ID:フィールド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は、ネットワークスタック254中の各層とカーネルファイアウォールエンジン256との間のデータ交換を容易にする。図示するように、層API280は、Classifyメソッド350、Add Layerメソッド352、およびDelete Layerメソッド354を含む。
Classifyメソッド350は、要求層が、層パラメータ、要求層が受け取った状態のパケット、およびパケットコンテキストをカーネルファイアウォールエンジン256に送るために使用する。カーネルファイアウォールエンジン256は、(1)要求層からの層パラメータ、および(2)パケットコンテキストエントリを、要求層に割り当てられた各フィルタ310中のフィルタ条件318と比較して、マッチするフィルタを識別する。以下は、Classifyメソッドの例示的な実装である。以下のメソッドが、データ値を受け取り、または返すものとして記載されていることを理解されよう。既知のプログラミング技術によれば、これらのメソッドは、実施のデータ値の代わりに、データ値へのポインタを使用することができる。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
LayerIdは、分類要求を発行した層、すなわち要求層を識別する。図3を参照すると、層IDは、この層をデータストリーム層268、トランスポート層270、ネットワーク層272、またはリンク層274として識別する。ユーザモード層を含むその他の層は、システムに追加されていれば有効である。例えば、SMB層276が追加されている場合、それはそれ自身の一意の識別を備えている。本発明のファイアウォールアーキテクチャは、さらに、ネットワークスタック254中の層における複数のプロトコルの実装を可能にする。例えば、スタックは、2つのトランスポート層270を備えており、第1のトランスポート層はTCPプロトコルを使用し、第2のトランスポート層はUDPプロトコルを使用する。
pInFixedValuesは、要求層によって処理される層パラメータの部分集合を含む。パケットコンテキストエントリと共に、pInFixedValuesをフィルタ条件と比較することによって、パケットがフィルタとマッチするかどうかが判断される。各層のpInFixedValues中に含まれるデフォルト層パラメータを、下記の表2において識別する。層は、pInFixedValuesにおいてアクセスすることができる任意のパラメータを含むことができるため、デフォルト層は一例にすぎず、限定的なものではないことを理解されよう。
Figure 0004521225
pInContextは、要求層が受け取った状態のコンテキストのデータ構造330(図5)を含む。このパケットコンテキストは、カーネルファイアウォールエンジン256が、マッチするパケットを識別するために層パラメータに関連して使用する。
pPacketは、要求層が受け取った状態の全パケットを含む。カーネルファイアウォールエンジン256は、pPacketをマッチするフィルタを識別するために使用しない。上述のように、カーネルファイアウォールエンジン256は、pInFixedValuesおよびpInContextを使って、マッチするフィルタを識別する。pPacketは、Classifyメソッド中に含まれており、したがって、カーネルファイアウォールエンジン256は、マッチするフィルタ中のアクション316として識別される、1つまたは複数のコールアウトモジュール258にそれを送ることができる。
pActionTypeは、要求層に返されるアクション316を含む。返されるアクション316は、マッチするフィルタ中、またはマッチするフィルタによって実行されたコールアウトモジュール中に識別されたものとして、許可またはブロックを含んでいるか、または何も含んでいない。
pOutContextは、ポリシーコンテキストデータを含む。上述のように、ポリシーコンテキストは、IPSec、QOS、およびいずれかのその他の非ファイアウォールフィルタベースのポリシーに関連するネットワークポリシーを容易にするために使用される。
Add Layerメソッド352およびDelete Layerメソッド354を使って、それぞれ、ファイアウォールアーキテクチャに層を追加、およびそこから層を削除する。以下は、Add Layerメソッド352の例示的な形態である。
NTSTATUS
AddExtensionLayer(OUT PULONG pLayerId);
以下は、記載のパラメータについて述べたものである。
pLayerIdは、追加される層、すなわちAdd Layerメソッドを実行する層に返される一意の層識別値である。
以下は、Delete Layerメソッド354の例示的な形態である。
NTSTATUS
RemoveExtensionLayer(ULONG LayerId);
以下は、記載のパラメータについて述べたものである。
LayerIdは、除去される層、すなわちDelete Layerメソッドを実行する層を識別する。
コールアウトAPI284は、カーネルファイアウォールエンジン256とコールアウト258の間のデータ交換を容易にする。層API280と同様に、コールアウトAPI284はClassifyメソッドを有する。コールアウトAPI284のClassifyメソッド356は、マッチするフィルタのデータも含む点を除いて、層API280のClassifyメソッド350と同様である。以下は、コールアウトを実行するために使用されるClassifyメソッド356の例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
fixedValuesは、要求層から送られる層パラメータを含む。fixedValuesは、層API280中のClassifyメソッド350の一部として送られるpInFixedValuesデータ中の、要求層によって供給されたデータと同じデータである。
wfpContextは、コンテキストのデータ構造330(図5)を含む。このデータは、層API280中のClassifyメソッド350の一部として送られるpInContext中の、要求層によって送られるデータと同じデータである。
packetは、要求層が受け取った状態の全パケットを含む。このデータは、層API280中のClassifyメソッド350の一部として送られるpPacket中の、要求層によって送られるデータと同じデータである。
matchedFilterは、コールアウトを要求しているフィルタを識別する。一般に、マッチするフィルタは、コールアウトAPI284のClassifyメソッド356を開始するマッチするフィルタ310のフィルタID312によって識別される。
pActionTypeは、コールアウト258からカーネルファイアウォールエンジン256に返されるアクションを含む。pActionTypeが許可またはブロックの場合、それは、層API280が返すpActionTypeとして、要求層に返される。コールアウトはまた、カーネルファイアウォールエンジン256にマッチするフィルタをパケットに適用し続けるよう指示する、持続アクションを返すこともできる。
pOutContextは、セキュリティまたはQOSポリシーデータなどのポリシーコンテキストデータを含む。
コールアウトAPI408は、Notifyメソッド358も含む。Notifyメソッド385を使って、コールアウトモジュール258をそのアクション316の1つとして識別する、1組のインストールされているフィルタ282にフィルタ310が追加された際に、コールアウトを通知する。Notifyメソッドは、コールアウト258がカーネルファイアウォールエンジン256によって実行されたときに使用するバッファの割振りおよび割振り解除など、いずれかの要求されたアクションを実行する機会を、そのコールアウトに与える。以下は、Notifyメソッド358の例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
notifyは、フィルタが追加されているか、または削除されているかを表す数値を含む。例えば、1という値はフィルタが追加されていることを表し、2という値はフィルタが削除されていることを表す。
filterは、一意の値によって、フィルタが追加されているか削除されているかを識別する。これは、フィルタ310の一部として含まれているフィルタID312を供給することによって成し遂げられる。
コールアウトAPIはまた、それぞれ、コールアウトモジュールを追加および除去するための、Callout Registrationメソッド360およびCallout Deregistration362メソッドも含む。Callout Registrationメソッド360の例示的な形態は、以下の通りである。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
calloutIDは、コールアウトモジュールを登録するための一意の識別を提供する。
calloutは、ドライバサービス名、デバイス名、およびコールアウトの分類および通知機能へのポインタなど、いずれかのコールアウト特有の情報を提供する。
sdは、コールアウトのセキュリティ記述子を提供する。セキュリティ記述子は、どのプロセスがコールアウトの読取りおよび削除を行うかを識別する。
Callout Deregistartionメソッド362の例示的な形態は以下の通りである。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
calloutIDは、削除すべきコールアウトの一意のIDである。
フィルタエンジンAPI266は、ユーザファイアウォールエンジン260とカーネルファイアウォールエンジン256との間のデータ交換を容易にする。図示のように、フィルタエンジンAPI266は、Add Filterメソッド364、Delete Filterメソッド366、およびEnum Layerメソッド368を含む。上述のように、フィルタエンジンAPI266のメソッドを管理API290中に含めることにより、その中の機能をポリシープロバイダ262に公開することができる。
Add Filterメソッド364およびDelete Filterメソッド366を使って、それぞれ、1組のインストールされているフィルタ282への新しいフィルタの追加、または1組のインストールされているフィルタ282からの既存のフィルタの削除を行うことができる。以下は、Add Filterメソッド364の例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
LayerIdは、フィルタに割り当てられた層を識別する。
pFilterは、1組のインストールされているフィルタ282に追加されているフィルタ310である。
以下は、Delete Filterメソッド366の例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
LayerIdは、フィルタが割り当てられている層を識別する。
pFilterは、1組のインストールされているフィルタから削除されているフィルタである。
Enum Layerメソッド368は、ユーザファイアウォールエンジン260に、1組の基準にマッチするすべてのフィルタを識別するためのメカニズムを提供する。これによって、フィルタエンジンAPI266は、フィルタのアービトレーションおよびコンフリクトの解決を行うために、コンフリクトしているフィルタを識別することができる。以下は、Enum Layerメソッド368の例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
pEnumTemplateは、返すべきフィルタを定義するデータ構造を含む。例えば、返すべきフィルタについての、フィルタ条件が合致しなければならないパラメータを含む。
pMatchCountは、指定されたpEnumTemplateに基づいた、マッチするフィルタの数を含む。
pEnumHandleは、マッチしたフィルタのエントリの参照を含む。
キーイングモジュールAPI288は、ユーザモードキーイングモジュール層であるフィルタ282とユーザファイアウォールエンジン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を含む。
キーイングモジュールAPIは、開始コンピュータおよび応答コンピュータが使用する、IPSecによって定義されるセキュリティプロトコルなどのセキュリティプロトコルの使用を容易にするために使用される。IPSecは、認証ヘッダ(AH)およびカプセル化セキュリティプロトコル(ESP)などのプロトコルを含む。主にIETFのリクエストフォーコメント(RFC)2406に記載されているESPプロトコルは、完全性、発信元の認証、およびデータの機密性を提供するための暗号化メカニズムを使用した、認証/暗号化プロトコルである。主にIETFのRFC2402に記載されているAHプロトコルは、パケットヘッダ中のハッシュ署名を使用して、パケットデータの完全性および送信者が本人であることを検証する認証プロトコルである。
主にIETFのRFC2409に記載されているIKEプロトコルは、開始コンピュータおよび応答コンピュータが、AHおよびESPプロトコルを使って使用されているセキュリティ設定をネゴシエートするための方法を提供する。ネゴシエートされたセキュリティ設定は、セキュリティアソシエーション(SA)と呼ばれるデータ構造を形成する。SAは、ESPまたはAHがIPパケットの内容を保護するために使用する、認証アルゴリズム、暗号化アルゴリズム、鍵、および鍵の寿命などのパラメータを定義する。ESPおよびAHは確立されたSAを必要とするため、ESPまたはAHプロトコルを開始および応答コンピュータが使用する前に、IKEネゴシエーションが実行される。所与のSAは、セキュリティパラメータインデックス(SPI)として知られる値によって識別される。
開始コンピュータおよび応答コンピュータのそれぞれは、IPSecポリシーに基づいて、開始コンピュータおよび応答コンピュータの間で送信されるデータが暗号化または認証を必要とするかどうかを判断する、IPSecドライバを含む。IPSecポリシーは、ネットワークデバイスがどのようにIPSecを使用するかを定義し、また、フィルタリスト、認証方法、その他の情報を含む、1組のフィルタである。本発明の一実施形態では、IPSecポリシーが、1組のインストールされているフィルタ中に含まれるフィルタによって定義される。
IPSec SA Acquireメソッド370は、(クライアントプロキシを介して)キーイングモジュールにドライバ取得要求または外部開始要求を渡すためにユーザファイアウォールエンジン260によって呼び出される。キーイングモジュールはこのコールを返し、非同期でネゴシエーションを行う。キーイングモジュールがネゴシエーションを完了すると、キーイングモジュール層は、IPSec SA Acquire Completeメソッド374を呼び出して、ユーザファイアウォールエンジンにネゴシエーションが完了したことを通知する。以下は、IPSec SA Acquireメソッドの例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
ipsecContextは、acquireを、追加されているSAにリンクするためのハンドルである。
acquireは、(IKE)などの既知のプロトコルに従ってSAをネゴシエートするために必要な情報を含む。
inboundSAspiは、インバウンドSAに使用されるSPIを含む。
Expire Notifyメソッド372は、インバウンドSAを追加したキーイングモジュールにexpire−notifyを渡すために呼び出される。以下は、Expire Notifyメソッドの例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
expireNotifyは、終了SAを識別する情報を含む。例えば、アウトバウンドSAの場合はSPIが供給される。
IPSec SA Acquire Completeメソッド374は、ネゴシエーションを終えてすべてのSAを追加した後、またはエラーが生じた後に、ユーザファイアウォールエンジン260のコンテキストを閉じるために、キーイングモジュールによって呼び出される。このメソッドが実行された後は、キーイングモジュール層は、ipsecContextを他のどのAPIメソッドにも再使用しない。以下は、IPSec SA Acquire Completeメソッドの例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
engineHandleは、ユーザファイアウォールエンジン260にハンドルを提供する。
ipsecContextは、ユーザファイアウォールエンジン260がIPSec Acquireメソッドを使って渡すコンテキストである。
statusは、SAネゴシエーションのステータスおよびその他の詳細を提供する。ユーザファイアウォールエンジン260は、acquireがFwpKeyingModuleInitiate0によって外部で開始された場合に、このstatusを返す。
Keying Module Registerメソッド376は、ユーザファイアウォールエンジン260に登録し、その関数ポインタを渡すためにキーイングモジュール層によって呼び出される。以下は、Keying Module Registerメソッドの例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
enginHandleは、ユーザファイアウォールエンジン260にハンドルを提供する。
keyingModuleIDは、キーイングモジュールの一意のIDである。
keymodInfoは、IPSec SA Acquire関数およびIPSec SA Expire関数を処理するためのポインタなど、キーイングモジュール層に関する登録情報を含む。
Keying Module Deregisterメソッド378は、ユーザファイアウォールエンジン260から登録を解除するために、キーイングモジュールによって呼び出される。以下は、Keying Module Deregisterメソッドの例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
engineHandleは、ユーザファイアウォールエンジン260へのハンドルである。
keyingModuleIDは、キーイングモジュール層の一意のIDである。
IPSec Inbound Get SPIメソッド380は、新しいインバウンドSAのSPIを取得するためにキーイングモジュール層によって呼び出される。IPSec Inbound Get SPIメソッド380は、通常、キーイングモジュール層が応答ネットワークデバイス中で実行する際に使用される。以下は、IPSec Inbound Get SPIメソッドの例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
engineHandleは、ユーザファイアウォールエンジン260へのハンドルである。
ipsecTrafficDescriptionは、インバウンドラーバル(larval)SAを作成するための5要素からなる記述であるである。5要素には、発信元および宛先IPアドレス、発信元および宛先ポート、トランスポート層のプロトコル型が含まれる。
udpEncapInfoは、ラーバルSAを作成するためのUDPカプセル化データである。UDPカプセル化は、セキュリティプロトコルに従ってフォーマットされたパケットを非暗号化UDPパケットに埋め込む、既知の方法である。
inboundSpiはインバウンドSAのSPIである。
Add Inbound SAメソッド382は、インバウンドSAを追加するために、すなわちラーバルSAを更新するためにキーイングモジュール層によって呼び出される。ユーザファイアウォールエンジン260は、SA中のSPIを使って、このコールをその内部状態にマップし、SAをIPSecドライバまでioctlする。以下は、Add Inbound SAメソッドの例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
engineHandleは、ユーザファイアウォールエンジンへのハンドルである。
inboundSAは、インバウンドSAを含む。
Add Outbound SA384メソッドは、アウトバウンドSAを追加するためにキーイングモジュールによって呼び出される。ユーザファイアウォールエンジンは、インバウンドSPIパラメータを使って、このコールをその内部状態にマップし、SAをIPSecドライバまでioctlする。以下は、Add Outbound SAメソッドの例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
engineHandleは、ユーザファイアウォールエンジン260へのハンドルである。
inboundSpiは、インバウンドSAのSPIであり、これとアウトバウンドSAが対になる。
outboundSAは、アウトバウンドSAを含む。
Inbound SA Expireメソッド386は、前に追加されたインバウンドSAを終了するためにキーイングモジュールによって呼び出される。以下は、Inbound SA Expireメソッドの例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
engineHandleは、ユーザファイアウォールエンジン260へのハンドルである。
expireは、終了させるSAについてのデータを含む。
Keying Module Initiateメソッド388は、RAS、Winsock APIなどの既知の外部アプリケーションがネットワークトラフィックの送信を開始する前に、キーイングモジュール層を開始してSAをセットアップするために、そのアプリケーションによって呼び出される。ユーザファイアウォールエンジン260は、非同期でRPCコールをペンドし、IPSecドライバからSPIを取得し、acquireを該当するキーイングモジュールに渡す。キーイングモジュールがFwpIPSecSAAcquireComplete0を呼び出すと、ユーザファイアウォールエンジンは、ネゴシエーションステータスを使って非同期RPCを完了する。以下は、Keying Module Initiateメソッドの例示的な形態である。
Figure 0004521225
以下は、記載のパラメータについて述べたものである。
engineHandleは、ユーザファイアウォールエンジン260へのハンドルである。
acquireは、SAをネゴシエートするために必要なデータを含む。
waitEventは、ネゴシエーションステータスが利用可能になる際にトリガされるイベントへのハンドルである。クライアント、すなわち呼び出し側の外部アプリケーションが、ネゴシエーションが完了するまで待ちたくないという場合には、このパラメータをNULLに設定することができる。内部的には、クライアントプロキシが任意でこのイベントをRPCに渡し、非同期RPCコールが完了してからそのイベントを設定するように要求する。
negotiationStatusは、ネゴシエーションの結果を含む。waitEventがNULLの場合、negotiationStatusはNULLである。NULLではない場合、negotiationStatusは、waitEventがトリガされるまで有効である。
図8は、ネットワークスタック254中の層が本発明に従って使用するメソッドを示す。図8に示すメソッドを、1つまたは複数のユーザモード層であるフィルタ282が、フィルタモジュール294およびユーザファイアウォールエンジン260に呼応して使用する場合もある。
各層は、ネットワークパケットの処理、カーネルファイアウォールエンジン256への分類要求の発行、パケットコンテキストの管理を含めて、複数の機能が可能である。本発明の一実施形態では、これらの機能が、ネットワークスタック254中にインストールされているシム400、402、404、406中の各層において実行される。あるいは、これらの機能が、シムの必要なく、個々の層に直接、組み込まれる。
ネットワークスタック254は、データストリーム層268、トランスポート層270、ネットワーク層272、およびリンク層274を含む。本発明を説明する目的で、リンク層274をNDISドライバとして実装し、ネットワーク層272をIP層として実装し、トランスポート層270をTCP層として実装し、データストリーム層268をHTTP層として実装している。層を、任意のプロトコルに従って実装できることを理解されよう。例えば、トランスポート層はユーザデータグラムプロトコル(UDP)にも対応する。アプリケーション層は、ファイル転送プロトコル(FTP)、リモートプロシージャコール(RPC)、簡易メール転送プロトコル(SMTP)、サーバマスタブロック(SMB)などをサポートする。上述のように、さらなる層をアーキテクチャに追加することも、また層を削除することもできる。例えば、図6を参照しながら説明したAdd LayerメソッドおよびDelete Layerメソッドを使って、層の追加および削除が行われる。
408(a)〜(d)で示すネットワークパケットは、ネットワークスタック254中の層をトラバースし、それらの層によって処理されるネットワークパケットを示している。パケット408(a)〜(d)がインバウンドパケットの場合は、ネットワークスタックを底部から上部に向かってトラバースする。パケット408(a)〜(d)がアウトバウンドパケットの場合は、ネットワークスタックを上部から底部に向かってトラバースする。このような処理はよく知られているが、本発明を説明する目的で、以下に簡単に記載する。
ネットワークデバイス中で実行しているウェブブラウザなどのアプリケーションが、別のネットワークデバイス上に置かれているウェブページのコンテンツに対する要求を開始したと想定すると、このアプリケーションは、その要求をデータストリーム層268に発行する。この例では、データストリーム層268は、HTTPプロトコルに従ってその要求をフォーマットし、それをパケット408(a)でトランスポート層に送る。トランスポート層270は、パケット408(a)を受け取る。TCPプロトコルを実装しているトランスポート層270は、そのデータを1つまたは複数のパケット中に置き、各パケットにはTCPヘッダが備えられる。TCPヘッダは、発信元および宛先ポート、プロトコル型すなわちTCP、シーケンス番号、フラグ、およびチェックサムなどの情報を含む。トランスポート層は、次いで、408(b)で示すパケットをネットワーク層に送る。
ネットワーク層はIPプロトコルを実装し、データを、発信元および宛先IPアドレス、フラグ、チェックサム、その他の既知の情報を含むIPヘッダ内にカプセル化する。IPヘッダはまた、パケットが断片化されているかどうかも示す。パケットは、IPパケットのサイズが、パケットを伝送するために使用されているネットワーク技術の最大伝送単位(MTU)サイズを超えている場合に断片化される。例えば、イーサネット(登録商標)技術は、MTUを1500バイトに指定している。IPパケット長がこのMTUを超えた場合、2つ以上のIPパケットに断片化され、そのそれぞれがそれ自身のIPヘッダを備え、MTUに等しいかそれよりも短い長さになる。
本発明の一実施形態では、ネットワーク層を第1および第2の層に分割する。断片層と呼ばれる第1の層は、IPパケットの断片を処理する。完全に組み立てられた層と呼ばれる第2の層は、例えば、アウトバウンドIPパケットが断片化される前、およびインバウンドIPパケットが単一のIPパケットに再度組み立てられた後のフルIPパケットを処理する。ネットワーク層の処理および可能な断片化の後、パケット408(c)がリンク層274に送られる。リンク層274は、発信元および宛先MACアドレスが記載されたMACヘッダ、およびその他の情報を提供することにより、データをさらにパケット化する。次いで、パケットはネットワークインターフェースカード(NIC)に送られ、そこで、物理的にネットワークに伝送される。
インバウンドパケットは、相互的に処理される。パケット408(d)は、NICによって受信され、リンク層274に送信される。MACヘッダが除去され、パケット408(c)はネットワーク層に送信される。そこで、必要であればIPパケットの断片が再び組み立てられ、IPヘッダがパースされる。ネットワーク層は、次いで、パケット408(b)をトランスポート層に送り、そこで、TCPヘッダが除去され、データストリームが複数のTCPパケットで送られてきた場合にはデータストリームが組み立てられる。最後に、データストリームであるパケット408(a)がデータストリーム層268に送られ、そこで、アプリケーションプロトコル、この場合HTTPプロトコルによって、データが復号される。
各アウトバウンドパケットについて、ネットワークスタックの層は、パケットコンテキスト410(a)〜(c)を維持する。各インバウンドパケットについて、ネットワークスタックはパケットコンテキスト412(a)〜(c)を維持する。パケットコンテキストは、各パケットがネットワーク層をトラバースするのについていく。パケットコンテキストはまた、コールアウト258(図3)に渡され、場合によって、コールアウト258によって修正される。
パケットコンテキストは、パケットが各層で処理されるのにつれて更新される。各層は、その層パラメータをパケットコンテキストに追加し、それによって、その情報をそれ以降の層またはプロセスに供給する。パケットコンテキスト412(a)で示すように、リンク層274は、インバウンドパケットの発信元および宛先MACアドレスおよびインターフェース番号を追加する。このコンテキストをネットワーク層272が受け取り、そこで、パケットコンテキスト412(b)で示すように発信元および宛先IPアドレスが追加される。トランスポート層270はこのコンテキストを受け取り、パケットコンテキスト412(a)で示すようにポート番号を追加する。
アウトバウンドパケットに関連するパケットコンテキスト410(a)〜(c)についても、同様のプロセスが行われる。データストリーム層268は、パケットコンテキスト410(a)で示すように、パケットペイロードからURLアドレスなどの情報を追加する。トランスポート層270は、パケットコンテキスト410(b)で示すように、発信元および宛先ポート番号をさらに追加する。また、ネットワーク層は、パケットコンテキスト410(c)で示すように、発信元および宛先IPアドレスを追加する。
各層は、その層が利用可能ないずれかのコンテキスト情報を追加できることを理解されよう。一般に、これには、層が処理するよう設計されているいずれかの情報、すなわち、パケットから追加され、パースされ、あるいはまた引き出されるいずれかの情報が含まれる。
パケットおよびそれに対応するコンテキストが各層において受信されると、その層は、層パラメータを識別して414で表す分類要求を送ることにより、要求層として機能する。分類要求414は、層パラメータ416、前の層から受け取ったパケットコンテキスト418、およびフルパケット420を含む。この分類要求を発行するために使用される典型的な方法が、層API280(図6)を参照しながら説明したClassifyメソッド350である。
各分類要求に応答して、カーネルモードファイアウォールエンジン256は、層パラメータ416およびパケットコンテキスト418を、要求層に割り当てられたフィルタのフィルタ条件318(図4)と比較する。カーネルファイアウォールエンジン256は、最も重み314が大きい、マッチするフィルタ310からのアクション424と共に、422で表す応答を要求層に送る。カーネルファイアウォールエンジン256はまた、ポリシーコンテキスト426を返す。カーネルファイアウォールエンジン256は、マッチするフィルタを何も識別しなかった場合には、マッチするフィルタが存在しないことを要求層に通知する。カーネルファイアウォールエンジン256は、マッチするフィルタが終了アクション、すなわち許可またはブロックを指定するまで、または要求層に割り当てられたすべてのフィルタがチェックされるまでのどちらか短い間、マッチするフィルタを識別し続ける。あるいは、カーネルファイアウォールエンジン256は、すべてのマッチを識別し、アクションを単一の応答で要求層に返す。
全般的に示すように、層パラメータの識別は、ネットワークスタック254の層によって実行される通常の層の処理の一環として行われる。さらなるパケットのパースは必要とされず、それによって、システム性能への影響が最小限に抑えられる。さらに、層がパケットコンテキストの維持において協働するため、カーネルファイアウォールエンジン256は、フィルタ条件とパケットパラメータの比較を、通常はこれらのパケットパラメータにアクセスできない層において行うことができる。例えば、ネットワーク層272は、発信元および宛先MACアドレスを含むリンク層274から、インバウンドパケットのコンテキストを受け取る。ネットワーク層272は、ネットワーク層パラメータ、例えば発信元および宛先IPアドレスを備えた分類要求およびパケットコンテキストを発行するので、カーネルファイアウォールエンジン256は、MACアドレスが通常は利用可能ではなくても、ネットワーク層272においてIPアドレスとMACアドレスとの両方にフィルタをかけることができる。
次に、図9を参照しながら、本発明のファイアウォールアーキテクチャを使って含められた例示的な1組のコールアウト(コールアウトモジュール)258を説明する。コールアウトモジュール258は、HTTPコンテキストコールアウト430、侵入検出コールアウト436、IPSecコールアウト438、およびロギングコールアウト440を含む。
HTTPコンテキストコールアウト430は、受付可能な、あるいは受付不可能なURLアドレスのキャッシュ432を維持する。HTTPコンテキストコールアウト430は、URLアドレスを維持して、それらを受付可能または受付不可能に分類する、公衆ネットワークにインターフェースされたサーバ434に、周期的にアクセスする。カーネルファイアウォールエンジン256がHTTPコンテキストのコールアウトを実行すると、コールアウトはパケットを調べ、必要であればURLアドレスを復号し、キャッシュ432中の情報に基づいて、それが受付可能であるかどうかを判断する。次いで、HTTPコールアウトは、そのURLアドレスが受付可能であれば、アクション316として許可を、また受付不可能であればブロックを、カーネルモードファイアウォールエンジン256に返す。カーネルファイアウォールエンジン256は、そのアクション316を層API280を介して要求層に返す。HTTPコンテキストコールアウトは、保護者制御機能を実装する際に役立つ。
侵入検出コールアウト436は、利用可能なアルゴリズムおよび技術を使ってパケットを調べ、ウィルスの徴候または疑わしいパケットを識別する。疑わしいパケットが検出されると、ブロックのアクション316が返される。疑わしいパケットの例としては、IPおよびTCPヘッダ中のすべてのフラグが1という値に設定されているパケットが挙げられる。このようなパケットは有効であるはずがなく、攻撃を表している可能性があるため、疑わしいと言える。あるいは、侵入検出コールアウト436は、パケットコンテキストを修正して、そのパケットの疑わしい性質を表すフラグを立て、それによって、ネットワークスタック中のその後の層にパケットが進むのをブロックするかどうかについての決定を先延ばしにする。
IPSecコールアウト438は、パケットに正しいセキュリティプロトコルが適用されたかどうかを判断するように設計されている。IPSecコールアウト438は、IPSecプロセスと通信し、IPSecポリシーに基づいて、パケットがIPSec処理を受けるよう意図されていたかどうかを判断する。そうである場合には、IPSecコールアウト438は、パケットコンテキストに基づいて、パケットが実際にIPSec処理を受けたかどうかを判断する。パケットがIPsecに従って処理されるよう意図されていたにもかかわらず処理されていなかった場合、例えば、パケットが平文であった場合には、ブロックのアクションが返される。パケットがIPSec処理を受けている場合、IPSecコールアウトは、正しいSAが適用されていると確認する。
ロギングコールアウト440を使って、フルパケットなどのパケットに関する情報を、後で使用するために保存しておく。その後に使用する例としては、例えば、ブロックされたために、またはシステムに対する悪意ある攻撃を追跡するために、突然、ネットワークをトラバースできなくなっている特定のネットワークトラフィックに対する診断が挙げられる。
図10は、本発明のファイアウォール機能全体を実装するために使用されるプロセス450を示す。ステップ452で、要求層は、要求中のパケットパラメータを識別するパケットに対する分類要求を発行する。ステップ454で、分類要求中のパケットパラメータにマッチするフィルタが識別される。次いで、ステップ456に示すように、マッチするフィルタに基づいて、そのパケットを落とすべきかどうかの決定がなされる。パケットを落とす決定がなされた場合、パケットが落とされて、プロセスは、さらなるパケット処理を行うことなく終了する。パケットを落とさない決定がなされた場合は、ステップ458に示すように、要求層は、要求層で実装されているプロトコルに従ってパケットを処理し、パケットコンテキストのデータ構造は修正される。さらなる層がない場合、プロセスは同じく終了する。さらなる層がある場合は、ステップ462に示すように、処理されたパケットおよびパケットコンテキストが次の層に送られる。このプロセスは、パケットが落とされるまで、あるいはパケットがすべての層をトラバースするまで続く。
図11は、要求層がパケットを処理し、分類要求を発行し、パケットコンテキストを維持するために使用する、500で表す方法を示す。本明細書に記載の方法は、様々なネットワーク層のシムモジュール400、402、404、406によって実行される。あるいは、方法500は、別個のシムを必要とすることなく、ネットワークスタックの層のうちから一体化されたプロセスによって実行される。方法500を、1つまたは複数のユーザモード層によって実装することもできる。
ステップ502で、要求層は、前の層からフルパケット408および対応するパケットコンテキスト412を受け取る。アウトバウンドパケットの場合、前の層は、ネットワークスタックにおける位置が要求層よりも高い。インバウンドパケットの場合、前の層は、ネットワークスタックにおける位置が要求層よりも低い。
ステップ504で、要求層は、層パラメータを識別する。層パラメータは、要求層が、インバウンドパケットからパラメータをパースすることによって、またはアウトバウンドパケットにそれらのパラメータを追加することによって処理したパラメータである。層パラメータは、ローカルアドレス型など、パケットから引き出すことができるその他の情報を含む場合がある。デフォルトの層パラメータを上記表2に記載してあり、また、それらは層API280中のClassifyメソッド350のpInFixedValues中に含まれている。
ステップ506で、要求層は、分類要求をカーネルファイアウォールエンジン256に発行する。分類要求を発行する例示的な方法を、層2PI280中のClassifyメソッド350を参照しながら説明した。
この分類要求に応答して、アクションが要求層に返される。要求層は、返されてきたアクションに基づいて、パケットを落とすかどうかを判断する(ステップ508)。カーネルファイアウォールエンジンがアクションとしてブロックを返してきた場合には、要求層はパケットを落とす。要求層はまた、カーネルファイアウォールエンジン256がマッチするフィルタが見つからないためにそのアクションを返してきた場合にも、パケットを落とす。マッチするフィルタが見つからない場合に要求層がパケットを落とすかどうかは、システム規模のベースで、または層ごとのベースで構成可能である。
返されてきたアクションが許可である場合には、さらなるパケット処理が行われる。ステップ510で、要求層は、パケットコンテキストを、層情報、一般に分類要求中に層パラメータとして含まれていたのと同じ型の情報を含むように修正する。したがって、(上記の)表2は、層パラメータを識別するだけでなく、各層がパケットコンテキストに追加したデフォルト情報も識別する。パケットコンテキストは、例えば図5を参照しながら説明したデータ構造などのようなデータ構造中に維持される。
ステップ512で、要求層は、その層のプロトコル実装に従ってパケットを処理する。このような処理はよく知られているため、本明細書で詳説する必要はない。例示的なプロトコル実装には、アプリケーション層の場合のHTTP、FTP、SMTP、RPC、トランスポート層の場合のTCPおよびUDP、ネットワーク層の場合のIP、リンク層の場合のNDISが含まれる。
ステップ514で、要求層は、層プロトコルに従って処理されたパケットを、修正されたパケットコンテキストと共に次の層に渡す。パケットがインバウンドパケットの場合、次の層は、ネットワークスタック中のより高い層である。パケットがアウトバウンドパケットの場合、次の層は、ネットワークスタック中のより低い層である。プロセス500は、ネットワークスタック中の各層によって繰り返され、パケットがネットワークスタック中のすべての層をトラバースするまで、またはパケットがネットワークスタック中の層の1つによって落とされるまで続く。
次に、図12を参照しながら、カーネルファイアウォールエンジン256がマッチするフィルタを識別し、要求層にアクションを返すために使用する、例示的な方法520について説明する。上述のように、カーネルファイアウォールエンジン256の機能は、ユーザファイアウォールエンジン中で実行するフィルタモジュール294によっても実行され得る。
ステップ522で、カーネルファイアウォールエンジン256は、例えばClassfyメソッド350を使って、パケット、層パラメータ、およびパケットコンテキストを、層API280を介して要求層から受け取る。
ステップ524で、カーネルファイアウォールエンジン256は、1つまたは複数のマッチするフィルタを識別する。本発明の一実施形態では、フィルタが特定の要求層に割り当てられる。カーネルファイアウォールエンジン256は、フィルタが要求層に割り当てられ、パケットパラメータがすべてのフィルタ条件318(図5)にマッチする場合に、フィルタをマッチするものとして識別しようとするにすぎない。上述のように、パケットパラメータは、要求層からの層パラメータおよびパケットコンテキストの両方を識別することを含む。マッチするフィルタがすべて識別された後、カーネルファイアウォールエンジン256は、マッチするフィルタそれぞれの重み314に基づいて、それらのフィルタを順序付ける。
ステップ526で、カーネルファイアウォールエンジン256は、まだ適用されていないフィルタのうち最も大きい重み314を有するフィルタを適用する。具体的には、カーネルファイアウォールエンジン256は、フィルタ中に指定されているアクション316を識別する(ステップ528)。アクション316がコールアウトモジュール258のうち1つを指定している場合、カーネルファイアウォールエンジン256は、ステップ532に示すように、コールアウトAPI284を介してコールアウトを実行する。コールアウトを実行するために使用される例示的な方法を、コールアウトAPI中のClassifyメソッド356(図6)を参照しながら説明した。コールアウトは、カーネルファイアウォールエンジン256にアクションを返すことができる。
アクションがコールアウトではない場合、またはコールアウトが実行された後、カーネルファイアウォールエンジン256は、ステップ536に示すように、マッチするフィルタからの関連アクション、またはコールアウトによって識別された関連アクションを要求層に返す。あるいは、カーネルファイアウォールエンジン256は、マッチするフィルタがすべて適用されるまで、アクションを返すのを待つ。
ステップ534で、カーネルファイアウォールエンジン256は、マッチするフィルタがさらに存在するかどうかを判断する。存在しない場合、プロセスは終了する。マッチするフィルタがさらに存在する場合、プロセスはステップ526に戻り、そこで次に優先順位が高いフィルタが適用される。プロセスは、マッチするフィルタがすべて適用されるまで続く。あるいは、プロセスは、パケットに対する終了アクションが識別されると終了する。パケットについてマッチするフィルタが識別されない場合、カーネルファイアウォールエンジン256は、マッチするフィルタが見つからなかったことを要求層に通知する。次いで、要求層は、そのパケットをどのように扱うか、すなわちパケットを許可するかブロックするかを判断する。
図13は、非送信請求インバウンドパケットからの悪意ある攻撃を防ぐ一方、未知のネットワークアドレスから通信を開始した信頼できるユーザとの通信を許可するために、本発明に従って使用される方法(プロセス)560を示す。
ステップ562で、本発明のファイアウォールを実装している応答コンピュータは、非送信請求インバウンドパケットを受け取る。プロセス560は、ステップ564で、そのインバウンドパケットが認証要求であるかどうかを判断する。認証要求は、例えば、IKEプロトコルに準拠している。インバウンドパケットが認証要求である場合、ステップ566に示すように、応答コンピュータは、開始コンピュータの認証を試みる。開始コンピュータを認証するために使用される1つの方法として、デジタル証明書による方法が挙げられる。デジタル証明書は認証局(CA)によって発行され、その証明書が本物であることを受信者が確認できるように、ユーザ名、シリアル番号、満了期限、公開鍵のコピー(メッセージおよびデジタル署名を暗号化するために使用される)、CAのデジタル署名などの情報を含んでいる。
次いで、プロセスは、ステップ568で、認証プロセスが成功したかどうかを判断する。認証が不成功だった場合、すなわち、応答コンピュータが開始コンピュータを認証することができなかった場合、プロセスは終了する。
認証プロセスが成功した場合、ステップ570に示すように、新しいフィルタが作成される。この新しいフィルタは、IPアドレス、ポート番号、プロトコル型などの応答コンピュータのアドレス情報にマッチするフィルタ条件を含んでおり、関連アクションとして許可を含んでいる。あるいは、この新しいフィルタは、開始コンピュータと応答コンピュータとの間で同意されているセキュリティ設定にマッチするフィルタ条件を備えている。ステップ572に示すように、認証要求ではないインバウンドパケットが受信されると、プロセスは、開始コンピュータが認証されているかどうか、すなわち、許可のアクションを備えた、マッチするフィルタが存在するかどうかを判断する。マッチするフィルタがアクションとして許可を備えている場合、ステップ574に示すように、パケットはネットワークをトラバースすることを許可される。そうでない場合、ステップ576に示すように、パケットの更なるネットワークのトラバースはブロックされる。
非送信請求ユーザからの安全な通信を提供するための方法560に代わる方法として、すべてのインバウンドパケットが、IPSecによって提供されるようなセキュリティプロトコルに準拠することを要求するフィルタを作成する。したがって、パケットは、ブロックされることなくフィルタを通過できるようになる前に、まず、ステップ566に記載されるように認証されたSAを確立しなければならない。
本明細書に記載されている参照はすべて、参照によりそのすべてが本明細書に組み込まれている。
本発明の原理を適用できる多くの可能な実施形態を考えて、図面に関連して本明細書に記載してある実施形態は例示にすぎず、発明の範囲を限定するものとして解釈してはならないことを理解されたい。例えば、当業者は、ソフトウェア中に示されている、例示の実施形態の構成要素をハードウェアに実装することができ、またその反対も可能であること、あるいは、例示の実施形態を、本発明の趣旨から逸脱することなく、その配置および詳細について修正可能であることを認識されるであろう。さらに、当業者は、その他のプロセスがQOSやIPSecなどのフィルタを使用することを認識されよう。本発明を使って、これらのプロセスおよび追加プロセスのフィルタおよびフィルタベースのポリシーを管理および実行することができる。したがって、本明細書に記載の発明は、添付の特許請求の範囲およびその均等物の範囲内に含まれる、すべてのこのような実施形態を考慮したものである。
本発明が常駐する、例示的なコンピュータシステムの全体を示す構成図である。 本発明が利用される、例示的なネットワーク環境の全体を示す構成図である。 本発明の方法を使用できる、ファイアウォールアーキテクチャの全体を示す構成図である。 本発明で使用される、例示的なフィルタを示す構成図である。 本発明で使用される、例示的なパケットコンテキストのデータ構造を示す構成図である。 本発明で使用される、例示的な1組のアプリケーションプログラミングインターフェースを示す構成図である。 本発明で使用される、例示的なアプリケーションプログラミングインターフェースを示す構成図である。 本発明に従ってネットワーク層が実行する機能を示す構成図である。 本発明で使用される、例示的な1組のコールアウトを示す構成図である。 本発明に従ってファイアウォールを実装するために使用される、例示的な方法を示す流れ図である。 ネットワーク層がファイアウォールを実装するために使用する、例示的な方法を示す流れ図である。 ファイアウォールエンジンがファイアウォールを実装するために使用する、例示的な方法を示す流れ図である。 信頼できるネットワークデバイスによって始動されたファイアウォールを介して非送信請求通信を許可するために使用される方法を示す流れ図である。
符号の説明
100 コンピューティングシステム環境
110 コンピュータ
120 処理装置
121 システムバス
130 システムメモリ
131 読取り専用メモリ(ROM)
132 ランダムアクセスメモリ(RAM)
133 基本入出力システム(BIOS)
134、144 オペレーティングシステム
135、145 アプリケーションプログラム
136、146 その他のプログラムモジュール
137、147 プログラムデータ
140 インターフェース
141 ハードディスクドライブ
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 ポリシープロバイダ
266 フィルタエンジンAPI
268 データストリーム層
270 トランスポート層
272 ネットワーク層
274 リンク層
276 SMB層
278 ハイパーテキスト転送プロトコル(HTTP)パーサモジュール
280 層API
282 1組のインストールされているフィルタ、1つまたは複数のユーザモード層
284 コールアウトAPI
288 キーイングモジュールAPI
290 管理API
294 フィルタモジュール
296 キーイングモジュール
310 フィルタ
312 フィルタID
314 重み
316 アクション
317 ポリシーコンテキスト
318 フィルタ条件
320 型
322 データ
324 層ID:フィールドID
326 フィルタ条件
330 データ構造、パケットコンテキスト、コンテキストデータ構造
332 層ID:フィールドID
334、336、338、340 エントリ、値
350、356 Classifyメソッド
352 Add Layerメソッド
354 Delete Layerメソッド
358 Notifyメソッド
360 Callout Registrationメソッド
362 Callout Deregistration
364 Add Filterメソッド
366 Delete Filterメソッド
368 Layerメソッド
370 IPSec SA Acquireメソッド
372 Expire Notifyメソッド
374 IPSec SA Acquire Completeメソッド
376 Keying Module Registerメソッド
378 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、406 シム、シムモジュール
406 Delete Layerメソッド
408 コールアウトAPI
408(a)〜(d) パケット
410(a)〜(c) パケットコンテキスト
412(a)〜(c) パケットコンテキスト
414 分類要求
416 層パラメータ
418 パケットコンテキスト
420 フルパケット
424 アクション
426 ポリシーコンテキスト
430 HTTPコンテキストコールアウト
432 キャッシュ
434 サーバ
436 侵入検出コールアウト
438 IPSecコールアウト
440 ロギングコールアウト

Claims (19)

  1. 要求ステージでファイアウォールポリシーを実装するための方法において、前記要求ステージがファイアウォールフレームワーク中の複数のステージの1つであり、前記ファイアウォールフレームワークが、複数のフィルタがインストールされているファイアウォールエンジンをさらに含む方法であって、
    前記要求ステージによって、前記複数のステージのうちの前のステージからパケットを受け取ること、
    前記前のステージからパケットコンテキストのデータ構造を受け取ることであって、前記パケットコンテキストが前記パケットに関連する前のステージのデータを含むこと、
    前記要求ステージによって、前記パケットに関連する1組のパラメータを識別すること、
    前記パケットに関連する1組のパラメータおよび前記パケットコンテキストを含む分類コールを発行すること
    前記要求ステージによって、前記分類コールに応答して、前記インストールされている複数のフィルタの少なくとも1つによって指定された前記ファイアウォールポリシーに従っアクションを受け取ること、および
    前記1組のパラメータを追加することによって前記パケットコンテキストのデータ構造を修正すること
    を含むことを特徴とする方法。
  2. 前記アクションは、前記パケットにネットワークのトラバースを続けさせる命令であって、
    前記パケットを層プロトコルに従って処理すること、および
    前記複数のステージのうちの次のステージに前記パケットを送ること
    をさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記パケットはネットワークデバイスに宛てられたアウトバウンドパケットであり、前記1組のパラメータは、前記要求ステージによって実装されたプロトコルに従って前記パケットに追加される情報を含むことを特徴とする請求項1に記載の方法。
  4. 前記パケットはネットワークデバイスから受け取ったインバウンドパケットであり、前記1組のパラメータは、前記要求ステージが、前記要求ステージによって実装されたプロトコルに従って前記インバウンドパケットからパースした情報を含むことを特徴とする請求項1に記載の方法。
  5. 前記複数のステージは、オペレーティングシステムのカーネルモードで実行することを特徴とする請求項1に記載の方法。
  6. 前記複数のステージは、オペレーティングシステムのユーザモードで実行することを特徴とする請求項1に記載の方法。
  7. 前記1組のパラメータは、前記要求ステージの識別、パラメータ型、および値を含むことを特徴とする請求項に記載の方法。
  8. 前記要求ステージは、前記修正されたパケットコンテキストのデータ構造を前記複数のステージのうちの次のステージに送ることを特徴とする請求項に記載の方法。
  9. 1組のインストールされているフィルタを含むファイアウォールエンジンにファイアウォールポリシーを実装するための方法において、前記インストールされているフィルタが、それぞれ、1組のフィルタ条件および関連アクションを含む方法であって、
    要求層に関連する第1のパケット情報とパケットコンテキストのデータ構造に関する第2のパケット情報とを含む1組のパケットパラメータを受け取ること、
    1組のマッチするフィルタを識別することであって、前記1組のマッチするフィルタの各フィルタが前記パケットパラメータに対応するフィルタ条件を有すること、および
    前記マッチするフィルタの少なくとも1つから前記関連アクションを識別すること
    を含むことを特徴とする方法。
  10. 前記1組のマッチするフィルタの各フィルタは優先順位を持っており、優先順位の最も高いフィルタからの前記関連アクションは非終了アクションであり、
    終了アクションに到達するまで、前記1組のマッチするフィルタのうち1つまたは複数の優先順位が低いフィルタからの前記関連アクションを識別することをさらに含むことを特徴とする請求項に記載の方法。
  11. 前記1組のマッチするフィルタのうちのフィルタがコールアウトモジュールを識別し、前記方法は、
    前記パケットパラメータ、および前記1組のマッチするフィルタのうちの前記フィルタの識別を前記コールアウトモジュールに送ることをさらに含むことを特徴とする請求項に記載の方法。
  12. 前記コールアウトモジュールは前記パケットコンテキストを修正することを特徴とする請求項11に記載の方法。
  13. 前記ファイアウォールエンジンは、オペレーティングシステムのユーザモードで実行することを特徴とする請求項に記載の方法。
  14. 前記ファイアウォールエンジンは、オペレーティングシステムのカーネルモードで実行することを特徴とする請求項に記載の方法。
  15. 要求ステージでファイアウォールポリシーを実装するためのコンピュータ可読命令を実行するためのコンピュータ可読媒体において、前記要求ステージがファイアウォールフレームワーク中の複数のステージの1つであり、前記ファイアウォールフレームワークが、複数のフィルタがインストールされているファイアウォールエンジンをさらに含むコンピュータ可読媒体であって、
    前記要求ステージによって、前記複数のステージのうちの前のステージからパケットを受け取ること、
    前記前のステージからパケットコンテキストのデータ構造を受け取ることであって、前記パケットコンテキストが前記パケットに関連する前のステージのデータを含むこと、
    前記要求ステージによって、前記パケットに関連する1組のパラメータを識別すること、
    前記パケットに関連する1組のパラメータおよび前記パケットコンテキストを含む分類コールを発行すること
    前記要求ステージによって、前記分類コールに応答して、前記インストールされている複数のフィルタの少なくとも1つによって指定された前記ファイアウォールポリシーに従っアクションを受け取ること、および
    前記1組のパラメータを追加することによって前記パケットコンテキストのデータ構造を修正すること
    を含むことを特徴とするコンピュータ可読媒体。
  16. 前記アクションは、前記パケットにネットワークのトラバースを続けさせる命令であって、
    前記パケットを層プロトコルに従って処理すること、および
    前記複数のステージのうちの次のステージに前記パケットを送ること
    をさらに含むことを特徴とする請求項15に記載のコンピュータ可読媒体。
  17. 1組のインストールされているフィルタを含むファイアウォールエンジンにファイアウォールポリシーを実装するためのコンピュータ可読命令を実行するためのコンピュータ可読媒体において、前記インストールされているフィルタが、それぞれ、1組のフィルタ条件および関連アクションを含むコンピュータ可読媒体であって、
    要求層に関連する第1のパケット情報とパケットコンテキストのデータ構造に関する第2のパケット情報とを含む1組のパケットパラメータを受け取ること、
    1組のマッチするフィルタを識別することであって、前記1組のマッチするフィルタの各フィルタが前記パケットパラメータに対応するフィルタ条件を有すること、および
    前記マッチするフィルタの少なくとも1つから前記関連アクションを識別すること
    を含むことを特徴とするコンピュータ可読媒体。
  18. 前記1組のマッチするフィルタの各フィルタは優先順位を持っており、優先順位の最も高いフィルタからの前記関連アクションは非終了アクションであり、
    終了アクションに到達するまで、前記1組のマッチするフィルタのうち1つまたは複数の優先順位が低いフィルタからの前記関連アクションを識別することをさらに含むことを特徴とする請求項17に記載のコンピュータ可読媒体。
  19. 前記1組のマッチするフィルタのうちのフィルタがコールアウトモジュールを識別し、
    前記パケットパラメータ、および前記1組のマッチするフィルタのうちの前記フィルタの識別を前記コールアウトモジュールに送ることをさらに含むことを特徴とする請求項17に記載のコンピュータ可読媒体。
JP2004167769A 2003-06-06 2004-06-04 ネットワークファイアウォールを実装するための多層ベースの方法 Expired - Fee Related JP4521225B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/456,770 US7260840B2 (en) 2003-06-06 2003-06-06 Multi-layer based method for implementing network firewalls

Publications (2)

Publication Number Publication Date
JP2004362590A JP2004362590A (ja) 2004-12-24
JP4521225B2 true JP4521225B2 (ja) 2010-08-11

Family

ID=33159592

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004167769A Expired - Fee Related JP4521225B2 (ja) 2003-06-06 2004-06-04 ネットワークファイアウォールを実装するための多層ベースの方法

Country Status (5)

Country Link
US (1) US7260840B2 (ja)
EP (1) EP1484887A3 (ja)
JP (1) JP4521225B2 (ja)
KR (1) KR101026558B1 (ja)
CN (1) CN1574792B (ja)

Families Citing this family (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8578480B2 (en) 2002-03-08 2013-11-05 Mcafee, Inc. Systems and methods for identifying potentially malicious messages
US20060015942A1 (en) 2002-03-08 2006-01-19 Ciphertrust, Inc. Systems and methods for classification of messaging entities
US8561167B2 (en) 2002-03-08 2013-10-15 Mcafee, Inc. Web reputation scoring
US7542471B2 (en) 2002-10-30 2009-06-02 Citrix Systems, Inc. Method of determining path maximum transmission unit
US8270423B2 (en) 2003-07-29 2012-09-18 Citrix Systems, Inc. Systems and methods of using packet boundaries for reduction in timeout prevention
US7616638B2 (en) 2003-07-29 2009-11-10 Orbital Data Corporation Wavefront detection and disambiguation of acknowledgments
US7630305B2 (en) 2003-07-29 2009-12-08 Orbital Data Corporation TCP selective acknowledgements for communicating delivered and missed data packets
US8233392B2 (en) 2003-07-29 2012-07-31 Citrix Systems, Inc. Transaction boundary detection for reduction in timeout penalties
JP4271478B2 (ja) * 2003-04-08 2009-06-03 パナソニック株式会社 中継装置及びサーバ
US7308711B2 (en) * 2003-06-06 2007-12-11 Microsoft Corporation Method and framework for integrating a plurality of network policies
US7409707B2 (en) * 2003-06-06 2008-08-05 Microsoft Corporation Method for managing network filter based policies
US7509673B2 (en) * 2003-06-06 2009-03-24 Microsoft Corporation Multi-layered firewall architecture
US7447203B2 (en) 2003-07-29 2008-11-04 At&T Intellectual Property I, L.P. Broadband access for virtual private networks
US8437284B2 (en) 2003-07-29 2013-05-07 Citrix Systems, Inc. Systems and methods for additional retransmissions of dropped packets
US8432800B2 (en) 2003-07-29 2013-04-30 Citrix Systems, Inc. Systems and methods for stochastic-based quality of service
US7656799B2 (en) 2003-07-29 2010-02-02 Citrix Systems, Inc. Flow control system architecture
US8238241B2 (en) 2003-07-29 2012-08-07 Citrix Systems, Inc. Automatic detection and window virtualization for flow control
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US7574603B2 (en) * 2003-11-14 2009-08-11 Microsoft Corporation Method of negotiating security parameters and authenticating users interconnected to a network
JP2007538444A (ja) * 2004-05-20 2007-12-27 キネティック リミテッド ファイアウォール・システム
US20050268331A1 (en) * 2004-05-25 2005-12-01 Franck Le Extension to the firewall configuration protocols and features
US7441268B2 (en) * 2004-06-08 2008-10-21 Alwyn Dos Remedios Method and apparatus to manage exceptions in network processors
US7620986B1 (en) * 2004-06-14 2009-11-17 Xangati, Inc. Defenses against software attacks in distributed computing environments
US7760730B2 (en) * 2004-06-15 2010-07-20 Oracle America, Inc. Rule set verification
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
US8739274B2 (en) * 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US8914522B2 (en) * 2004-07-23 2014-12-16 Citrix Systems, Inc. Systems and methods for facilitating a peer to peer route via a gateway
KR20070039597A (ko) * 2004-07-23 2007-04-12 사이트릭스 시스템스, 인크. 사설망에 대한 원격 액세스를 보안화하기 위한 방법 및시스템
TW200608224A (en) * 2004-08-23 2006-03-01 Lite On It Corp Player and method for processing a file with vector-based format
US8161538B2 (en) * 2004-09-13 2012-04-17 Cisco Technology, Inc. Stateful application firewall
GB2418110B (en) * 2004-09-14 2006-09-06 3Com Corp Method and apparatus for controlling traffic between different entities on a network
US8613048B2 (en) 2004-09-30 2013-12-17 Citrix Systems, Inc. Method and apparatus for providing authorized remote access to application sessions
US7711835B2 (en) 2004-09-30 2010-05-04 Citrix Systems, Inc. Method and apparatus for reducing disclosure of proprietary data in a networked environment
US7748032B2 (en) 2004-09-30 2010-06-29 Citrix Systems, Inc. Method and apparatus for associating tickets in a ticket hierarchy
US8635690B2 (en) 2004-11-05 2014-01-21 Mcafee, Inc. Reputation based message processing
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US20060253605A1 (en) * 2004-12-30 2006-11-09 Prabakar Sundarrajan Systems and methods for providing integrated client-side acceleration techniques to access remote applications
US8954595B2 (en) * 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8706877B2 (en) * 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
US7810089B2 (en) * 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8700695B2 (en) * 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
EP2739014B1 (en) 2005-01-24 2018-08-01 Citrix Systems, Inc. Systems and methods for performing caching of dynamically generated objects in a network
US8024568B2 (en) 2005-01-28 2011-09-20 Citrix Systems, Inc. Method and system for verification of an endpoint security scan
CN100414929C (zh) * 2005-03-15 2008-08-27 华为技术有限公司 一种移动互联网协议网络中的报文传送方法
US7725595B1 (en) * 2005-05-24 2010-05-25 The United States Of America As Represented By The Secretary Of The Navy Embedded communications system and method
CN1905555B (zh) * 2005-07-30 2010-07-07 华为技术有限公司 基于ngn业务的防火墙控制系统及方法
US7725737B2 (en) * 2005-10-14 2010-05-25 Check Point Software Technologies, Inc. System and methodology providing secure workspace environment
US7664924B2 (en) * 2005-12-01 2010-02-16 Drive Sentry, Inc. System and method to secure a computer system by selective control of write access to a data storage medium
US10503418B2 (en) 2005-12-01 2019-12-10 Drive Sentry Limited System and method to secure a computer system by selective control of write access to a data storage medium
US20100153671A1 (en) * 2005-12-01 2010-06-17 Drive Sentry Inc. System and method to secure a computer system by selective control of write access to a data storage medium
US8301839B2 (en) * 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US7921184B2 (en) 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
CN100384158C (zh) 2006-04-04 2008-04-23 华为技术有限公司 一种数字用户线路接入复用器的安全防护方法
US8151323B2 (en) 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
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
US8533846B2 (en) 2006-11-08 2013-09-10 Citrix Systems, Inc. Method and system for dynamically associating access rights with a resource
US8763114B2 (en) 2007-01-24 2014-06-24 Mcafee, Inc. Detecting image spam
US7779156B2 (en) * 2007-01-24 2010-08-17 Mcafee, Inc. Reputation based load balancing
US8214497B2 (en) 2007-01-24 2012-07-03 Mcafee, Inc. Multi-dimensional reputation scoring
US7783757B2 (en) 2007-03-12 2010-08-24 Citrix Systems, Inc. Systems and methods of revalidating cached objects in parallel with request for object
US7720936B2 (en) 2007-03-12 2010-05-18 Citrix Systems, Inc. Systems and methods of freshening and prefreshening a DNS cache
US7584294B2 (en) 2007-03-12 2009-09-01 Citrix Systems, Inc. Systems and methods for prefetching objects for caching using QOS
US8701010B2 (en) 2007-03-12 2014-04-15 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
US8103783B2 (en) 2007-03-12 2012-01-24 Citrix Systems, Inc. Systems and methods of providing security and reliability to proxy caches
US20080228864A1 (en) * 2007-03-12 2008-09-18 Robert Plamondon Systems and methods for prefetching non-cacheable content for compression history
US7809818B2 (en) 2007-03-12 2010-10-05 Citrix Systems, Inc. Systems and method of using HTTP head command for prefetching
US8504775B2 (en) 2007-03-12 2013-08-06 Citrix Systems, Inc Systems and methods of prefreshening cached objects based on user's current web page
US8037126B2 (en) 2007-03-12 2011-10-11 Citrix Systems, Inc. Systems and methods of dynamically checking freshness of cached objects based on link status
US8199641B1 (en) 2007-07-25 2012-06-12 Xangati, Inc. Parallel distributed network monitoring
US9961094B1 (en) 2007-07-25 2018-05-01 Xangati, Inc Symptom detection using behavior probability density, network monitoring of multiple observation value types, and network monitoring using orthogonal profiling dimensions
US8639797B1 (en) 2007-08-03 2014-01-28 Xangati, Inc. Network monitoring of behavior probability density
US20090064287A1 (en) * 2007-08-28 2009-03-05 Rohati Systems, Inc. Application protection architecture with triangulated authorization
KR101377014B1 (ko) * 2007-09-04 2014-03-26 삼성전자주식회사 면역 데이터베이스 기반의 악성코드 진단 방법 및 시스템
US8908700B2 (en) 2007-09-07 2014-12-09 Citrix Systems, Inc. Systems and methods for bridging a WAN accelerator with a security gateway
WO2009033324A1 (fr) * 2007-09-13 2009-03-19 Coobol Technologies Co. Ltd Procédé de transmission de données de support en temps réel basé sur un protocole tcp
US8185930B2 (en) 2007-11-06 2012-05-22 Mcafee, Inc. Adjusting filter or classification control settings
JPWO2009066343A1 (ja) * 2007-11-19 2011-03-31 デュアキシズ株式会社 通信制御装置及び通信制御方法
US8413173B2 (en) * 2008-01-07 2013-04-02 Dell Products L.P. Method, apparatus and system for automatic loading of a network stack
GB0800838D0 (en) 2008-01-17 2008-02-27 Eads Defence And Security Syst Secure communication system
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
US8589503B2 (en) 2008-04-04 2013-11-19 Mcafee, Inc. Prioritizing network traffic
US7920478B2 (en) * 2008-05-08 2011-04-05 Nortel Networks Limited Network-aware adapter for applications
US20100138893A1 (en) * 2008-12-02 2010-06-03 Inventec Corporation Processing method for accelerating packet filtering
US10992555B2 (en) 2009-05-29 2021-04-27 Virtual Instruments Worldwide, Inc. Recording, replay, and sharing of live network monitoring views
CN102035821A (zh) * 2009-09-29 2011-04-27 凹凸电子(武汉)有限公司 防火墙/虚拟专用网集成系统以及电路
GB0919253D0 (en) 2009-11-03 2009-12-16 Cullimore Ian Atto 1
US20110145572A1 (en) * 2009-12-15 2011-06-16 Christensen Kenneth J Apparatus and method for protecting packet-switched networks from unauthorized traffic
KR101292983B1 (ko) 2009-12-21 2013-08-02 한국전자통신연구원 다계층 패킷 검사 장치 및 방법
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
US20110296519A1 (en) * 2010-05-14 2011-12-01 Mcafee, Inc. Reputation based connection control
US8621638B2 (en) 2010-05-14 2013-12-31 Mcafee, Inc. Systems and methods for classification of messaging entities
FR2960368B1 (fr) * 2010-05-21 2013-03-15 Thales Sa Systeme securise d'interconnexion entre deux reseaux publics
US8875276B2 (en) * 2011-09-02 2014-10-28 Iota Computing, Inc. Ultra-low power single-chip firewall security device, system and method
CN102571751B (zh) * 2010-12-24 2014-12-31 佳能It解决方案株式会社 中继处理装置及其控制方法
CN102195972B (zh) * 2011-03-24 2014-05-07 北京思创银联科技股份有限公司 利用wfp拦截网络数据的方法
KR101186876B1 (ko) * 2011-12-16 2012-10-02 주식회사 정보보호기술 유무선 통합시스템에서 실시간 침입차단 방법
WO2013110341A1 (en) 2012-01-27 2013-08-01 Nokia Siemens Networks Oy Session termination in a mobile packet core network
CN105531711B (zh) * 2013-09-28 2018-10-02 迈克菲股份有限公司 数据交换层上的上下文感知网络
US9807118B2 (en) * 2014-10-26 2017-10-31 Mcafee, Inc. Security orchestration framework
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US9825960B2 (en) * 2015-05-29 2017-11-21 Oracle International Corporation System and method providing automatic pushdown hierarchical filters
CN106874305B (zh) * 2015-12-14 2020-08-21 北京国双科技有限公司 一种信息传递的方法及装置
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10116698B1 (en) * 2016-04-06 2018-10-30 Amazon Technologies, Inc. Managing network firewall configuration utilizing source lists
US10587575B2 (en) * 2017-05-26 2020-03-10 Microsoft Technology Licensing, Llc Subsystem firewalls
CN107979609B (zh) * 2017-12-14 2020-09-22 广东天网安全信息科技有限公司 后反应式防护方法及自主学习型防火墙系统
US10701033B2 (en) * 2018-02-13 2020-06-30 Palo Alto Networks, Inc. Network layer signaling security with next generation firewall
US10701032B2 (en) * 2018-02-13 2020-06-30 Palo Alto Networks, Inc. Application layer signaling security with next generation firewall
US10693838B2 (en) * 2018-02-13 2020-06-23 Palo Alto Networks, Inc. Transport layer signaling security with next generation firewall
US10715491B2 (en) * 2018-02-13 2020-07-14 Palo Alto Networks, Inc. Diameter security with next generation firewall
EP3732855A1 (en) * 2018-02-13 2020-11-04 Palo Alto Networks, Inc. Transport layer signaling security with next generation firewall
US11108739B2 (en) * 2018-02-20 2021-08-31 Blackberry Limited Firewall incorporating network security information
ES2917448T3 (es) * 2018-03-16 2022-07-08 Acklio Método y aparato para procesar datos de mensaje
US11310242B2 (en) * 2019-01-15 2022-04-19 Raytheon Bbn Technologies Corp. System and method for protecting network-facing services

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001223749A (ja) * 1999-12-13 2001-08-17 Ascend Communications Inc パケット分類エンジン
JP2002507362A (ja) * 1997-06-30 2002-03-05 サン・マイクロシステムズ・インコーポレーテッド 多層ネットワーク要素のためのシステムおよび方法

Family Cites Families (20)

* 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
US6832256B1 (en) * 1996-12-27 2004-12-14 Intel Corporation Firewalls that filter based upon protocol commands
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
US6701432B1 (en) * 1999-04-01 2004-03-02 Netscreen Technologies, Inc. Firewall including local bus
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 오길록 분산 컴퓨팅 환경에서의 보안 정책 시스템 및 그 방법
US7280540B2 (en) * 2001-01-09 2007-10-09 Stonesoft Oy Processing of data packets within a network element cluster
US20020162026A1 (en) * 2001-02-06 2002-10-31 Michael Neuman Apparatus and method for providing secure network communication
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
US7308711B2 (en) * 2003-06-06 2007-12-11 Microsoft Corporation Method and framework for integrating a plurality of network policies
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002507362A (ja) * 1997-06-30 2002-03-05 サン・マイクロシステムズ・インコーポレーテッド 多層ネットワーク要素のためのシステムおよび方法
JP2001223749A (ja) * 1999-12-13 2001-08-17 Ascend Communications Inc パケット分類エンジン

Also Published As

Publication number Publication date
EP1484887A3 (en) 2007-01-10
EP1484887A2 (en) 2004-12-08
JP2004362590A (ja) 2004-12-24
CN1574792A (zh) 2005-02-02
US20050022011A1 (en) 2005-01-27
CN1574792B (zh) 2010-06-02
KR20040105602A (ko) 2004-12-16
KR101026558B1 (ko) 2011-03-31
US7260840B2 (en) 2007-08-21

Similar Documents

Publication Publication Date Title
JP4521225B2 (ja) ネットワークファイアウォールを実装するための多層ベースの方法
JP4572089B2 (ja) マルチレイヤーファイアウォールアーキテクチャ
US7761708B2 (en) Method and framework for integrating a plurality of network policies
US7409707B2 (en) Method for managing network filter based policies
JP3954385B2 (ja) 迅速なパケット・フィルタリング及びパケット・プロセシングのためのシステム、デバイス及び方法
US8590035B2 (en) Network firewall host application identification and authentication
US7552323B2 (en) System, apparatuses, methods, and computer-readable media using identification data in packet communications
JP2006134312A (ja) IPsecを使ってネットワーク検疫を提供するシステムおよび方法
US8336093B2 (en) Abnormal IPSec packet control system using IPSec configuration and session data, and method thereof
US8607302B2 (en) Method and system for sharing labeled information between different security realms
JP4239713B2 (ja) ネットワーク、通信処理装置及びそれに用いるipセキュリティ方法
Friedman et al. Building Firewalls with Intelligent Network Interface Cards (CMU-CS-00-173)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090710

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091009

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: 20100518

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: 20100524

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

Free format text: PAYMENT UNTIL: 20130528

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