(57)【特許請求の範囲】
【請求項１】
複数の順序づけられたルールを順次評価することによってデータパケットをフィルタリングすることによりセキュリティポリシーを実現するデータパケットフィルタの動作方法において、
前記データパケットフィルタの動作中に、前記ルールの各々がデータパケットにマッチした回数を示すマッチデータを動的に管理するステップと、
より多くの回数マッチしたルールのほうが先に評価されるように、前記順序づけられたルールを自動的に再配列するステップとを有するデータパケットフィルタの動作方法。
【請求項２】
前記自動的に再配列するステップは、定期的に実行される請求項１に記載の方法。
【請求項３】
前記自動的に再配列するステップは、前記データパケットフィルタのパフォーマンスがしきい値以下になった場合に実行される請求項１に記載の方法。
【請求項４】
前記自動的に再配列するステップは、ルールのペアを入れ替えることによって実行され、前記方法は、
前記セキュリティポリシーを変えずに入れ替え可能なルールのペアを判定するステップをさらに有する請求項１に記載の方法。
【請求項５】
前記自動的に再配列するステップは、前記セキュリティポリシーが変わらないように実行される請求項４に記載の方法。
【請求項６】
前記判定するステップは、前記ルールのペアのフィールドの交わりを判定するステップをさらに有する請求項４に記載の方法。
【請求項７】
セキュリティポリシーを実現するデータパケットフィルタにおいて、
複数の順序づけられたルールと、前記ルールの各々がデータパケットにマッチした回数を示すマッチデータとを記憶するメモリと、
受信されたデータパケットに前記ルールを順次適用するフィルタモジュールと、
より多くの回数マッチしたルールのほうが先に評価されるように、前記順序づけられたルールを再配列する再配列モジュールとを有するデータパケットフィルタ。
【請求項８】
前記セキュリティポリシーを変えずに入れ替え可能なルールのペアを判定する衝突モジュールをさらに有する請求項７に記載のデータパケットフィルタ。
【請求項９】
前記再配列モジュールは、前記セキュリティポリシーを変えずに入れ替え可能なルールのペアのみを入れ替える請求項８に記載のデータパケットフィルタ。
【請求項１０】
前記衝突モジュールは、ルールのペアのフィールドの交わりを判定することによって、前記セキュリティポリシーを変えずに入れ替え可能なルールのペアを判定する請求項８に記載のデータパケットフィルタ。
【請求項１１】
データパケットフィルタを実現するコンピュータシステム上で実行可能なコンピュータプログラム命令を記憶するコンピュータ読取り可能媒体において、該コンピュータプログラム命令は、
セキュリティポリシーを定義する複数の順序づけられたルールを順次適用することによって、受信されたデータパケットをフィルタリングするステップと、
前記コンピュータシステムの動作中に、前記ルールの各々がデータパケットにマッチした回数を示すマッチデータを動的に管理するステップと、
より多くの回数マッチしたルールのほうが先に適用されるように、前記順序づけられたルールを自動的に再配列するステップとを定義する命令を含むコンピュータ読取り可能媒体。
【請求項１２】
前記コンピュータプログラム命令は、
定期的に前記ルールを自動的に再配列するステップを定義する命令をさらに有する請求項１１に記載のコンピュータ読取り可能媒体。
【請求項１３】
前記コンピュータプログラム命令は、
前記コンピュータシステムのパフォーマンスがしきい値以下になった場合に前記ルールを自動的に再配列するステップを定義する命令をさらに有する請求項１１に記載のコンピュータ読取り可能媒体。
【請求項１４】
前記コンピュータプログラム命令は、
前記セキュリティポリシーを変えずに入れ替え可能なルールのペアを判定するステップを定義する命令をさらに有する請求項１１に記載のコンピュータ読取り可能媒体。
【請求項１５】
前記コンピュータプログラム命令は、
前記セキュリティポリシーを変えずに入れ替え可能な前記ルールのペアのみを入れ替えることによって、前記ルールを再配列するステップを定義する命令をさらに有する請求項１４に記載のコンピュータ読取り可能媒体。
【請求項１６】
前記コンピュータプログラム命令は、
ルールのペアのフィールドの交わりを判定することによって、前記セキュリティポリシーを変えずに入れ替え可能な前記ルールのペアを判定するステップを定義する命令をさらに有する請求項１４に記載のコンピュータ読取り可能媒体。
【請求項１７】
第１ネットワークと第２ネットワークの間のデータトラフィックをフィルタリングするファイアウォールにおいて、
データパケットを受信する入力ポートと、
前記ファイアウォールのセキュリティポリシーを定義する複数の順序づけられたルールを記憶するメモリと、
受信されたデータパケットに、前記順序づけられたルールを順次適用するフィルタモジュールと、
前記ルールの各々がデータパケットにマッチした回数を示すマッチデータを動的に管理するアクティビティモジュールと、
より多くの回数マッチしたルールのほうが先に評価されるように、前記複数の順序づけられたルールを自動的に再配列する再配列モジュールとを有するファイアウォール。
【請求項１８】
ルールのペアが前記セキュリティポリシーを変えずに入れ替え可能かどうかを判定する衝突モジュールをさらに有する請求項１７に記載のファイアウォール。
【請求項１９】
前記衝突モジュールは、ルールのペアのフィールドの交わりを判定することによって、ルールのペアが前記セキュリティポリシーを変えずに入れ替え可能かどうかを判定する請求項１８に記載のファイアウォール。
【請求項２０】
前記再配列モジュールは、前記セキュリティポリシーを変えずに入れ替え可能なルールのペアのみを入れ替える請求項１８に記載のファイアウォール。
【請求項２１】
ネットワークから受信されるデータパケットをセキュリティポリシーに従ってフィルタリングする装置において、本装置は、
複数のルールをある順序で記憶する記憶手段であって、前記ルールおよび前記順序は前記セキュリティポリシーを定義する記憶手段と、
受信されたデータパケットに前記ルールを前記順序で順次適用するフィルタ手段と、
前記ルールの各々がデータパケットにマッチした回数を示すデータを動的に管理する手段と、
より多くの回数マッチしたルールのほうが前記順序において前に配置されるように、前記複数のルールを自動的に再配列する再配列手段とを有する装置。
【請求項２２】
前記セキュリティポリシーを変えずに再配列可能なルールを判定する衝突手段をさらに有する請求項２１に記載の装置。
【請求項２３】
前記衝突手段は、
前記ルールのフィールドどうしの間の交わりを判定する手段を有する請求項２２に記載の装置。
【請求項２４】
前記再配列手段は、前記セキュリティポリシーを維持するように前記ルールを再配列する手段をさらに有する請求項２２に記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データパケットフィルタに関し、特に、セキュリティポリシーを維持しながらフィルタのパフォーマンスを改善するための、データパケットフィルタルールの適応再配列に関する。
【０００２】
【従来の技術】
データネットワークはますます広がっている。例えば、多くの会社は、社内通信のために内部データネットワークを有する。このような通信には、電子メール、文書、音声、ビデオ、およびマルチメディアが含まれる。さらに、このような内部データネットワークは一般に、内部ネットワークと外部ネットワークの間で情報を交換するために、外部データネットワーク（例えばインターネット）に接続されている。しかし、データネットワークどうしの相互接続の結果、セキュリティが重要な問題となっている。会社のデータネットワークへの権限のないアクセスの結果、貴重な所有情報を喪失する可能性がある。さらに、権限のないアクセスは、会社のデータネットワークおよびコンピューティングシステムに対する攻撃を引き起こし、その結果、データの喪失およびコンピュータシステムのクラッシュを引き起こす可能性もある。
【０００３】
データネットワークのためのセキュリティポリシーを実現するようにプログラムされたコンピュータをファイアウォールという。一般に、ファイアウォールは、すべての着信および発信するデータトラフィックがファイアウォールを通らなければならないような、ネットワーク内の戦略的ポイントに配置される。このようなポイントで、すべてのネットワークトラフィックはファイアウォールによりトラップされ、そのトラフィックがファイアウォールを通ることが許されるかどうかを判定するために検査される。ファイアウォールを実現するためのさまざまな技術がある。そのような実現の１つは、データパケットフィルタを実現するようにプログラムされたコンピュータである。データパケットフィルタは、すべての受信データパケットを検査し、データパケットの内容に基づいて、データパケットの通過を拒否または許容する。１つの実現では、この判定は、どのデータパケットの通過を許可しどのパケットをブロックするかを定義する、データパケットフィルタに記憶されたルール（規則）に基づく。各記憶ルールは、データパケットのいくつかのパラメータ（例えば、ソースおよびデスティネーション）を定義するとともに、これらのパラメータにマッチ（適合）するデータパケットの処理方法を含む。例えば、あるルールは、ソースＸからのデータパケットをブロックすることを含むことが可能であり、また別のルールは、ソースＹからデスティネーションＺへのデータパケットの通過を許可することを含むことが可能である。ルールは、データパケットフィルタ内にシーケンシャルな順序で記憶され、ファイアウォールによって受信されるあらゆるデータパケットが、ルールに対してシーケンシャルな順序でテストされる。受信パケットにマッチするパラメータを有する最初のルールをそのパケットに適用し、そのパケットはそのルールによって示されるように処理される。
【０００４】
このようなルール方式のデータパケットフィルタでは、まず、システム管理者が、ファイアウォールによって実現されるセキュリティポリシーを定義した後、そのセキュリティポリシーを実現するルールをデータパケットフィルタにプログラムしなければならない。このタイプのファイアウォールの１つの重要な問題点は、高度なセキュリティポリシーの場合、そのポリシーを実現するために多数のルールが必要なことである。ファイアウォールを通るあらゆるデータパケットをこれらのルールに対してチェックしなければならないため、ファイアウォールのパフォーマンスはルールの数の増大とともに低下する。
【０００５】
データパケットフィルタファイアウォールにおけるパフォーマンス問題に対して知られている１つの解決法は、メモリキャッシュを使用することである。このようなシステムでは、データパケットが到着すると、そのデータパケットの関連するパラメータ（例えば、ソースおよびデスティネーション）をキャッシュに記憶する。さらに、パケットフィルタルールが受信データパケットに適用された後、その処理方法（例えば、許可または拒否）も、受信データパケットの関連パラメータに対応するキャッシュに記憶する。その後、以前にキャッシュに記憶されたパラメータと同じパラメータを有するデータパケットを受信した場合、ファイアウォールは、データパケットにすべてのルールを適用せずに、対応する処理を適用することができる。これにより、一部のアプリケーションでは、継続中の通信が２つのコンピュータ間で行われると、通信セッション（すなわちコネクション）中にコンピュータ間で交換されるあらゆるデータパケットをチェックする必要がないという点で、パフォーマンスが改善される。しかし、この技術は、コネクション期間中に交換されるデータパケットに対するパフォーマンスを改善するが、新たなコネクションに対するパフォーマンスは改善しない。
【０００６】
また、パケットフィルタは、クライアントコンピュータ上にも実現されることがある。例えば、ワールドワイドウェブ（ＷＷＷ）ブラウザソフトウェア（例えば、Ｍｉｃｒｏｓｏｆｔ  ＥｘｐｌｏｒｅｒやＮｅｔｓｃａｐｅ  Ｎａｖｉｇａｔｏｒ）を実行するパーソナルコンピュータがそうである。ＷＷＷサイトには、親が子供にとって適当でないと思うようなデータを含むものが数多くある。従って、いくつかの会社は、不適当なデータをブロックするためのパケットフィルタを実現するフィルタリングソフトウェアを提供している。このようなパケットフィルタは、上記のようなルールを用いたセキュリティポリシーを実現している。ルールの数が増大すると、これらのクライアント側のパケットフィルタは、上記のものと同じパフォーマンスの問題を抱える。
【０００７】
【発明が解決しようとする課題】
セキュリティポリシーを実現するのに必要なルールの数が増大した場合にデータパケットフィルタのパフォーマンスを改善する技術が必要とされている。
【０００８】
【課題を解決するための手段】
上記のように、データパケットフィルタは、セキュリティポリシーを実現するために受信データパケットに順次（シーケンシャルに）適用される順序づけられた複数のルールを記憶する。本発明によれば、ルールは、パケットフィルタのパフォーマンスを改善するように自動的に再配列される。着信データパケットに頻繁にマッチするルールほど順序の前方に移動し、着信データパケットに頻繁にマッチしないルールほど順序の後方に移動する。受信データパケットにマッチする最初のルールがそのパケットの処理方法を制御するため、あるルールがパケットにマッチすると、残りのルールは評価する必要がない。ルールを再配列することによって、データパケットは高速にルールにマッチし、データパケットフィルタのパフォーマンスが改善される。
【０００９】
本発明の一実施例では、パケットフィルタは、パケットフィルタの動作中に、各ルールが受信データパケットにマッチした回数のカウントを動的に管理する。ルールは、このカウントに基づいて、マッチカウント数が高い規則ほどルール順序の前方に移動するように再配列される。このような再配列は、パケットフィルタの履歴が未来の動作の信頼性の高い指標を提供するという前提で行われる。このように、動作中にマッチカウントを動的に管理することによって、パケットフィルタは、過去の動作パラメータに基づいてその規則を適応的に再配列することができる。このような適応再配列は、サービス妨害攻撃に対する保護の点で有益である（詳細は後述）。
【００１０】
本発明の一実施例では、ルールは、ルール順序においてルールのペアを入れ替える（スワッピング）ことによって再配列される。しかし、ルールの順序は、パケットフィルタのセキュリティポリシーを定義する際に一定の役割を果たしている。従って、ルールの無差別な入れ替えは、パケットフィルタのセキュリティポリシーを変更することになる可能性がある。このような結果は好ましくなく、避けなければならない。そのため、ルールは、セキュリティポリシーの変更を生じるために再配列が許されないかどうかを判定するために評価される。一実施例では、このような評価は、ルールのペアを比較して、どのルールのペアが互いに衝突（コンフリクト）するかを判定することによって行われる。２つのルールが互いに衝突するとは、それらのルールを入れ替えるとパケットフィルタのセキュリティポリシーが変化してしまう場合をいう。この衝突評価の結果はパケットフィルタのメモリに記憶され、その後の再配列は、衝突するルールの入れ替えを避けるためにこの情報を参照する。
【００１１】
本発明による再配列は、定期的に、ユーザによる起動時に、または、パケットフィルタのいくつかの動作パラメータに基づいて（例えば、パケットフィルタのパフォーマンスがあるしきい値以下に落ちたとき）、実行することが可能である。
【００１２】
本発明の原理は、さまざまなタイプのコンピューティングデバイスに適用可能である。例えば、本発明は、多くのコンピュータおよびネットワークに対するデータパケットをフィルタリングする専用ネットワークファイアウォールに、あるいは、パケットフィルタがパーソナルコンピュータに対するデータパケットのみをフィルタリングするようなスタンドアローンのパーソナルコンピュータに、適用可能であるが、これらには限定されない。
【００１３】
【発明の実施の形態】
本発明を実現することが可能なタイプのネットワークを図１に示す。内部データネットワーク（例えば企業イントラネット）はネットワーク１０２として示されている。外部データネットワーク（例えばインターネット）はネットワーク１０６として示されている。ファイアウォール１０４は、内部ネットワーク１０２と外部ネットワーク１０６の間で交換されるすべてのデータトラフィックがファイアウォール１０４を通らなければならないように配置されるように示されている。これらのデータネットワークは、データパケット通信のための周知のＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を用いて互いに通信する。ファイアウォール１０４は、内部ネットワーク１０２を管理するのと同じ管理者によって管理されると仮定する。ファイアウォール１０４の目的は、内部ネットワーク１０２のセキュリティポリシーを実現することである。
【００１４】
ファイアウォール１０４は、適当に構成されたコンピュータによって実現可能である。その詳細を図２に示す。図２において、ファイアウォール１０４は、ファイアウォール１０４の全体の動作を制御するプロセッサ２０２を有する。プロセッサ２０２は、入力ポート２０４、バッファ２０６、出力ポート２０８、プログラムメモリ２１０、およびデータメモリ２２０に接続される。プログラムメモリ２１０およびデータメモリ２２０は、周知のコンピュータ記憶デバイスのうちの任意のタイプのものとすることが可能である。動作時に、プロセッサ２０２は、プログラムメモリ２２０に記憶されたコンピュータプログラム命令を実行することによって、ファイアウォール１０４の動作を制御する。プログラムメモリ２１０は、再配列モジュール２１２、フィルタモジュール２１４、アクティビティモジュール２１６、および衝突モジュール２１８というプログラムモジュールを有する。これらのモジュールは、プロセッサ２０２によって実行されると、本発明によるパケットフィルタを実現するコンピュータプログラムコードを含む。理解されるように、プログラムメモリ２１０に示されるプログラムモジュールは、機能的なコンピュータプログラムモジュールの高水準の表現である。さまざまな実現において、これらのモジュールは、プログラムソースコード、オブジェクトコード、あるいは、ソースおよびオブジェクトコードの組合せを含むことがありうる。これらのモジュールについて詳細は後述する。もちろん、ファイアウォールを実現するコンピュータは、他の周知のコンポーネントも有する。このような他のコンポーネントは明確化のために図２には図示しない。
【００１５】
ファイアウォール１０４の動作は以下の通りである。データパケットがファイアウォール１０４で外部ネットワーク１０６から受信されるとき、データパケットは入力ポート２０４で受信される。例示的なデータパケット３０２のフォーマットを図３に示す。データパケット３０２は、ヘッダ部分３０４およびデータ部分３０６を含む。ヘッダ部分３０４は、プロトコル３０８、ソースアドレス３１０、デスティネーションアドレス３１２、ソースポート３１４、およびデスティネーションポート３１６というフィールドを含む。プロトコルフィールド３０８は、現在のパケットが送信されているプロトコルを示す。例えば、プロトコルフィールド３０８は、データパケット３０２が周知のＴＣＰ／ＩＰプロトコルを用いて送信されていることを示す。ソースアドレス３１０は、データパケット３０２のソースのＩＰアドレスを示す。ＩＰアドレスは、データネットワーキングにおいて周知である。ＩＰアドレスは３２ビットであり、それぞれ０から２５５までの４個の整数をドットで分けた小数点表記法（例えば、１２５．１８０．１０４．４）で表現されることが多い。デスティネーションアドレス３１２は、パケット３０２のデスティネーションのＩＰアドレスを示す。ソースポート３１４は、ソースコンピュータのポート番号を示す。ポート番号とは、０から６５，５３５までの整数であり、一般に、個々のマシン上で実行されるアプリケーションに関連づけられる。例えば、ウェブサーバは一般にポート番号８０に関連づけられる。デスティネーションポート３１６は、デスティネーションコンピュータのポート番号を示す。パケット３０２のデータ部分３０６は、デスティネーションコンピュータ上で実行されるアプリケーションによって使用されることになるパケットのペイロードを含む。
【００１６】
入力ポート２０４でデータパケットが受信されると、データパケット３０２はバッファ２０６に記憶され、一方、プロセッサ２０２は、受信データパケットに対してデータメモリ２２０に記憶されるフィルタルール２２２を適用するためにフィルタモジュール２１４を実行する。フィルタモジュール２１４は、受信データパケットにシーケンシャルな順序でルールを適用する。データパケットにマッチする最初のルールが、そのデータパケットが許可されるかそれとも拒否されるかを決定することになるルールである。ルールがデータパケットにマッチすると、残りのルールを適用する必要はない。
【００１７】
ルール２２２として記憶されるルールの例を図４に示す。図４に示すように、各ルールは順番号を有する。順番号は、着信データパケットに対してルールが適用される順序を示す。また、各ルールは、プロトコル、ソースアドレス、デスティネーションアドレス、ソースポート、デスティネーションポート、およびアクションを示すフィールドを有する。各ルールは、ルールのフィールドの情報にマッチするデータパケットが受信されたときにとられるアクションを示す。パケットがルールにマッチ（適合）するとは、パケットのヘッダ情報が上記のフィールド内の定義された値の範囲内に入る場合をいう。例えば、ルール番号１は、ＴＣＰプロトコルを用いて受信されたパケットでソースアドレスが１２５．３０．２０．２００のものを、パケットの他のフィールドの内容にかかわらず拒否（すなわちブロック）することを示す。ルールフィールド内の「＊」は、任意の値にマッチするワイルドカードを示す。ルール番号２は、ＴＣＰプロトコルを用いて受信されたパケットで、ソースアドレスが１３５．１８０．１０４．４〜１３５．１８０．１０４．２５５の範囲にあり、デスティネーションアドレスが１３５．１８０．２０４．４〜１３５．１８０．２０４．２５５の範囲にあり、ソースポートが１０２４〜６５５３５の範囲にあり、デスティネーションポートが８０のものを許可する（すなわち、デスティネーションに渡す）ことを示す。ルール番号３は、１２５．１８０．１００．０〜１２５．１８０．１００．２５５の範囲のソースアドレスからＴＣＰプロトコルを用いて受信されたパケットを、他のフィールドの値にかかわらず許可することを示す。最後に、ルール番号４は、すべてのデータパケットを拒否することを示す。ルールはシーケンシャルな順序で適用されるため、ルール番号４は、ルール１〜３のいずれも着信データパケットにマッチしない場合に限り適用されることになる。ルール番号４のようなルールを含めることはファイアウォールでは通例であり、特に許可しなければすべてのパケットは拒否されるというセキュリティポリシーを実現する。当業者には直ちに認識されるように、データメモリ２２０内のルール２２２としてさまざまなルールセットを記憶することによって、さまざまなセキュリティポリシーが実現可能である。また、注意すべき点であるが、ルールに示されるアクションは、許可または拒否以外のものとすることも可能である。例えば、アクションが、ルールにマッチするパケットをさらに処理するために別のロケーションへ転送することを示すことも可能である。
【００１８】
こうして、受信データパケットがバッファ２０６に記憶される一方で、プロセッサ２０２は、ルールがデータパケットにマッチするまで、ルール２２２をデータパケットに順次適用する。マッチしたルールが、データパケットが許可されることを示している場合、パケットは出力ポート２０８に転送され、内部ネットワーク２０２へ渡されることが許可される。なお、ルールはシーケンシャルな順序で適用されるが、必ずしもデータメモリ２２０において内部的にそのシーケンシャルな順序で記憶されている必要はない。さまざまな理由から、ルールの内部表現は、図４に示す論理的表現とは異なることもある。しかし、内部表現にかかわらず、各ルールは、与えられた順序でフィルタモジュール２１４が受信データパケットにルールを適用するように、順番号あるいはその他の評価順序の指標（例えば優先度）に関連づけられる。
【００１９】
記憶されるルール２２２の数が増大すると、ファイアウォール１０４のパフォーマンスは一般に低下する。各着信データパケットにルールを適用するのに長い時間がかかるためである。本発明は、着信データパケットにマッチする可能性が高いルールをシーケンシャル順序の前方に配置する（すなわち、若い順番号を割り当てる）ように、記憶されているルール２２２を再配列することによって、このパフォーマンスの問題点を解決する。これは、ファイアウォールのパフォーマンスを改善する。その理由は、いったんルールがマッチすると、残りのルールは適用されず、それらの残りのルールを適用するのに要する処理時間が避けられるからである。データパケットにマッチする可能性が高いルールをルール順序の前方に移動することができれば、ファイアウォールのパフォーマンスは改善される。
【００２０】
しかし、ルールを再配列する前に、ファイアウォール１０４の全体のセキュリティポリシーに影響を及ぼさずにどのルールが再配列可能であるかを判定しなければならない。ルールの性質と、ルールを受信データパケットに順次適用することのため、再配列の結果、全体のセキュリティポリシーが変わってしまう可能性がある。このような再配列は避けなければならない。例えば、図４のルール例を参照すると、ルール番号４はルール番号１と入れ替えることはできない。そのような入れ替えにより、ルール番号４は最初に適用されることになってしまうからである。ルール番号４は、すべてのデータパケットを拒否することを示すため、それをルール順序の最初に配置すると、すべてのデータパケットが拒否されてしまうことになる。データパケットの通過を許可する他のいずれのルールにも到達しなくなる。従って、ファイアウォールのセキュリティポリシーを維持しながら、どのルールが再配列可能かを判定する必要がある。
【００２１】
どのルールが再配列可能かを判定するために、衝突モジュール２１８がプロセッサ２０２によって実行される。衝突モジュールは、ルールセット２２２を解析して、ルールのペアの入れ替えの結果セキュリティポリシーが変化するという衝突がルールのペアにあるかどうかを判定する。一般に、２つのルールが互いに衝突するとは、少なくとも１つのデータパケットが一方のルールにマッチし、それらのルールのアクションが同一ではない場合をいう。本実施例では、ルールＡがルールＢと衝突するかどうかを判定する衝突アルゴリズムは以下の通りである。
【００２２】
0003568850.tif 000002
【００２３】
このアルゴリズムにおいて、ルールのフィールドが別のルールのあるフィールドと交わるとは、それらの２つのフィールドの値の範囲に交わりがある場合をいう。例えば、ＩＰアドレスを含む複数のフィールドに関して、それらのアドレス間に重なりがある場合に、それらのフィールドは交わるという。例えば、アドレス範囲１２３．３０．２０．５０〜１２３．３０．２０．１００を含むＩＰアドレスフィールドは、アドレス範囲１２３．３０．２０．７０〜１２３．３０．２０．１５０を含むＩＰアドレスフィールドと、アドレス範囲１２３．３０．２０．７０〜１２３．３０．２０．１００において交わる。例えば、ＩＰアドレス１２３．３０．２０．８５は両方の範囲内に入る。従って、このアルゴリズムによれば、２つのルールのアクションが異なる場合、かつ、２つのルールのフィールドに交わりがある場合、ルールどうしが衝突する。そうでない場合、ルールどうしは衝突しない。もちろん、当業者であれば、別のフィールドのセットでルール間の衝突を検出するために上記のアルゴリズムを変更することが可能である。このようなアルゴリズムは、各ルールの各フィールドを解析して、交わりがあるかどうかを判定することになる。交わりある場合、かつ、２つのルールのアクションが異なる場合、ルールは衝突する。
【００２４】
なお、衝突モジュール２１８は、ルールセット２２２が変更される（すなわち、ルールが追加または削除される）と一度実行される。衝突モジュール２１８の実行の結果は、可能なあらゆるルールのペアごとに、そのペアが衝突するかどうかを示す衝突データ２２６として、データメモリ２２０に記憶される。一実施例では、図５に示す衝突テーブル５００のような２次元の衝突テーブルを、衝突モジュール２１の実行の結果としての衝突データ２２６として記憶することが可能である。各ルールペアごとに、衝突テーブル５００における交点は、それらのルールが衝突する（Ｃ）か、それとも、衝突しない（ＮＣ）かを示す。例えば、衝突テーブル５００の行３と列２の交点はＮＣであり、ルール３とルール２が衝突しないことを示す。ルールが追加されると、その新しいルールと他のルールとの交点のみを衝突モジュール２１８でチェックすればよい。他のルールどうしの交点は変化しない。なお、衝突テーブル５００は、列ｘと行ｙの交点が列ｙと行ｘの交点と同じ値を含むという意味で対称である。従って、テーブルの半分のみがデータメモリ２２０内の衝突データ２２６に記憶されればよい。しかし、この説明のために、図５ではテーブル全体を示している。
【００２５】
ルールの再配列に戻って、上記のように、本発明によれば、パケットデータフィルタのパフォーマンスは、着信データパケットのマッチする可能性が高いルールをシーケンシャル順序の前方に配置するように、記憶されているルール２２２を再配列することによって改善される。本発明の１つの特徴によれば、どのルールが着信データパケットにマッチする可能性が高いかに関する判定は、ファイアウォール１０４の履歴を参照して行われる。一実施例では、この履歴は、各ルールが着信データパケットにマッチした回数の記録である。本実施例によれば、ファイアウォール１０４の動作中に、アクティビティモジュール２１６は、各ルールが着信パケットにマッチした回数の現在のカウントを動的に管理する。このカウントは、データメモリ２２０の履歴セクション２２４内のテーブルに記憶される。このテーブルは、カウントを各テーブルに関連づける。すなわち、高いカウントに対応するルールは、低いカウントに対応するルールよりも多くの着信パケットにマッチしている。なお、カウントは、定期的に０に再初期化することが可能である。
【００２６】
ルールセット２２２の再配列は、定期的に（例えば、３０分ごとに）実行することも可能であり、システム管理者によって開始されることも可能であり、あるいは、ファイアウォール１０４のいくつかの動作パラメータに基づいてファイアウォール１０４によって開始されることも可能である。例えば、ファイアウォール１０４は、ファイアウォール１０４のパフォーマンスがある所定のしきい値よりも下がったときに再配列を開始することが可能である。再配列は、履歴セクション２２４において低いカウントを有するルールを履歴セクション２２４において高いカウントを有するルールと入れ替えることによって、再配列モジュール２１２によって実行される。この結果、頻繁にデータパケットにマッチするルールがシーケンシャル順序の前方に配置されることになる。
【００２７】
ルールを入れ替える１つのアルゴリズムは以下の通りである。
【００２８】
0003568850.tif 000003
【００２９】
このアルゴリズムは、高いマッチカウントのルールをルールの順序の前方に移動しようとする。ルールの再配列の１つの制約は、再配列がルールセットの全体のセキュリティポリシーを変えない（すなわち、ルールどうしが衝突しない）場合にのみルールを入れ替えるというものである。このアルゴリズムは周知のバブルソート型のアルゴリズムを用いているが、当業者であれば、他のタイプの再配列アルゴリズムも直ちに実現可能である。
【００３０】
本発明の１つの効果は、フィルタルールがファイアウォールのアクティビティに基づいて再配列されることである。すなわち、ファイアウォールは、変化する動作条件に動的に適応可能である。例えば、コンピュータシステムに対する攻撃の１つのタイプは、サービス妨害攻撃として知られている。これは、ネットワークエレメントの利用可能性を低下させることを目標とするものである。このような攻撃を仕掛ける１つの方法は、ネットワークのファイアウォールによってブロックされることがわかっているパケットをそのネットワークに連続的に送信するものである。このようなパケットを拒否するルールがルールのシーケンシャル順序の後方にある場合、このようなパケットがファイアウォールによって受信されるたびに、ファイアウォールはそのパケットを拒否する前に多くのルールを適用しなければならない。例えば、データパケットを最終的に拒否することになるルールがルール番号１００である場合、このようなパケットが受信されるたびに、ファイアウォールはそのパケットを拒否するまでに１００個のルールを適用しなければならない。多くのこのようなパケットを送信することによって、攻撃者は、ファイアウォールのパフォーマンスに重大な損害を与える可能性がある。
【００３１】
本発明は、サービス妨害攻撃中のパフォーマンスを以下のようにして改善する。攻撃者が、ルール番号１００によって拒否されるパケットを連続的に送信している場合、ルール番号１００のマッチカウントは急速に上昇する。さらに、ルールの再配列を開始するためのパラメータのうちの１つはファイアウォールのパフォーマンスであるため、サービス妨害攻撃がパフォーマンスを実質的に低下させると再配列が開始されることになる。このようなとき、ルール１００のマッチカウントが高くなるため、再配列モジュールは、ルール１００をシーケンシャル順序の前方に移動しようとする。例えば、ルールがルール５に移動された場合、攻撃パケットをさらに受信すると、パケットは１００個ではなく５個だけのルールの後でブロックされ、９５％の改善がある。
【００３２】
以上、本発明について、図１に示すようなネットワークに実現されたファイアウォールの場合に説明したが、理解されるように、本発明の原理は、データネットワークから受信されるデータパケットをフィルタリングするように構成されたパーソナルコンピュータで実現することも可能である。１つの周知の構成では、パーソナルコンピュータは、モデムと、電話ネットワークを通じてのインターネットへのダイヤルアップ接続を用いてインターネットに接続される。パーソナルコンピュータのユーザがアクセス可能なインターネットサイトを制限することが好ましいことがしばしばあるため、フィルタリングルールに基づいて着信データパケットをフィルタリングするさまざまなフィルタプログラムがある。本発明の原理は、このようなパーソナルコンピュータにおいて実現可能である。このような本発明の実施例を図６にパーソナルコンピュータ６００として示す。パーソナルコンピュータ６００は、インターネットのようなデータネットワークへのコネクションを確立するために用いられるモデム６１２に接続されたプロセッサ６１０を有する。一実施例では、コンピュータ６００は、コンピュータ６００がワールドワイドウェブ（ＷＷＷ）サイトと通信してこのようなサイトから情報を受信することを可能にするブラウザプログラム６０４を実行する。また、本発明によれば、コンピュータ６００は、上記のようなパケットフィルタを実現するように動作する再配列モジュール、フィルタモジュール、アクティビティモジュール、および衝突モジュールを含むパケットフィルタプログラムモジュール６０６を有する。また、コンピュータ６００は、同じく上記のようなルール、履歴、および衝突データを有するデータメモリ６０８を含む。コンピュータ６００のユーザは、通常のように、キーボード６１４、グラフィカル入力デバイス６１８（例えばマウス）、およびディスプレイ６１６を通じてコンピュータ６００と対話する。動作時に、コンピュータ６００のユーザは、インターネットに対して情報を要求すると、パケットフィルタモジュール６０６は、記憶されているフィルタルールに従ってデータパケットをフィルタリングするために上記のように動作する。フィルタルールは、その再配列がコンピュータ６００の全体のセキュリティポリシーを変えない限り、パケットフィルタのパフォーマンスを改善するように再配列されることが可能である。
【００３３】
なお、ファイアウォールとともに、オプションとして、ネットワークルータが、上記と同様にデータパケットをフィルタリングするように設定されることも可能である。すなわち、本発明の原理は、データパケットフィルタリングのために設定されたネットワークルータにおいても実現可能である。
【００３４】
【発明の効果】
以上述べたごとく、本発明によれば、セキュリティポリシーを実現するのに必要なルールの数が増大した場合にも、データパケットフィルタのパフォーマンスが改善される。
【図面の簡単な説明】
【図１】本発明を実現することが可能なタイプのネットワークの図である。
【図２】本発明によるファイアウォールを実現するように構成されたコンピュータの図である。
【図３】例示的なデータパケットのフォーマットの図である。
【図４】ルールセットの例を示す図である。
【図５】衝突テーブルの図である。
【図６】本発明の原理が実現されるパーソナルコンピュータの図である。
【符号の説明】
１０２  内部ネットワーク
１０４  ファイアウォール
１０６  外部ネットワーク
２０２  プロセッサ
２０４  入力ポート
２０６  バッファ
２０８  出力ポート
２１０  プログラムメモリ
２１２  再配列モジュール
２１４  フィルタモジュール
２１６  アクティビティモジュール
２１８  衝突モジュール
２２０  データメモリ
２２２  フィルタルール
２２６  衝突データ
３０２  データパケット
３０４  ヘッダ部分
３０６  データ部分
３０８  プロトコル
３１０  ソースアドレス
３１２  デスティネーションアドレス
３１４  ソースポート
３１６  デスティネーションポート
５００  衝突テーブル
６００  パーソナルコンピュータ
６０４  ブラウザプログラム
６０６  パケットフィルタプログラムモジュール
６０８  データメモリ
６１０  プロセッサ
６１２  モデム
６１４  キーボード
６１６  ディスプレイ
６１８  グラフィカル入力デバイス
【図１】
0003568850.tif 000004
【図２】
0003568850.tif 000005
【図３】
0003568850.tif 000006
【図４】
0003568850.tif 000007
【図５】
0003568850.tif 000008
【図６】
0003568850.tif 000009