(57)【特許請求の範囲】
【請求項１】
コンピュータネットワークでファイアウォールサービスを提供する方法において、該方法は、
ファイアウォールにおいて、ソースからデスティネーションまでの所与のセッションと関連づけられた要求を受信するステップと、
前記ファイアウォールが前記要求を許可するには、リモートサーバが実行可能なサービスが必要であるかどうかを確認する確認ステップと、
前記ファイアウォールが前記要求を許可するにはリモートサーバが実行可能なサービスが必要である場合、前記リモートサーバへ前記要求に関連する１つもしくは複数のパケットをリダイレクトして、前記所与のセッションが前記リモートサーバに対してリダイレクトされるようにするステップであって、前記１もしくは複数のパケットのそれぞれのヘッダーの少なくとも一部分を修正する処理からなるステップと、を含むことを特徴とするファイアウォールサービス提供方法。
【請求項２】
前記確認ステップは、セッションキーデータを使用するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記確認ステップは、セッションキーデータを使用してテーブル参照を行うステップを含むことを特徴とする請求項１に記載の方法。
【請求項４】
コンピュータネットワークでファイアウォールサービスを提供する方法において、該方法は、
ファイアウォールにおいて、ソースからデスティネーションまでの所与のセッションと関連づけられた要求を受信するステップと、
前記ファイアウォールが前記要求を許可するには、リモートサーバが提供可能なサービスを必要とするかどうかを確認する確認ステップと、
前記ファイアウォールが前記要求を許可するにはリモートサーバが提供可能なサービスが必要である場合、該サービスを該リモートサーバが提供することができるように、前記要求に関連する１つもしくは複数のパケットを前記リモートサーバにリダイレクトして、前記所与のセッションが前記リモートサーバに対してリダイレクトされるようにするステップであって、前記１もしくは複数のパケットのそれぞれのヘッダーの少なくとも一部分を修正する処理からなるステップと、を含むことを特徴とするファイアウォールサービス提供方法。
【請求項５】
前記確認ステップは、セッションキーデータを使用するステップを含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記確認ステップは、セッションキーデータを使用してテーブル参照を行うステップを含むことを特徴とする請求項４に記載の方法。
【請求項７】
コンピュータネットワークでファイアウォールサービスを提供する方法において、該方法は、
ファイアウォールにおいて、ソースからデスティネーションまでの所与のセッションと関連づけられた要求を受信するステップと、
前記ファイアウォールが前記要求を許可するには、リモートプロキシが実行可能なサービスが必要であるかどうかを確認する確認ステップと、
前記ファイアウォールが前記要求を許可するにはリモートプロキシが実行可能なサービスが必要である場合、前記リモートプロキシへ前記要求に関連する１つもしくは複数のパケットをリダイレクトして、前記所与のセッションが前記リモートプロキシに対してリダイレクトされるようにするステップとであって、前記１もしくは複数のパケットのそれぞれのヘッダーの少なくとも一部分を修正する処理からなるステップと、を含むことを特徴とするファイアウォールサービス提供方法。
【請求項８】
前記確認ステップは、セッションキーデータを使用するステップを含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記確認ステップは、セッションキーデータを使用してテーブル参照を行うステップを含むことを特徴とする請求項７に記載の方法。
【請求項１０】
コンピュータネットワークでファイアウォールサービスを提供する方法において、該方法は、
ファイアウォールにおいて、ソースからデスティネーションまでの所与のセッションと関連づけられた要求を受信するステップと、
前記ファイアウォールが前記要求を許可するには、リモートプロキシが提供可能なサービスを必要とするかどうかを確認する確認ステップと、
前記ファイアウォールが前記要求を許可するにはリモートプロキシが提供可能なサービスが必要である場合、該サービスを該リモートプロキシが提供することができるように、前記要求に関連する１つもしくは複数のパケットを前記リモートプロキシにリダイレクトして、前記所与のセッションが前記リモートプロキシに対してリダイレクトされるようにするステップであって、前記１もしくは複数のパケットのそれぞれのヘッダーの少なくとも一部分を修正する処理からなるステップと、を含むことを特徴とするファイアウォールサービス提供方法。
【請求項１１】
前記確認ステップは、セッションキーデータを使用するステップを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記確認ステップは、セッションキーデータを使用してテーブル参照を行うステップを含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
コンピュータネットワークでファイアウォールサービスを提供するコンピュータシステムにおいて、該コンピュータシステムは、
ソースからデスティネーションまでの所与のセッションと関連づけられた要求を取得する手段と、
前記要求は、リモートサーバが実行可能なサービスを必要とするかどうかを確認する確認手段と、
前記サービスを前記リモートサーバが実行することができるように、前記リモートサーバへ前記要求に関連する１つもしくは複数のパケットをリダイレクトして、前記所与のセッションが前記リモートサーバに対してリダイレクトされるようにする手段であって、前記１もしくは複数のパケットのそれぞれのヘッダーの少なくとも一部分を修正するよう動作する手段と、を含むことを特徴とするコンピュータシステム。
【請求項１４】
前記リモートサーバに前記デスティネーションを通知する手段と、
実行されるサービスに関連するパケットを前記リモートサーバから前記デスティネーションへ送るサービス送信手段とをさらに有することを特徴とする請求項１３に記載のコンピュータシステム。
【請求項１５】
前記確認手段は、セッションキーデータを使用する手段を含むことを特徴とする請求項１３に記載のコンピュータシステム。
【請求項１６】
前記確認手段は、セッションキーデータを使用してテーブル参照を行う手段を含むことを特徴とする請求項１３に記載のコンピュータシステム。
【請求項１７】
コンピュータネットワークでファイアウォールサービスを提供するコンピュータシステムにおいて、該コンピュータシステムは、
ソースからデスティネーションまでの所与のセッションと関連づけられた要求を取得し、
前記要求は、リモートサーバが実行可能なサービスを必要とするかどうかを確認し、
前記要求はリモートサーバが実行可能なサービスを必要とする場合、前記サービスを前記リモートサーバが実行することができるように、前記リモートサーバへ前記要求に関連する１つもしくは複数のパケットをリダイレクトして、前記所与のセッションが前記リモートサーバに対してリダイレクトされるようにし、および前記１もしくは複数のパケットのそれぞれのヘッダーの少なくとも一部分を修正するよう動作することが可能なプロセッサを含むことを特徴とするコンピュータシステム。
【請求項１８】
前記プロセッサは、
前記リモートサーバに前記デスティネーションを通知し、
実行されるサービスに関連するパケットを前記リモートサーバから前記デスティネーションへ送る
ように動作することも可能であることを特徴とする請求項１７に記載のコンピュータシステム。
【請求項１９】
前記確認動作のために、前記プロセッサは、セッションキーデータを使用するように動作することが可能であることを特徴とする請求項１７に記載のコンピュータシステム。
【請求項２０】
前記確認動作のために、前記プロセッサは、セッションキーデータを使用してテーブル参照を行うように動作することが可能であることを特徴とする請求項１７に記載のコンピュータシステム。
【請求項２１】
コンピュータネットワークでファイアウォールサービスを提供する方法において、該方法は、
ファイアウォールにおいて、ソースからデスティネーションまでの所与のセッションと関連づけられた要求を受信するステップと、
前記ファイアウォールが前記要求を許可するには、リモートプロキシが提供可能なサービスを必要とするかどうかを確認するステップと、
前記ファイアウォールが前記要求を許可するにはリモートプロキシが提供可能なサービスが必要である場合、該サービスを該リモートプロキシが実行することができるように、前記要求に関連する１つもしくは複数のパケットを前記リモートプロキシに反射させて、前記所与のセッションが前記リモートプロキシに対して反射されるようにするステップとであって、前記１もしくは複数のパケットのそれぞれのヘッダーの少なくとも一部分を修正する処理からなるステップと、を含むことを特徴とするファイアウォールサービス提供方法。
【請求項２２】
前記リモートプロキシに前記デスティネーションを通知するステップと、
実行されるサービスに関連するパケットを前記リモートプロキシから前記デスティネーションへ送るステップとをさらに有することを特徴とする請求項２１に記載の方法。
【請求項２３】
コンピュータネットワークでファイアウォールサービスを提供する方法において、該方法は、
ソースからデスティネーションまでの所与のセッションと関連づけられた要求を取得するステップと、
前記要求は、リモートサーバが実行可能なサービスを必要とするかどうかを確認するステップと、
前記サービスを前記リモートサーバが実行することができるように、前記リモートサーバへ前記要求に関連する１つもしくは複数のパケットを反射させて、前記所与のセッションが前記リモートサーバに対して反射されるようにするステップであって、前記１もしくは複数のパケットのそれぞれのヘッダーの少なくとも一部分を修正する処理からなるステップと、を含むことを特徴とするファイアウォールサービス提供方法。
【請求項２４】
コンピュータネットワークでファイアウォールサービスを提供する装置において、該装置は、
ファイアウォールにおいて、ソースからデスティネーションまでの所与のセッションと関連づけられた要求を受信し、
前記ファイアウォールが前記要求を許可するには、リモートプロキシが提供可能なサービスを必要とするかどうかを確認し、
前記ファイアウォールが前記要求を許可するにはリモートプロキシが提供可能なサービスが必要である場合、該サービスを該リモートプロキシが実行することができるように、前記要求に関連する１つもしくは複数のパケットを前記リモートプロキシに反射させて、前記所与のセッションが前記リモートプロキシに対して反射されるようにし、前記１もしくは複数のパケットのそれぞれのヘッダーの少なくとも一部分を修正するよう動作することが可能な少なくとも１つのプロセッサを有することを特徴とするファイアウォールサービス提供装置。
【請求項２５】
コンピュータネットワークでファイアウォールサービスを提供する装置において、該装置は、
ソースからデスティネーションまでの所与のセッションと関連づけられた要求を取得し、
前記要求は、リモートサーバが実行可能なサービスを必要とするかどうかを確認し、
前記サービスを前記リモートサーバが実行することができるように、前記リモートサーバへ前記要求に関連する１つもしくは複数のパケットを反射させて、前記所与のセッションが前記リモートサーバに対して反射されるようにし、前記１もしくは複数のパケットのそれぞれのヘッダーの少なくとも一部分を修正するよう動作することが可能な少なくとも１つのプロセッサを有することを特徴とするファイアウォールサービス提供装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータネットワークにおける権限のないアクセスの防止に関し、特に、コンピュータネットワーク内のファイアウォール保護に関する。
【背景技術】
【０００２】
コンピュータネットワークでは、情報は、通常、パケットの形で伝送される。あるサイトにある情報は、そのサイトまたは別のサイトのコマンドで、別のサイトからアクセスされ、あるいは、別のサイトへ送信される。従って、例えば情報が財産である場合、権限のないアクセスに対する保護の必要がある。このために、ファイアウォールとして知られるワークプロセッサコンポーネントで実行される、パケットフィルタリングという技術が開発され市販されている。ファイアウォールでは、パケットは検査されフィルタリングされる。すなわち、あらかじめ定義されたアクセスルールのセットに従っているかどうかに応じて、パケットは、通過し、あるいは、廃棄される。通常、このルールセットは表形式で表される。
【０００３】
一般に、ファイアウォールアドミニストレータは、ファイアウォールの一方の側から他方の側へは、同意された広範なアクセスを許容するが、アクティブなネットワークセッションの一部ではない逆向きの伝送は遮断する。例えば、会社の「内部」の従業員はファイアウォールを通じてインターネットのような「外部」のネットワークに無制限にアクセスすることができるが、インターネットからのアクセスは、特別に権限を与えられていなければ遮断される。このような、会社とインターネットの境界にあるファイアウォールに加えて、ファイアウォールは、ネットワークドメイン間にも置かれることがあり、また、ドメイン内でも、サブドメインを保護するために用いられることがある。それぞれの場合において、異なるセキュリティポリシーが関係している。
【０００４】
いくつかの複雑なネットワークプロトコルでは、外部からユーザへ戻る別個の追加のネットワークセッションが必要とされる。そのような複雑なプロトコルの１つは、RealAudioという商品名で知られているサービスによって用いられている。特別の処置がなければ、この別個のセッションに対する要求はファイアウォールによって遮断されてしまう。
【０００５】
このような複雑なプロトコルに対して、ユーザの代わりにファイアウォールプロセッサ上で並行して走る別個の「プロキシ」プロセスが開発されている。プロキシプロセスは、別の特殊目的アプリケーション、例えば、認証、メール処理、およびウィルススキャンのようなサービスを実行するためにも、開発されている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ファイアウォールプロセッサが並行プロセスをサポートする容量には限界があるので、並行して走らせることができるセッションの数を最大にするためには、ファイアウォール上のプロキシプロセスに対する需要を最小にすることが好ましい。さらに、このような最小化は、全伝送レートに関しても、好ましい。その理由は、入力データが別々のプロセスを通ると伝送が遅くなるためである。
【課題を解決するための手段】
【０００７】
本発明は、処理効率を改善し、セキュリティを改善し、アクセスルール自由度を増大させ、複雑なプロトコルを扱うファイアウォールの能力を高めるように、コンピュータネットワークのファイアウォールを実現する技術を提供する。本発明の第１の特徴によれば、コンピュータネットワークファイアウォールは、与えられたパケットに対していくつかの別個のアクセスルールセットのうちのいずれかを適用することによって、（ａ）複数のセキュリティポリシー、（ｂ）複数のユーザ、または、（ｃ）複数のセキュリティポリシーおよび複数のユーザの両方をサポートすることができる。パケットに対して適用されるルールセットは、入出力ネットワークインタフェースや、ネットワークのソースおよびデスティネーションのアドレスのような情報に基づいて決定される。
【０００８】
本発明の第２の特徴によれば、コンピュータネットワークファイアウォールは、パケットに適用されるルール処理の結果を記憶することによって性能を改善する「状態付き」パケットフィルタリングを利用するように構成される。状態付きパケットフィルタリングは、パケットに対するルール処理結果をキャッシュし、キャッシュされた結果を利用して後続の同種のパケットに対するルール処理を迂回することによって実現される。例えば、あるネットワークセッションの特定のパケットにルールセットを適用した結果をキャッシュし、同じネットワークセッションからの後続のパケットがファイアウォールに到着したときに、キャッシュされている前のパケットからの結果を、その後続パケットに対して用いる。これにより、それぞれの入力パケットにそのルールセットを適用する必要がなくなる。
【０００９】
本発明の第３の特徴によれば、コンピュータネットワークファイアウォールは、ソースホストアドレス、デスティネーションホストアドレス、およびサービスタイプのようなセッションデータ項目に基づいて設定することが可能な依存関係マスクを用いて、ネットワークセッションを認証あるいは阻止する。依存関係マスクを用いて、ファイアウォールによって処理されているアクティブセッションのキャッシュに問合せをすることが可能であり、それにより、問合せを満たすセッションの数を識別することができる。この問合せを、アクセスルールに対応させ、特定のルールのセッションが、その問合せに適合する数に依存するようにすることが可能である。
【００１０】
本発明の第４の特徴によれば、コンピュータネットワークファイアウォールは、パケットを処理するためのアクセスルールのセットに追加された動的ルールを利用することが可能である。動的ルールによれば、与えられたルールセットは、ルールセット全体をリロードすることを要求せずに、ネットワークにおいて起こるイベントに基づいて修正される。動的ルールの例としては、単一のセッションに対してのみ用いられる「ワンタイム」ルール、指定された期間に対してのみ用いられる時限ルール、および、ある条件が満たされたときにのみ用いられるしきい値ルールがある。他のタイプの動的ルールとしては、ホストグループを定義するルールがある。この動的ルールによれば、アクセスルールセットの他の事項を変更せずに、ホストを追加あるいは削除するようにホストグループを変更することができる。
【００１１】
本発明の第５の特徴によれば、アプリケーションプロキシのファイアウォールの負担を軽減するように、処理のための別のサーバにネットワークセッションをリダイレクトするようコンピュータネットワークファイアウォールに対して指令することができる。この別サーバは、リダイレクトされたネットワークセッションを処理した後、そのセッションを、ファイアウォールを通じて、もとの意図されたデスティネーションへ渡す。
【００１２】
本発明のコンピュータネットワークファイアウォールにより、広範囲の重要なアプリケーションでのファイアウォール処理が可能となる。例えば、本発明は、ダイヤルアップアクセスゲートウェイに実装可能である。本発明の別の実施例では、ファイアウォールの第１部分がネットワークに存在し、ファイアウォールの第２部分がセットトップボックス、コンピュータあるいはその他の、家庭または会社にあるユーザ端末にあるというように分散的にも実装可能である。後者の実施例によれば、本発明のファイアウォール技術は、例えば、家庭においてインターネットとビデオアクセスの親による制御を提供することが可能である。
【図面の簡単な説明】
【００１３】
【図１】ユーザサイトに対するファイアウォール保護を提供するローカルエリアネットワークを通じてインターネットに接続されたいくつかのユーザサイトあるいはドメインの図である。
【図２】インターネットに接続され内部ファイアウォールを有するユーザサイトの図である。
【図３】ルールテーブルを例示する図である。
【図４】キャッシュを例示する図である。
【図５】複数のドメインに対するファイアウォール処理の全体流れ図である。
【図６】複数のドメインに対するファイアウォール処理の全体流れ図である。
【図７】ドメインテーブルを例示する図である。
【図８】複数のドメインに対するファイアウォール処理の一部の流れ図である。
【図９】依存関係マスクを例示する図である。
【図１０】依存関係マスク処理の流れ図である。
【図１１】ファイアウォールにおけるプロキシ反射処理の流れ図である。
【図１２】リモートプロキシにおけるプロキシ反射処理の流れ図である。
【発明を実施するための形態】
【００１４】
ファイアウォールにおいて、例えば、別個のローカルエリアネットワーク（ＬＡＮ）間あるいはＬＡＮのサブネット間でのデータの流れを制御する好ましい技術が実現される。以下で、本発明の実施例は、プロセスに関して説明する。このようなプロセスの効率的なプロトタイプは、汎用ＰＣハードウェア上に実装するためにプログラミング言語Ｃを用いて、コンピュータシステムソフトウェアとして実現されている。専用のファームウェアあるいはハードウェアのコンピュータシステム実装により、さらに効率を向上させることも可能である。
【００１５】
１．複数のセキュリティドメインのサポート
複数のセキュリティドメインをサポートする能力により、単一のファイアウォールが、それぞれ別々のセキュリティポリシーを有する複数のユーザをサポートすることが可能となる。また、相異なるセキュリティポリシーをサブサイト間の通信に適用することができるため、このような能力は、サイト内でも使用可能である。それぞれの構成を図１および図２に例示する。
【００１６】
図１に、インターネット１０５への接続にファイアウォールを有する４つのユーザサイト１０１〜１０４（例として、会社Ａ〜Ｄ）を示す。このような保護は、ファイアウォール設備によって提供される。ファイアウォール設備は、ここではＬＡＮ１１０の形態であり、ファイアウォールプロセッサ１１１、１１３および１１４、アドミニストレータプロセッサ１１５、ルータ１１６ならびにウェブサーバ１１７を有する。ファイアウォールプロセッサ１１３および１１４はそれぞれ単一のサイト（すなわち、それぞれサイト１０３および１０４）専用である。ファイアウォールプロセッサ１１１は、２つのサイト１０１および１０２にサービスするように設定される。ファイアウォールプロセッサ１１１は、２つのサイトそれぞれとインターネット１０５との間、および、２つのサイト間の通信に、別々のファイアウォールポリシーを実装する。ファイアウォールプロセッサ１１１の好ましい動作のためのプロセスについて、複数のファイアウォールポリシーのうちからの適切な選択を含めて、図５および図６を参照して後述する。
【００１７】
図２に、ファイアウォールプロセッサ２１１を通じてインターネット１０５に接続されたユーザサイト２０１を示す。アドミニストレータプロセッサ２１５およびルータ２１６は、ファイアウォールプロセッサ２１１に接続される。ルータ２１６は、ユーザサイト２０１の内部にある別のファイアウォールプロセッサ２１２および２１３に接続される。ファイアウォールプロセッサ２１２は、単一のサブサイト２２３（例として人事（ＨＲ））を保護する。ファイアウォール２１３は、２つのサブサイト（例として、給与（Ｐ）および支払（Ｄ））を、サイト２０１の残りの部分に対して、および、サブサイト２２１と２２２の間の通信に関して、保護するように設定される。これは、ファイアウォールプロセッサ２１３において、図５および図６で例示されるプロセスを用いることによって達成される。
【００１８】
セキュリティポリシーは、アクセスルールのセットによって表現される。アクセスルールのセットは、表（テーブル）形式で表され、ファイアウォールアドミニストレータによってファイアウォールにロードされる。図３に示すように、このようなテーブルは、ルール番号、ソースおよびデスティネーションのホストの名称、パケットで要求されることが可能な特殊サービスの名称、および、パケットに対してなされるアクションの指定を含むカテゴリに対して与えられる。特殊サービスには、例えば、プロキシサービス、ネットワークアドレス翻訳、および、暗号化が含まれる。図３では、「ソースホスト」、「デスティネーションホスト」および「サービス」というカテゴリは、パケットに対して指定されたアクションがなされるために、そのパケットに含まれるデータが満たさなければならない条件を課している。他の条件を含めることも可能であり、そのような条件は、必ずしも、パケットに含まれるデータに関係する必要はない。例えば、ルールの適用は、日時に関して条件づけられることも可能である。
【００１９】
あるルールにおいて、ルールテーブルに与えられたカテゴリが無関係である場合、対応するテーブルエントリは「ワイルドカード」とマークされる。これは、任意のカテゴリあるいはカテゴリの組合せに適用可能である。図３などでは、ワイルドカードエントリにアステリスク（＊）を用いている。「ＦＴＰ」はファイル転送プロトコル(file transfer protocol)を表す。
【００２０】
パケットに対するルール処理において、パケットによって満たされるルールが見つかるまで（または、ルールテーブルの最後まで。その場合、そのパケットは廃棄される。）、ルールは順に適用される。ルールを満たすパケットに対して、そのルールに含まれる各条件が満たされなければならない。例えば、図３において、ソースホストＡからデスティネーションホストＤへの、メールを表すパケットは、ルール２０により廃棄される。以下は、本発明による例示的なルールセットカテゴリのさらに詳細なリストである。最初の５個のカテゴリ名は、図３のカテゴリに対応する。
【００２１】
カテゴリ名：ルール番号
説明：ドメイン内のルールの番号。ルール番号は、一意的である必要はないが、一般に、単一のサービス（例えばＦＴＰ）を表すべきである。
【００２２】
カテゴリ名：ソースホスト
説明：ソースホストグループの識別子またはＩＰアドレス。
【００２３】
カテゴリ名：デスティネーションホスト
説明：デスティネーションホストグループの識別子またはＩＰアドレス。
【００２４】
カテゴリ名：サービス
説明：サービスのグループまたはプロトコル／デスティネーションポート／ソースポート。
【００２５】
カテゴリ名：アクション
説明：ルールアクション、例えば、「通過」、「廃棄」または「プロキシ」。
【００２６】
カテゴリ名：廃棄通知
説明：ＹＥＳの場合、アクションが「廃棄」であれば、インターネット制御メッセージプロトコル（ＩＣＭＰ）メッセージが送出される。
【００２７】
カテゴリ名：キャッシュタイムアウト
説明：セッションエントリがキャッシュから除去されるまでのアクティビティなしの秒数。
【００２８】
カテゴリ名：リセットセッション
説明：ＹＥＳの場合、ＴＣＰセッションに対して、キャッシュタイムアウト時にコネクションの両端にＴＣＰリセットを送る。
【００２９】
カテゴリ名：ルールタイムアウト
説明：ルールがルールリストから除去されるまでのアクティビティなしの秒数。
【００３０】
カテゴリ名：開始期間
説明：ルールに対する開始アクティブ期間。
【００３１】
カテゴリ名：終了期間
説明：ルールに対する終了アクティブ期間。
【００３２】
カテゴリ名：期間終了時セッション消去
説明：ＹＥＳの場合、このルールによって許可されたセッションは期間終了時に消去(kill)される。
【００３３】
カテゴリ名：依存関係マスク
説明：依存関係マスク名。
【００３４】
カテゴリ名：入力インタフェース
説明：受信時に一致すべきインタフェース名。
【００３５】
カテゴリ名：出力インタフェース
説明：パケットが送信されるインタフェース名。
【００３６】
カテゴリ名：監査セッション
説明：監査記録生成。ＹＥＳの場合、セッションの開始時および終了時に監査記録が生成される。
【００３７】
カテゴリ名：アラームコード
説明：ルールを特定のアラームに結び付けるために用いられるアラームコード値。
【００３８】
カテゴリ名：ソースホストマップグループ
説明：ＩＰアドレス、または、マップ先のホストＩＰアドレスを含むホストグループ。
【００３９】
カテゴリ名：ソースホストマップタイプ
説明：実行されるマッピングのタイプ（例えば、「プール」あるいは「直接」）。
【００４０】
カテゴリ名：デスティネーションホストマップグループ
説明：ＩＰアドレス、または、マップ先のホストＩＰアドレスを含むホストグループ。
【００４１】
カテゴリ名：デスティネーションホストマップタイプ
説明：実行されるマッピングのタイプ（例えば、「プール」あるいは「直接」）。
【００４２】
カテゴリ名：サービスマップグループ
説明：マップ先のデスティネーションポート番号またはデスティネーションポートを含むサービスグループ。参照されるサービスグループ内のプロトコルおよびソースポートは無視される。
【００４３】
カテゴリ名：サービスマップタイプ
説明：実行されるマッピングのタイプ（例えば、「プール」あるいは「直接」）。
【００４４】
カテゴリ名：最大使用総数
説明：このルールが使用されることが可能な最大回数。この限界に達するとルールは除去される。
【００４５】
カテゴリ名：最大使用並行数
説明：与えられた時刻にアクティブであることが可能な、このルールによって許可されるセッションの最大数。この数が、指定された値を下回るまで、ルールはイナクティブである。
【００４６】
カテゴリ名：コピー先アドレス
説明：パケットのコピーが送られるアプリケーションのアドレス。セッションキャプチャに用いられる。
【００４７】
カテゴリ名：トンネルデスティネーション
説明：トンネルを設定し、それをこのデスティネーションアドレスおよびプロトコルに送る。新しいＩＰヘッダがパケットに追加される。
【００４８】
カテゴリ名：トンネル条件
説明：トンネリングが必要となるときを示す。ＮＵＬＬの場合、チェックは不要である。ＩＮの場合、入力セッションはトンネリングされていなければならない。ＯＵＴの場合、パケットをトンネリングするアクションを開始する。ＢＯＴＨの場合、両方を行う。
【００４９】
カテゴリ名：ＩＰＳＥＣ条件
説明：ＩＰセキュリティ（ＩＰＳＥＣ(IP Security)）処理が必要となるときを示す。ＮＵＬＬの場合、チェックは不要である。ＩＮの場合、入力セッションはＩＰＳＥＣを用いて保護されていなければならない。ＯＵＴの場合、ＩＰＳＥＣ保護を追加するアクションを開始する。ＢＯＴＨの場合、両方を行う。
【００５０】
カテゴリ名：シーケンス番号ランダム化
説明：ＴＣＰシーケンス番号をランダム化するオプション。デフォルトはＮＯである。
【００５１】
カテゴリ名：Syn Storm保護
説明：Syn Storm攻撃からの保護を提供する。デフォルトはＮＯである。
【００５２】
カテゴリ名：復帰チャネル許可
説明：ＹＥＳの場合、初期パケットは同じアクションでキャッシュに順チャネルおよび逆チャネルを生成する。デフォルトはＹＥＳである。
【００５３】
２．状態付きパケットフィルタリング
本発明によるコンピュータネットワークファイアウォールは、「状態付き」パケットフィルタリングを利用するように設定することができる。状態付きパケットフィルタリングは、パケットに適用されたルール処理の結果をキャッシュに記憶することによって性能を改善する。状態付きパケットフィルタリングは、受信パケットに対するルール処理結果をキャッシュし、その後、キャッシュされた結果を利用して、同様のパケットに対するルール処理を迂回することにより実現される。例えば、与えられたネットワークセッションのパケットにルールセットを適用した結果をキャッシュし、同じネットワークセッションからの後続のパケットがファイアウォールに到着したときに、前のパケットからのキャッシュされた結果をその後続パケットに対して使用するようにする。これによって、入力パケットのそれぞれにルールセットを適用する必要がなくなることにより、従来のファイアウォールに比べて大幅な性能向上が実現する。
【００５４】
キャッシュエントリの数はルールの数の何倍にもなり得るため、キャッシュの効率的使用は、（例えばハッシュテーブルを用いた）索引付けを必要とすることがある。図４に示すように、キャッシュは「セッションキー」、ハードウェアアドレス情報、インタフェース情報、適用可能なルールの数、アラームコード、統計情報、および適用可能なアクションを含むことが可能である。セッションキーは、パケット内で送信されるデータに付加された少なくとも１つのヘッダ項目を含み、実施例では、（ｉ）インターネットプロトコル（ＩＰ）ソースアドレス、（ｉｉ）ＩＰデスティネーションアドレス、（ｉｉｉ）次のレベルのプロトコル（例えば、伝送制御プロトコル（ＴＣＰ）またはユーザデータグラムプロトコル（ＵＤＰ））、（ｉｖ）プロトコルに関連づけられたソースポート、および（ｖ）プロトコルに関連づけられたデスティネーションポート、を含む。図４では、セッションキーに対して、項目（ｉ）および（ｉｉ）は個別に示されている。項目（ｉｉｉ）〜（ｖ）は、略して「ＴＥＬＮＥＴ」および「ＭＡＩＬ」で表されている。
【００５５】
ファイアウォールでは、ここで「ドメインサポートエンジン（ＤＳＥ(domain support engine)）と呼ぶ判断モジュール（エンジン）が、新しいネットワークセッションに対していずれのセキュリティポリシーを使用すべきかを判断する。新しいセッションはそれぞれ、ソースドメインおよびデスティネーションドメインのセキュリティポリシーによって承認されなければならない。インターネットへ向かうコネクションでは、単一のドメインの検査のみが実行される可能性が高い。ＤＳＥは、入力または出力ネットワークインタフェースと、各パケットのソースまたはデスティネーションネットワークアドレスに基づいて、ドメイン選択を行う。ソースまたはデスティネーションのアドレスをパケットに含めることにより、複数のユーザが、単一のネットワークインタフェースによってサポートされることが可能となる。入力または出力ネットワークインタフェースは、ネットワークインタフェースカード（ＮＩＣ）（例えばインテル社(Intel Corporation)から市販されているIntel EtherExpress Pro 100Bカード）の形態のものが可能である。
【００５６】
図５および図６は、複数のドメインをサポートするファイアウォールによるパケット処理の全体流れ図である。このような処理は、パケットが行くドメインを判断し、適用可能なルールを検査してパケットが通ってもよいかどうかを確認し、特殊処理が必要稼働かを判断することを含む。ファイアウォールでは、各ドメインには１つ以上のネットワークインタフェースが関係づけられる。複数のドメインをサポートするインタフェースは、ＩＰアドレスレンジを用いて、パケットを区別するように分離される。以下のステップが含まれる。
【００５７】
５０１：ＩＰパケットがインタフェースでファイアウォールにより受信される。
【００５８】
５０２：パケットのＩＰヘッダからセッションキーが取得される。
【００５９】
５０３：いずれのインタフェースがパケットを受信したか、および、受信パケットのソースＩＰアドレスに基づいて、ソースドメインが、図７および図８に関して別に後述するように判定される。ドメインが見つからない場合、プロセスはステップ５０５に飛ぶ。
【００６０】
５０４：ステップ５０２からのセッションキーを用いて、ソースドメインのキャッシュでの一致を探索する。キャッシュ内に一致があり、アクションが「廃棄」の場合、パケットは廃棄され、プロセスはステップ５０１に戻る。キャッシュ内に一致がない場合、ソースドメインのルールセットで一致を探索する。ルールで一致があり、アクションが「廃棄」でない場合、プロセスはステップ５０５に進む。ルールで一致があり、アクションが「廃棄」の場合、対応するエントリがキャッシュに含められ、パケットは廃棄され、プロセスはステップ５０１に戻る。ルールで一致がない場合、パケットは廃棄され、プロセスはステップ５０１に戻る。
【００６１】
５０５：パケットのローカルエリアネットワーク（ＬＡＮ）アドレスを用いて、しかも、ソースドメインルールがデスティネーションインタフェースを指定している場合には、そのデスティネーションインタフェースおよびルーティングテーブルを用いて、デスティネーションインタフェースが決定される。
【００６２】
５０６：デスティネーションインタフェースおよびパケットのデスティネーションアドレスを用いて、デスティネーションドメインが決定される。デスティネーションドメインが見つからない場合、または、デスティネーションドメインが直前に検査したドメインと一致する場合、プロセスはステップ５０８に進む。
【００６３】
５０７：ソースドメインに関してステップ５０４で用いられるのと同様にして、デスティネーションドメインに関して、キャッシュルックアップと、必要であればルールセットルックアップを行う。
【００６４】
５０８：パケットに適用されるルールがアドレス変更（例えば、プロキシへの）を要求する場合、あるいは、あるパケットを別のパケット内に挿入すること（「トンネルオプション」）を要求する場合、プロセスは、変更されたデスティネーションに基づく処理のためにステップ５０５に戻る。
【００６５】
５０９：パケットがいずれのドメインに関しても処理されなかった場合、ファイアウォール所有者はいずれのアクセスルールにも従わないインタフェース間の通信をサポートすることには関心がないので、そのパケットは廃棄可能である。
【００６６】
５１０：すべてのアクションの結果が「通過」であった場合、パケットは適当なネットワークインタフェースへ送出される。
【００６７】
各ネットワークインタフェースからドメインへの簡便なリンクのために、ドメインテーブルが用いられる。インタフェースが複数のドメインによって共有されている場合、アドレスレンジが含められる。これは図７に例示されている。図７には、重複のないアドレスレンジが示されている。
【００６８】
図８に、上記のステップ５０３および５０６で実行されるようなドメインテーブル処理を例示する。これには以下のステップが含まれる。
【００６９】
７０１：ドメインテーブルでインタフェース名が一致するものを探索する。
【００７０】
７０２：一致するテーブルエントリが見つかった場合、しかも、ＩＰアドレスレンジが一致するテーブルエントリにある場合、パケットアドレスがそのレンジ内にあるかどうかを検査する。レンジ内にある場合、指定されたドメインが選択される。レンジ内にない場合、次のテーブルから探索を継続する。
【００７１】
７０３：一致するものがないままテーブルの終端に到達した場合、何のアクションもとらない。
【００７２】
３．依存関係マスク
例えばRealAudioによって用いられるプロトコルのような、外部からユーザに戻る別個の追加のネットワークセッションを要求するタイプのプロトコルの場合、ルールは、ユーザに戻るコネクションを許可する条件あるいはマスクを含むことが可能である。ただしそれは、並行してアクティブである正当な順方向のコネクション（すなわち、ソースとデスティネーションのアドレスを入れ替えたコネクション）がある場合に限る。その結果、ファイアウォール上に別個のあるいはプロキシのアプリケーションが不要となる。
【００７３】
本発明による依存関係マスクは、セッションキャッシュに向けられた問合せを定義することができる。マスクで定義されるすべてのフィールドを、キャッシュ内の対応するフィールドと比較することによって、一致の有無が判定される。マスク内の空フィールドは比較に用いられない。
【００７４】
依存関係マスクは、（ａ）パケット内の情報、（ｂ）そのパケットのソースインタフェース、および（ｃ）そのパケットが通過するために満たさなければならない１つまたはいくつかの依存条件、を用いて、ネットワークセッションの最初のパケットに対するルールで定義することが可能である。このような最初のパケットがファイアウォールによって処理されると、対応するエントリがキャッシュに作られる。
【００７５】
図９に、図３のものと同様のフォーマットで、依存関係マスク（「ヒットカウント」）を有するルールを示す。以下のような特殊な記号が、いくつかのホスト名にある。（ｉ）「ドット」記号（．）は、対応するカテゴリのパケットデータを含めることを要求し、（ｉｉ）キャレット記号（＾）は、代わりに異なるカテゴリからのパケットデータを含めることを要求する。「ヒットカウント」は、指定されたアクションがとられるためにキャッシュ内に見つからなければならない一致の数を示す。例えば、「ＲＥＡＬＡＵＤＩＯ」という名前の依存関係マスクでは、１個の必須のＴＣＰセッションがアクティブである限り、ＵＤＰパケットを通過させるためにはカウント１が用いられる。依存関係マスク「ＴＥＬＮＥＴ」では、リソースの過負荷を防ぐためにパケットを廃棄するように、カウント１０が用いられる。
【００７６】
図１０に依存関係マスク処理を例示する。これは以下のステップを含む。
【００７７】
９０１：パケットを取得し、セッションキーを抽出する。
【００７８】
９０２：プロセスはルールセットエントリを順に処理する。与えられたルールで一致が見つからない場合、プロセスはセット内の次のルールに進む。ルールセットの終端まで一致が見つからない場合、パケットは廃棄される。一致が見つかり、依存関係マスクフィールドが空の場合、プロセスはステップ９０５に飛ぶ。
【００７９】
９０３：パケットおよびインタフェース情報が、キャッシュ探索構造体（例えば、問合せ）の形成に含められる。依存関係マスクにおいてユーザ認証フラグがセットされている場合、キャッシュ探索構造体における対応するフラグがセットされる。このステップは、ルールの問合せ部分を定義している。
【００８０】
９０４：キャッシュで、キャッシュ探索構造体と一致するものを探索し、一致のカウントを積算する。このステップは、ルールの問合せ部分を処理している。
【００８１】
９０５：積算カウントがヒットカウント以上である場合、ルールは選択され、そのルールに対応するアクションが実行される。このようなアクションは、通過、廃棄あるいはプロキシを含むことが可能である。また、対応するエントリがキャッシュに作られる。キャッシュにおいて一致が見つからない場合、または、キャッシュに見つかったエントリが「ヒットカウント」より少ない場合、プロセスはステップ９０２に戻り、次のルールに進む。このステップは、問合せの結果に基づいてルールのアクション部分を処理している。
【００８２】
上記の依存関係マスク処理を含むルール処理は、ネットワークセッションの最初のパケットに対してのみ実行される。他のすべてのパケットのアクションは、最初のパケットの処理後にセッションキャッシュに保存されているので、他のすべてのパケットは、このルール探索機能を迂回する。
【００８３】
４．動的ルール
動的ルールは、例えばルール処理エンジンによって、アクセスルールとともに処理するために、必要が生ずるのに応じてアクセスルールとともに含められるルールである。動的ルールは、例えば、特定のソースおよびデスティネーションのポート番号のような、固有の現在の情報を含むことが可能である。動的ルールは、信頼されたパーティ、例えば、信頼されたアプリケーション、リモートプロキシあるいはファイアウォールアドミニストレータによって、特定のネットワークセッションに権限を与えるためにいつでもロードされることが可能である。動的ルールは、単一セッション用に設定されることも可能であり、あるいは、その使用は期限付きとすることも可能である。動的ルールによれば、ルールセット全体をリロードすることを要求することなく、与えられたルールセットを、ネットワークで起こるイベントに基づいて修正することが可能となる。
【００８４】
動的ルールの例としては、単一のセッションに対してのみ用いられる「ワンタイム」ルール、指定された期間に対してのみ用いられる時限ルール、および、ある条件が満たされたときにのみ用いられるしきい値ルールがある。他のタイプの動的ルールとしては、ホストグループを定義するルールがある。この動的ルールによれば、アクセスルールセットの他の事項を変更せずに、ホストを追加あるいは削除するようにホストグループを変更することができる。他の動的ルールとしては、ある特定のタイプの処理アプリケーションにおけるルールセットアップを容易にするために用いられるものがある。例えば、ＦＴＰプロキシアプリケーションは、動的ルールを用いて、データ要求に応じてＦＴＰデータチャネルの確立の権限を与えることが可能である。この例における動的ルールは、一般に、ＦＴＰ制御セッションを通じてデータ要求がなされるまではロードされず、また、１回の使用に限定され、制限された期間の間のみアクティブとされる。従って、ルールセットは、すべての要求とともに用いられる別個のデータチャネルルールを含む必要がない。その結果、ルール仕様およびルール処理が単純化されるとともに、セキュリティが改善される。
【００８５】
５．プロキシ反射
本発明によるプロキシ反射とは、ネットワークセッションを、処理のために他の「リモート」プロキシサーバにリダイレクトした後、ファイアウォールを通じて目的のデスティネーションへ渡すものである。新しいセッションがファイアウォールに入ると、プロキシサーバによるサービスが要求されているかどうかが判定される。プロキシサーバによるサービスが要求されている場合、ファイアウォールは、パケット内のデスティネーションアドレスを、プロキシアプリケーションのホストアドレスで置き換える。必要であれば、ファイアウォールは、サービスポートも変更することが可能である。プロキシアプリケーションは、そのセッションを受け取ると、デスティネーションへのコネクションの権限が与えられているかどうかを判定するために、ファイアウォールに対して、そのセッションのもとのデスティネーションアドレスを要求する。その後、プロキシが、自己のＩＰアドレスを用いてそのデスティネーションへのコネクションを形成する場合、ファイアウォールによって提供されるサービスを「単一反射」あるいは「一方向反射」という。
【００８６】
ユーザおよびプロキシアプリケーションによっては、デスティネーションにおいてコネクションがリモートシステムではなくもとのソースから来ているように見えなければならない場合がある。これは、例えば、ソースＩＰアドレスを検査して、要求されたサービスに対してサインアップしたユーザに一致するかどうかを確認するサービスの場合に当てはまる。この能力は、「二重反射」（あるいは「双方向反射」）によって提供される。この場合、出コネクションのソースアドレスはリモートプロキシからもとのユーザのソースアドレスに変更される（戻される）。この変更は、各パケットがプロキシから受信されてデスティネーションへ送られるときに、ファイアウォールで行われる。
【００８７】
二重反射能力を提供するため、プロキシアプリケーションは、ファイアウォールに対して、もとの入ネットワークセッションの詳細を要求する。ファイアウォールは、出コネクションで用いるポート番号を返す。このポート番号は固有のものであり、これによりファイアウォールは、ソースアドレスを正しいユーザソースアドレスにマッピングすることができるように、正しい出コネクションを識別することができる。その結果、プロキシアプリケーションは両方のパーティには見えない。
【００８８】
プロキシ反射を実現する際に、図１１および図１２を参照して以下で説明する実施例のように、動的ルールを用いることが可能である。
【００８９】
図１１に、プロキシ反射処理を例示する。これは、ファイアウォールにおける以下のステップを含む。
【００９０】
１００１：パケットがファイアウォールによって受信される。
【００９１】
１００２：適当なセッションキャッシュを調べることによって、あるいは、キャッシュ内に見つからなければ、適当なルールセットを調べることによって、パケットに関係づけられたアクションが判定される。アクションが「通過」または「プロキシ」である場合、パケット処理は継続される。アクションが「廃棄」である場合、パケットは廃棄される。
【００９２】
１００３：アクションが、ファイアウォール上でローカルにサポートされるプロキシアプリケーションを示している場合、パケットは、プロトコルスタックを通じて、待機中のプロキシアプリケーションへ送られる。
【００９３】
１００４：アクションがリモートプロキシを示している場合、パケットのデスティネーションアドレスがリモートプロキシのアドレスで置き換えられる。設定により、デスティネーションポートを変更することも可能である。もとのパケットヘッダデータが、変更された値とともにセッションキャッシュに記録される。
【００９４】
１００５：パケットはリモートプロキシサーバへ転送される。
【００９５】
図１２に、リモートプロキシにおける、ステップ１００５に続く処理を例示する。これは以下のステップを含む。
【００９６】
１００６：パケットはリモートプロキシサーバアプリケーションで受信される。
【００９７】
１００７：リモートプロキシは、ファイアウォールに対して、パケットのもとのセッションキーを要求する。
【００９８】
１００８：リモートプロキシアプリケーションは、もとのセッションキーを用いて自己の機能（例えば、自己のセキュリティモデルに基づいてコネクションを廃棄する、要求されたサービスを実行する、あるいは、ユーザに代わってもとのデスティネーションアドレスと通信する）を実行する。リモートプロキシが単一反射を用いている場合、プロセスはステップ１０１１に飛ぶ。
【００９９】
１００９：リモートプロキシアプリケーションは、暗号化されたチャネルを通じて、ファイアウォールに対して二重反射能力を要求する。
【０１００】
１０１０：ファイアウォールは、サーバからのコネクションの固有性を保証する新しいデスティネーションポート番号を決定する。ファイアウォールはこの新しいポート番号およびもとのセッションキーをプロキシアプリケーションに返す。
【０１０１】
１０１１：リモートプロキシアプリケーションは、ファイアウォールに対して、自己からもとのデスティネーションへのコネクションに対する許可を要求する。
【０１０２】
１０１２：ファイアウォールは、動的ルールをロードしてこのアクションを実行する。
【０１０３】
１０１３：リモートプロキシは、パケットをファイアウォールに送る。ステップ１０１２でロードされた動的ルールに基づいて、ファイアウォールはパケットをもとのデスティネーションへ転送する。二重反射の場合、プロキシは、ステップ１０１０でファイアウォールによって決定されたデスティネーションポートを使用し、パケットがファイアウォール通過するときに、ＩＰヘッダ値はもとの値に戻される。
【０１０４】
同じセッションに関係づけられた後続のすべてのパケットは、ステップ１００７および１００９〜１０１２を飛ばすことが可能であることを除いては、同様に処理される。これは、セッションが生きている間、同じ動的ルールが適用されるからである。
【０１０５】
本発明は、広範囲のアプリケーションで実施することができる。例えば、本発明は、ダイヤルアップアクセスゲートウェイにおけるファイアウォール性能を改善するために使用可能である。本発明の別の実施例では、ファイアウォールの第１部分がネットワークに存在し、ファイアウォールの第２部分がセットトップボックス、コンピュータあるいはその他の、家庭または会社にあるユーザ端末にあるというように分散的にも実装可能である。後者の実施例によれば、本発明のファイアウォール技術は、例えば、家庭においてインターネットとビデオアクセスの親による制御を提供することが可能である。
【０１０６】
［発明の効果］
以上述べたごとく、本発明によれば、アプリケーションプロキシのファイアウォールの負担を軽減するように、処理のための別のサーバにネットワークセッションをリダイレクトするようコンピュータネットワークファイアウォールに対して指令することができる。この別サーバは、リダイレクトされたネットワークセッションを処理した後、そのセッションを、ファイアウォールを通じて、もとの意図されたデスティネーションへ渡す。
【符号の説明】
【０１０７】
１０１  ユーザサイト
１０２  ユーザサイト
１０３  ユーザサイト
１０４  ユーザサイト
１０５  インターネット
１１０  ＬＡＮ
１１１  ファイアウォールプロセッサ
１１３  ファイアウォールプロセッサ
１１４  ファイアウォールプロセッサ
１１５  アドミニストレータプロセッサ
１１６  ルータ
１１７  ウェブサーバ
２０１  ユーザサイト
２１１  ファイアウォールプロセッサ
２１２  ファイアウォールプロセッサ
２１３  ファイアウォールプロセッサ
２１５  アドミニストレータプロセッサ
２１６  ルータ
２２１  サブサイト
２２２  サブサイト
２２３  サブサイト
【図１】
0004690480.tif 000002
【図２】
0004690480.tif 000003
【図３】
0004690480.tif 000004
【図４】
0004690480.tif 000005
【図５】
0004690480.tif 000006
【図６】
0004690480.tif 000007
【図７】
0004690480.tif 000008
【図８】
0004690480.tif 000009
【図９】
0004690480.tif 000010
【図１０】
0004690480.tif 000011
【図１１】
0004690480.tif 000012
【図１２】
0004690480.tif 000013