"通信端末から、実IPアドレスおよび仮想IPアドレスを有するサーバの前記仮想IPアドレス宛てに送信されるパケットを中継する複数の第1の中継端末と、前記第1の中継端末によって中継されたパケットを受信し、受信したパケットを前記仮想IPアドレスに対応した前記実IPアドレス宛てのパケットに変換し、前記サーバとの間で確立されたVPN接続により前記サーバへ変換後のパケットを送信する複数の第2の中継端末と、を備えた通信システムであって、前記第1の中継端末は、パケットを削除するルールを示すルール情報を前記第2の中継端末から受信する受信部と、前記第2の中継端末から受信された前記ルール情報が示すルールに従って、前記第1の中継端末で受信されたパケットを削除するフィルタリング部と、を有し、前記第2の中継端末は、前記サーバ宛てのトラヒック量を検知し、検知したトラヒック量に基づいて、前記サーバ毎に攻撃を検知する検知部と、前記検知部によって特定のサーバへの攻撃が検知された場合に、前記第2の中継端末で受信されたパケットのうち前記特定のサーバ宛てのパケットに基づいて、当該パケットを送信した前記通信端末毎にトラヒック量を検知し、検知した前記通信端末毎のトラヒック量を量順に並べたときの多いほうから順に1番目からMM:自然数番目までのトラヒック量に基づいて前記ルールを決定し、前記ルール情報を生成するルール決定部と、前記特定のサーバ宛てのパケットを中継した前記第1の中継端末へ前記ルール情報を送信する送信部と、を有することを特徴とする通信システム。前記Mは、前記第1の中継端末で設定可能な前記ルールの数であることを特徴とする請求項1に記載の通信システム。前記ルール決定部は、前記特定のサーバ宛ての全てのトラヒック量と、前記1番目から前記M番目までのトラヒック量の合計とを比較した結果に基づいて前記ルールを決定することを特徴とする請求項2に記載の通信システム。前記ルール決定部は、前記1番目から前記M番目までのトラヒック量の合計を前記特定のサーバ宛ての全てのトラヒック量から減算した値が所定値以下である場合に、前記1番目から前記M番目までのトラヒック量に係るパケットを中継した前記第1の中継端末に設定する前記ルールとして、前記1番目から前記M番目までのトラヒック量に係るパケットを送信した前記通信端末からのパケットを削除するという前記ルールを決定することを特徴とする請求項3に記載の通信システム。前記ルール決定部は、前記1番目から前記M番目までの第1のトラヒック量の合計を前記特定のサーバ宛ての全てのトラヒック量から減算した値が所定値を超える場合に、前記第2の中継端末で受信されたパケットのうち前記特定のサーバ宛てのパケットに基づいて、当該パケットを中継した前記第1の中継端末毎にトラヒック量を検知し、検知した前記第1の中継端末毎のトラヒック量を量順に並べたときの多いほうから順に1番目からNN:自然数番目までの第2のトラヒック量の合計を前記特定のサーバ宛ての全てのトラヒック量から減算した値が所定値以下であれば、前記第1のトラヒック量に係るパケットを中継した前記第1の中継端末に設定する前記ルールとして、前記第2のトラヒック量に係るパケットを中継した前記第1の中継端末で受信される全てのパケットを削除するという前記ルールを決定することを特徴とする請求項3または請求項4に記載の通信システム。分散DoS攻撃の攻撃クライアントに近い上流側では、観測される不正パケットの量が少なく、正規なパケットとの見極めが困難であることから、分散DoS攻撃に対する従来の防御手法では、攻撃対象のサーバの近傍でサーバ宛てのトラヒックを全て遮断せざるを得ず、これによって正規のトラヒックも遮断されてしまうため、正規のトラヒックへの影響が大きかった。また、攻撃クライアントを的確に把握できたとしても、ファイアウォールに設定可能な防御ルールの数に制限があることから、攻撃クライアントの数が多数の場合も、サーバ宛のトラヒックを全体的に遮断せざるを得なかった。本発明は、上述した課題に鑑みてなされたものであって、正規のトラヒックへの影響を抑えつつ、サーバを攻撃から防御することができる通信システムを提供することを目的とする。本発明は、上記の課題を解決するためになされたもので、通信端末から、実IPアドレスおよび仮想IPアドレスを有するサーバの前記仮想IPアドレス宛てに送信されるパケットを中継する複数の第1の中継端末と、前記第1の中継端末によって中継されたパケットを受信し、受信したパケットを前記仮想IPアドレスに対応した前記実IPアドレス宛てのパケットに変換し、前記サーバとの間で確立されたVPN接続により前記サーバへ変換後のパケットを送信する複数の第2の中継端末と、を備えた通信システムであって、前記第1の中継端末は、パケットを削除するルールを示すルール情報を前記第2の中継端末から受信する受信部と、前記第2の中継端末から受信された前記ルール情報が示すルールに従って、前記第1の中継端末で受信されたパケットを削除するフィルタリング部と、を有し、前記第2の中継端末は、前記サーバ宛てのトラヒック量を検知し、検知したトラヒック量に基づいて、前記サーバ毎に攻撃を検知する検知部と、前記検知部によって特定のサーバへの攻撃が検知された場合に、前記第2の中継端末で受信されたパケットのうち前記特定のサーバ宛てのパケットに基づいて、当該パケットを送信した前記通信端末毎にトラヒック量を検知し、検知した前記通信端末毎のトラヒック量を量順に並べたときの多いほうから順に1番目からMM:自然数番目までのトラヒック量に基づいて前記ルールを決定し、前記ルール情報を生成するルール決定部と、前記特定のサーバ宛てのパケットを中継した前記第1の中継端末へ前記ルール情報を送信する送信部と、を有することを特徴とする通信システムである。また、本発明の通信システムにおいて、前記Mは、前記第1の中継端末で設定可能な前記ルールの数であることを特徴とする。また、本発明の通信システムにおいて、前記ルール決定部は、前記特定のサーバ宛ての全てのトラヒック量と、前記1番目から前記M番目までのトラヒック量の合計とを比較した結果に基づいて前記ルールを決定することを特徴とする。また、本発明の通信システムにおいて、前記ルール決定部は、前記1番目から前記M番目までのトラヒック量の合計を前記特定のサーバ宛ての全てのトラヒック量から減算した値が所定値以下である場合に、前記1番目から前記M番目までのトラヒック量に係るパケットを中継した前記第1の中継端末に設定する前記ルールとして、前記1番目から前記M番目までのトラヒック量に係るパケットを送信した前記通信端末からのパケットを削除するという前記ルールを決定することを特徴とする。また、本発明の通信システムにおいて、前記ルール決定部は、前記1番目から前記M番目までの第1のトラヒック量の合計を前記特定のサーバ宛ての全てのトラヒック量から減算した値が所定値を超える場合に、前記第2の中継端末で受信されたパケットのうち前記特定のサーバ宛てのパケットに基づいて、当該パケットを中継した前記第1の中継端末毎にトラヒック量を検知し、検知した前記第1の中継端末毎のトラヒック量を量順に並べたときの多いほうから順に1番目からNN:自然数番目までの第2のトラヒック量の合計を前記特定のサーバ宛ての全てのトラヒック量から減算した値が所定値以下であれば、前記第1のトラヒック量に係るパケットを中継した前記第1の中継端末に設定する前記ルールとして、前記第2のトラヒック量に係るパケットを中継した前記第1の中継端末で受信される全てのパケットを削除するという前記ルールを決定することを特徴とする。本発明によれば、通信端末からサーバの仮想IPアドレス宛てに送信されるパケットは、第1の中継端末および第2の中継端末をこの順に経由してサーバに到達する。パケットの転送経路上でよりサーバに近い第2の中継端末が攻撃の検知を行うことによって、より的確に攻撃を検知することが可能となる。また、パケットの転送経路上でより攻撃元の通信端末に近い第1の中継端末がパケットのフィルタリングを行うことによって、攻撃元の通信端末から送信されたパケットの転送によるネットワーク資源の消費をより抑えることが可能となる。さらに、第2の中継端末で検知された通信端末毎のトラヒック量を量順に並べたときの多いほうから順に1番目からM番目までのトラヒック量に基づいてルールを決定することによって、攻撃パケットの効率的なフィルタリングと、フィルタリングによる正規のトラヒックへの影響とのバランスをとったルールを決定することが可能となるので、正規のトラヒックへの影響を抑えつつ、サーバを攻撃から防御することができる。以下、図面を参照し、本発明の実施形態を説明する。図1は、本発明の一実施形態による通信システムの構成を示している。本通信システムは、サーバを保護する機構を備えたオーバーレイネットワークを構成しており、サーバ1、攻撃防御ノード2第1の中継端末、攻撃検知ノード3第2の中継端末、管理ノード4、クライアント5通信端末を備える。図1に示す各装置の位置は、実際の物理ネットワーク上の位置とは必ずしも一致しない。サーバ1は、FTPFileTransferProtocolサーバやWebサーバ等であり、所定のサービスを提供する。サーバ1には、実ネットワークで用いるIPアドレス本明細書では実IPアドレスとすると共に、仮想的なIPアドレス本明細書では仮想IPアドレスとするが割り当てられている。攻撃防御ノード2は、クライアント5からサーバ1宛てに送信されるパケットを攻撃検知ノード3に中継する。また、攻撃防御ノード2は、サーバ1を攻撃から防御するためのパケットフィルタリングを行う。攻撃防御ノード2は、例えばISPInternetServiceProvider毎のネットワークに設置されており、そのネットワーク内のクライアント5から送信されるパケットを中継する。攻撃検知ノード3は、攻撃防御ノード2が中継したパケットをサーバ1に中継する。また、攻撃検知ノード3は、サーバ1に対する攻撃を検知する。管理ノード4は、サーバ1に対する仮想IPアドレスの割り当てと、攻撃防御ノード2および攻撃検知ノード3の状態を管理する。クライアント5は、例えばISP毎のネットワークに所属している。クライアント5がサーバ1の仮想IPアドレス宛てに送信したパケットは、ルーティングプロトコルに従って、クライアント5とネットワークとの接続点の位置に応じた攻撃検知ノード3に転送される。サーバ1と攻撃検知ノード3との間ではVPNVirtualPrivateNetwork接続が確立される。これにより、サーバ1はネットワーク上の仮想的なセグメント仮想セグメントに収容される。サーバ1と攻撃検知ノード3との関係は1対1である、すなわちサーバ1は1つの攻撃検知ノード3のみとVPN接続を確立するため、特定のサーバ1宛てのパケットは、このサーバ1とVPN接続を確立している1つの攻撃検知ノード3を必ず経由する。サーバ1が全ての攻撃検知ノード3とVPN接続を確立する手法を用いてもよいが、上記のようにサーバ1が1つの攻撃検知ノード3のみとVPN接続を確立することによって、VPN接続を確立する処理負荷およびVPN接続の管理負荷が低減される。サーバ1は、攻撃検知ノード3とVPN接続を確立する場合、特定の1つの攻撃検知ノード3に対してVPN接続の要求を行う。このVPN接続の要求と確立はサーバ1と攻撃検知ノード3との間で自律的に行われるため、1つの管理端末が全ての攻撃検知ノード3の状態を管理し、サーバ1からVPN接続の要求を受けて攻撃検知ノード3の情報を応答するような中央集権的な仕組みを必要としない。攻撃防御ノード2と攻撃検知ノード3は、分散ハッシュテーブルDHT:DistributedHashTableを利用したDHTネットワークを構成する。これにより、サーバ1と攻撃検知ノード3との対応関係を管理する負荷が攻撃防御ノード2および攻撃検知ノード3間で分散される。攻撃検知ノード3には、同一のサーバ1に対するパケットが複数の攻撃防御ノード2から到来しうる。攻撃検知ノード3が、どの攻撃防御ノード2からのパケットであるのかを区別してサーバ1へのパケット量を監視し、攻撃を検知することで、攻撃パケットがどの攻撃防御ノード2から到来するのかを知ることができる。攻撃が検知された場合、複数の攻撃防御ノード2のうち攻撃パケットを中継した攻撃防御ノード2において、攻撃対象となったサーバ1の仮想IPアドレス宛てのパケットを削除するパケットフィルタリングを実施することで、サーバ1を攻撃から防御することができる。パケットフィルタリングを実施している攻撃防御ノード2以外の攻撃防御ノード2から到来するパケットは攻撃パケットではないとみなされ、サーバ1へ転送される。本実施形態では、クライアント5からサーバ1の仮想IPアドレス宛てに送信されるパケットは、攻撃防御ノード2および攻撃検知ノード3をこの順に経由してサーバ1に到達する。分散DoS攻撃のように、個々の攻撃クライアントが送信するパケットは少量であるが多数の攻撃クライアントからのパケットが特定のサーバに集中する攻撃を検知するには、攻撃対象となるサーバの近傍で攻撃の検知を行うことが望ましい。本実施形態では、パケットの転送経路上でよりサーバ1に近い攻撃検知ノード3が攻撃の検知を行うことによって、より的確に攻撃を検知することが可能となる。さらに、サーバ1と攻撃検知ノード3との関係が1対1であるため、攻撃検知ノード3が各サーバ1へのトラヒックを一元的に監視することになり、サーバ1に対する攻撃をより的確に検知することができる。また、多数の攻撃クライアントからのパケットがネットワーク上で転送されるとネットワーク資源を浪費するので、攻撃クライアントの近傍でパケットフィルタリングを実施することが望ましい。本実施形態では、パケットの転送経路上でより攻撃元のクライアント5に近い攻撃防御ノード2がパケットのフィルタリングを行うことによって、攻撃元のクライアント5から送信されたパケットの転送によるネットワーク資源の消費をより抑えることが可能となる。図2は、パケットの中継に関する本通信システムの機能構成を示している。サーバ1は、サーバアプリケーション10と、サーバ公開部11とを有する。サーバアプリケーション10は、クライアント5からの要求に応じてサービスを提供する。サーバ公開部11は、サーバ1を収容する仮想セグメントを構築するためのサーバ公開に係る処理を行う。攻撃防御ノード2は、中継部20と、DHT管理部21と、DHT記憶部22と、広告部23とを有する。中継部20は、クライアント5から送信されたパケットを攻撃検知ノード3に中継する。DHT管理部21は、DHTネットワークに参加するための処理を行い、DHT記憶部22に記憶される情報を管理する。DHT記憶部22は、サーバ1とVPN接続を確立している攻撃検知ノード3のIPアドレスとサーバ1の仮想IPアドレスとの対応関係を示す情報を記憶する。より具体的には、DHT記憶部22は、サーバ1とVPN接続を確立している攻撃検知ノード3のIPアドレスと、サーバ1の仮想IPアドレスからSHA1SecureHashAlgorithm1を用いて算出したハッシュ値とを関連付けて記憶する。DHTネットワークでは、この対応関係を示す情報は、サーバ1とVPN接続を確立している攻撃検知ノード3で管理されるとは限らず、DHTネットワークを構成する攻撃防御ノード2と攻撃検知ノード3のいずれかにおいて管理される。広告部23は、サーバ1の仮想IPアドレス宛てのパケットが攻撃防御ノード2に届くように、ルーティングプロトコルの一種であるOSPFOpenShortestPathFirstやBGPBorderGatewayProtocolに従って、仮想IPアドレス宛ての経路に係る経路情報をネットワーク上に広告する。クライアント5がサーバ1の仮想IPアドレス宛てのパケットを送信すると、この経路情報に従ってネットワーク上のルータが転送を行うことにより、クライアント5に最も近い攻撃防御ノード2にパケットが到着する。つまり、クライアント5が送信したパケットは、クライアント5とネットワークとの接続点の位置に応じた攻撃防御ノード2に到着する。攻撃検知ノード3は、中継部30と、サーバ公開部31と、DHT管理部32と、DHT記憶部33と、広告部34とを有する。中継部30は、攻撃防御ノード2から送信されたパケットをサーバ1に中継する。サーバ公開部31は、サーバ1を収容する仮想セグメントを構築するためのサーバ公開に係る処理を行う。DHT管理部32は、DHTネットワークに参加するための処理を行い、DHT記憶部33に記憶される情報を管理する。DHT記憶部33はDHT記憶部22と同様に、サーバ1とVPN接続を確立している攻撃検知ノード3のIPアドレスと、サーバ1の仮想IPアドレスからSHA1を用いて算出したハッシュ値とを関連付けて記憶する。広告部34は、OSPFに従って、エニーキャストアドレス宛ての経路に係る経路情報をネットワーク上に広告する。サーバ1が、サーバ公開に係るVPN接続を行う際にエニーキャストアドレス宛てに攻撃検知ノード3の検索要求を行うと、サーバ1に最も近い攻撃検知ノード3から応答が返される。サーバ記憶部35は、サーバ1の仮想IPアドレスと実IPアドレスとを関連付けて記憶する。管理ノード4は、仮想IPアドレス記憶部40と、アドレス管理部41と、設定情報記憶部42と、ノード管理部43と、ノードリスト記憶部44とを有する。仮想IPアドレス記憶部40は、サーバ1に割り当てられる仮想IPアドレスを記憶する。アドレス管理部41は、サーバ1に対する仮想IPアドレスの割り当てを管理する。設定情報記憶部42は、攻撃防御ノード2に通知する仮想IPアドレスの範囲や、攻撃検知ノード3に通知するエニーキャストアドレスの範囲等を含む設定情報を記憶する。各攻撃防御ノード2には共通の仮想IPアドレス範囲が通知される。また、各攻撃検知ノード3には共通のエニーキャストアドレス範囲が通知される。ノード管理部43は、DHTネットワークを構成する攻撃防御ノード2および攻撃検知ノード3の情報を管理する。ノードリスト記憶部44は、DHTネットワークを構成する攻撃防御ノード2および攻撃検知ノード3の一覧であるノードリストを記憶する。クライアント5はクライアントアプリケーション50を有する。クライアントアプリケーション50はサーバ1に対してサービスの要求を行う。次に、攻撃防御ノード2と攻撃検知ノード3によるDHTネットワークの構築と管理について説明する。DHTネットワークにおいては、ネットワークを構成するノードの加入と離脱が生じる。ノードが加入する場合、既にDHTネットワークを構成しているいずれかのノードに対して加入処理を行うことで、DHTネットワークへの加入を行う。一方、DHTネットワークからノードが離脱する場合、ルーティングテーブルの再構築が行われ、残りのノードにより通信が継続される。このとき、離脱したノードが所持していた情報はDHTネットワーク上で隣接するノードが同期を取るなどして保持される。なお、最初にDHTネットワークを構成するノードが起動する場合は、加入処理を行う対象のノードが存在しないため、初期ノード起動処理が行われる。以下、DHTネットワークを構築するアルゴリズムの一種であるChordを実装したプログラムを例に、それぞれの具体的な手法を説明する。図3は、DHTネットワークを構成する最初のノードである初期ノード攻撃防御ノード2または攻撃検知ノード3が加入する場合のシーケンスを示している。初期ノードにおいて、DHT管理部2132は、ノードリストの取得要求を示すノードリスト要求を管理ノード4へ送信するステップS100。なお、管理ノード4のIPアドレスは既知であるものとする。管理ノード4においてノード管理部43はノードリスト要求を受信し、ノードリスト記憶部44内のノードリストにノードのIPアドレスが登録されているか否かを判定するステップS110。最初のノードが加入する場合、ノードリストにノードのIPアドレスが登録されていないため、管理ノード4は初期ノード起動処理が必要であると判定し、初期ノード起動処理の要求を示す初期ノード起動要求を、ノードリスト要求の送信元であるノードへ送信するステップS120。初期ノード起動要求には、設定情報記憶部42内の設定情報に基づく仮想IPアドレスの範囲とエニーキャストアドレスの範囲が含まれる。初期ノードにおいて、DHT管理部2132は、初期ノード起動要求を受信し、初期ノード起動処理を実行するステップS130。具体的には、次に示すようなブートストラップノードの起動コマンドを実行する。startdhashrootdhashajsurelcsmitedu10000p10000初期ノード起動処理の実行により、DHT記憶部2233には分散ハッシュテーブルが作成される。前述したように、このテーブルの構成要素は、サーバ1とVPN接続を確立している攻撃検知ノード3のIPアドレスと、サーバ1の仮想IPアドレスからSHA1を用いて算出したハッシュ値とのペアである。初期ノード起動処理が完了した時点では、テーブルにはこれらの情報は格納されていない。また、初期ノード起動処理が完了した時点では、DHTネットワークの全てのノード1個の情報を初期ノードが単体で管理している状態となる。初期ノード起動処理の実行後、DHT管理部2132は、初期ノードがDHTネットワークに加入したことを示すノード加入通知を管理ノード4へ送信することにより自身のIPアドレスを通知するステップS140。管理ノード4においてノード管理部43はノード加入通知を受信し、ノード加入通知により通知されたIPアドレスをノードリスト記憶部44内のノードリストに追加するステップS150。初期ノードが攻撃防御ノード2である場合、初期ノード起動処理の実行後、攻撃防御ノード2の広告部23は、初期ノード起動要求によって通知された範囲の仮想IPアドレス宛ての経路に係る経路情報をネットワーク上に広告する。また、初期ノードが攻撃検知ノード3である場合、初期ノード起動処理の実行後、攻撃検知ノード3の広告部34は、初期ノード起動要求によって通知された範囲のエニーキャストアドレス宛ての経路に係る経路情報をネットワーク上に広告するステップS160。なお、管理ノード4が初期ノードからノードリスト要求を受信してからノード加入通知を受信するまでの間に他のノードからノードリスト要求を受信した場合、ノードリスト要求の再送を示すメッセージが他のノードへ送信される。このため、初期ノードによるDHTネットワークが構築されるまで、他のノードからのノードリスト要求に対する処理は実行されない。図4は、1以上のノードによりDHTネットワークが構成されている場合に新たなノード攻撃防御ノード2または攻撃検知ノード3が加入する場合のシーケンスを示している。新たに加入するノードにおいて、DHT管理部2132は、ノードリストの取得要求を示すノードリスト要求を管理ノード4へ送信するステップS200。なお、管理ノード4のIPアドレスは既知であるものとする。管理ノード4においてノード管理部43はノードリスト要求を受信し、ノードリスト記憶部44内のノードリストにノードのIPアドレスが登録されているか否かを判定するステップS210。既に他のノードが加入している場合、ノードリストにノードのIPアドレスが登録されているため、管理ノード4は、ノードリスト要求の送信元であるノードへノードリストを送信するステップS220。このとき、設定情報記憶部42内の設定情報に基づく仮想IPアドレスの範囲とエニーキャストアドレスの範囲がノードリストに付加される。新たに加入するノードにおいて、DHT管理部2132は、ノードリストを受信し、ノードリストに記載されているノードを対象としてノード加入処理を実行するステップS230。具体的には、次に示すような既存ノードへの加入のコマンドを実行する。startdhashrootdhashbjsurelcsmitedu10000ノード加入処理の実行により、DHT記憶部2233には分散ハッシュテーブルが作成される。ノード加入処理では、ノードリストに記載されたIPアドレスを有するノードと通信が行われ、DHTネットワークに加入するための設定が行われる。ノード加入処理の実行後、DHT管理部2132は、新たにノードがDHTネットワークに加入したことを示すノード加入通知を管理ノード4へ送信することにより自身のIPアドレスを通知するステップS240。管理ノード4においてノード管理部43はノード加入通知を受信し、ノード加入通知により通知されたIPアドレスをノードリスト記憶部44内のノードリストに追加するステップS250。新たに加入するノードが攻撃防御ノード2である場合、ノード加入処理の実行後、攻撃防御ノード2の広告部23は、管理ノード4から通知された範囲の仮想IPアドレス宛ての経路に係る経路情報をネットワーク上に広告する。また、新たに加入するノードが攻撃検知ノード3である場合、ノード加入処理の実行後、攻撃検知ノード3の広告部34は、管理ノード4から通知された範囲のエニーキャストアドレス宛ての経路に係る経路情報をネットワーク上に広告するステップS260。以下、ステップS230において、DHTネットワークに加入する処理の詳細を説明する。DHTは、管理対象の情報のハッシュ値以下、Keyとすると、管理対象の情報以下、Valueとするとのペアを格納する分散ハッシュテーブルを複数のノードに分散させることによって、情報を効率的に管理する手法である。本実施形態では、サーバ1の仮想IPアドレスがKeyに該当し、攻撃検知ノード3のIPアドレスがValueに該当する。本実施形態では、DHTネットワークを構成する攻撃防御ノード2および攻撃検知ノード3が、自身のIPアドレスに基づいて、管理対象となる攻撃検知ノード3のIPアドレスValueを管理する。本実施形態でDHTネットワークの実装アルゴリズムの一例として用いるChordでは、DHTネットワークを構成するノードが各ノードのIDに従って配置される。各ノードに割り当てられるIDは、具体的にはノード毎のIPアドレスからSHA1を用いて算出したハッシュ値である。Chordでは2160のハッシュ空間が用いられ、各ノードは円周上の点として定義される。図14は、簡単のためハッシュ空間を24とした場合のIDの割り当てを示している。0から15までの各IDを有するノードが配置されている。Chordでは、DHTネットワークを構成する各ノードが、自身のノードIDから隣接するノードIDまでの間に位置するIDに対応するValueを管理する。図14において、ノードIDが0、2、6、9、11、13、14のノードがDHTネットワークに加入している場合、ノードIDが0のノード0は、ノードIDが15と0に対応するKeyとValueのペアを管理する。Chordでは、各ノードはSuccessor、Predecessor、Fingertableと呼ばれる3種類のルーティングテーブルを保持する。これらのルーティングテーブルは、各ノードがDHT記憶部2233の分散ハッシュテーブルに保持するKeyとValueのペアサーバ1の仮想IPアドレスと転送ノードのIPアドレスのペアとは異なる。各ルーティングテーブルはDHT記憶部2233に保持されるものとする。Successorは、ノードIDが大きくなる方向に見て最近傍に位置するノードのIPアドレスを保持するルーティングテーブルであり、Predecessorは、ノードIDが小さくなる方向に見て最近傍に位置するノードのIPアドレスを保持するルーティングテーブルである。Fingertableは、2mのハッシュ空間において、以下の式に一致するIPアドレスを保持するルーティングテーブルである。ノードのIPアドレス=IPadressnext、ただし、Zmod2m、i0~m上記の式のnextは、ハッシュ空間上でZから右回りつまりノードIDが大きくなる方向に見て次に存在するノードのIDを返す関数である。IPadressXはIDがXのノードのIPアドレスを返す関数である。DHTネットワークに新たなノードが加入することは、円周上のノードが存在していない点の位置にノードが加わることを意味する。以下では、ID12のノードノード12とID18のノードノード18が存在しているDHTネットワークにID15のノードノード15が加入する場合を例として加入の手順を説明する。ノード15は、自身のIPアドレスからハッシュ値であるIDを算出する。続いて、ノード15は、ノードリストに記載されているノードに対して、自身のIDを保持の対象としているノードのIPアドレスを要求する。要求を受けたノードは、ノード15のIDを保持していれば応答し、保持していなければ他のノードに要求を行う。この結果、ノード15はノード18のIPアドレスを取得する。続いて、ノード15はノード18にjoinメッセージを送信し、Successorにノード18のIPアドレスを記録する。さらに、ノード15はノード18から、Predecessorに保持すべきノード12のIPアドレスを通知され、Predecessorにノード12のIPアドレスを記録する。続いて、ノード15は、それまでノード18がFingertableに保持していたIPアドレスのうち、ノード15が管理すべき部分に該当するIPアドレスをノード18から受信し、Fingertableに記録する。また、ノード15は、それまでノード18がDHT記憶部2233の分散ハッシュテーブルに保持していたKeyとValueのペアのうち、ノード15が管理すべき部分に該当するKeyとValueのペアをノード18から受信し、DHT記憶部2233に記録する。ノード15は、ノード12に自身の加入を通知し、ノード12は、ノード15からの通知に基づいて、自身が保持しているSuccessorに記録されていたノード18のIPアドレスをノード15のIPアドレスに変更する。図5は、DHTネットワークに加入しているノード攻撃防御ノード2または攻撃検知ノード3がDHTネットワークから脱退する場合のシーケンスを示している。DHTネットワークから脱退するノードにおいて、DHT管理部2132はノード脱退処理を実行するステップS300。続いて、DHT管理部2132は、DHTネットワークからの脱退を示すノード脱退通知を管理ノード4へ送信することにより自身のIPアドレスを通知するステップS310。管理ノード4においてノード管理部43はノード脱退通知を受信し、ノード脱退通知により通知されたIPアドレスをノードリスト記憶部44内のノードリストから削除するステップS320。上記のようにしてノードが脱退した場合、ハッシュ空間上でこのノードに隣接するノードにおいて、Successor、Predecessor、Fingertableがそれぞれ更新される。このとき、脱退したノードが保持していた情報を引き継ぐための処理として、DHTでは近傍のノードに自身が保持するデータのコピーを配置するなどして情報の欠損を防いでいる。次に、サーバ1を収容する仮想セグメントを構築するためのサーバ公開について説明する。サーバ1は予め管理ノード4から仮想IPアドレスを取得する。管理ノード4においてアドレス管理部41は予め仮想IPアドレスを生成し、仮想IPアドレス記憶部40に保存する。サーバ1のサーバ公開部11は管理ノード4にアクセスし、仮想IPアドレスの割り当てに必要な情報の登録を行う。管理ノード4のアドレス管理部41は、仮想IPアドレス記憶部40から仮想IPアドレスを選択し、仮想IPアドレスをサーバ1に通知する。複数のサーバ1に対して同一の仮想IPアドレスが割り当てられないよう、アドレス管理部41は仮想IPアドレスの割り当てを管理する。サーバ1に対する仮想IPアドレスの通知は公開鍵証明書の発行により行われるが、詳細な説明を省略する。この公開鍵証明書はサーバ1が攻撃検知ノード3にアクセスする際に使用されるが、本実施形態では、公開鍵証明書による公知の通信方法に係る説明を省略する。図6は、仮想IPアドレスを取得したサーバ1の公開開始時のシーケンスを示している。サーバ1は、攻撃検知ノード3が使用するエニーキャストアドレスを予め知っているものとする。サーバ1のサーバ公開部11は、エニーキャストアドレス宛てに攻撃検知ノード3の接続要求を送信するステップS400。この接続要求はサーバ1に最も近い攻撃検知ノード3に到着する。攻撃検知ノード3のサーバ公開部31はサーバ1からの接続要求を受信し、自身のIPアドレスを通知する応答をサーバ1へ送信するステップS410。サーバ1のサーバ公開部11は攻撃検知ノード3からの応答を受信し、その応答によって通知されたIPアドレス宛てに、VPN接続の要求を示すVPN接続要求を送信するステップS420。このVPN接続要求によって、サーバ1の仮想IPアドレスおよび実IPアドレスが攻撃検知ノード3に通知される。この後、サーバ1と攻撃検知ノード3の双方においてVPN接続のための各種設定が行われるが、詳細な説明を省略する。攻撃検知ノード3のサーバ公開部31は、サーバ1から通知された仮想IPアドレスをDHT管理部32に通知する。DHT管理部32は仮想IPアドレスのハッシュ値を算出し、攻撃検知ノード3のIPアドレスとハッシュ値とを、DHTネットワークを構成する攻撃防御ノード2または攻撃検知ノード3のDHT記憶部2233内の分散ハッシュテーブルに登録する処理を行うステップS430。具体的には、以下のようなputコマンドを実行する。なお、はハッシュ値を示し、は攻撃検知ノードのIPアドレスを示す。putまた、DHT管理部32は、サーバ1の仮想IPアドレスと実IPアドレスとを組にしてサーバ記憶部35に登録するステップS440。以下、ステップS430において攻撃検知ノード3のIPアドレスとサーバ1の仮想IPアドレスのハッシュ値のペアを分散ハッシュテーブルに登録する処理の詳細を説明する。DHT管理部32は、サーバ1の仮想IPアドレスのハッシュ値をKeyとして管理すべきノードを検索する処理を行う。図14に示すDHTネットワークにおいて、ノード0が検索を行う例を示す。サーバ1の仮想IPアドレスのハッシュ値が12であるとすると、DHT管理部32は、前述したnext関数によりnext13であるため、目的の情報を管理すべきノードがノード13であることを求める。これに基づき、DHT管理部32は、攻撃検知ノード3のIPアドレスとサーバ1の仮想IPアドレスのハッシュ値のペアを含み、ノード13の検索を依頼するメッセージを生成し、中継部30に渡す。前述したFingertableの定義より、ノード0のFingertableに保持されるノードIDは、2、6i2z4、9となる。ノード13のノードIDである13に関して、231324であることから、ノード0は、i3z8のときのノードIDに対応するノード9にノード13の検索を依頼する。すなわち、中継部30はノード9宛てに上記のメッセージを送信する。ノード9のFingertableに保持されるノードIDは、11、13、2であることから、ノード9はノード13の情報を保持している。したがって、ノード9からノード13に、ノード0からのメッセージが転送される。ノード13において中継部2030はメッセージを受信し、DHT管理部2132に渡す。DHT管理部21は、メッセージに含まれる攻撃検知ノード3のIPアドレスとサーバ1の仮想IPアドレスのハッシュ値をDHT記憶部2233に設定する。このように、DHTネットワークでは、はじめに大まかな検索を行い、検索対象に近づくに従って、徐々に細かい検索を行うことで、DHTネットワークを構成しているノードから隣接するノードを順番に辿る場合よりも効率的な検索を実現している。上記のようにして、攻撃検知ノード3のIPアドレスとサーバ1の仮想IPアドレスのハッシュ値のペアが、DHTネットワークを構成する攻撃防御ノード2または攻撃検知ノード3によって管理されるようになる。図7は、サーバ1の公開停止時のシーケンスを示している。攻撃検知ノード3のサーバ公開部31は、サーバ1からの明示的なVPN接続の解除通知あるいは障害等によるVPN接続の解除を検知することにより、VPN接続が切断されたことを検知し、DHT管理部32に通知するステップS500。DHT管理部32は、サーバ公開部31から通知を受けると、切断されたVPN接続の接続相手であるサーバ1の仮想IPアドレスと自身のIPアドレスのペアを分散ハッシュテーブルから削除するため、VPN接続を解除したサーバ1の仮想IPアドレスのハッシュ値をKeyとして管理しているノードを検索する処理を行うステップS510。このとき、ステップS430の処理と同様にして検索が行われ、所望のノードにメッセージが転送される。メッセージを受信したノードにおいてDHT管理部2133は、メッセージに含まれるハッシュ値と一致するハッシュ値およびそれと関連付けられている攻撃検知ノード3のIPアドレスを分散ハッシュテーブルから削除する。次に、サーバ1とクライアント5との通信について説明する。図8は、クライアント5がサーバ1と通信を行う際のシーケンスを示している。クライアント5は、例えばDNSサーバにサーバ1の名前解決を依頼し、その結果としてDNSサーバからサーバ1のIPアドレスを通知されることにより、サーバ1の仮想IPアドレスIPvirtualを取得することが可能である。クライアント5のクライアントアプリケーション50は、クライアント5IPclientを送信元とし、サーバ1IPvirtualを宛先とするパケットを送信するステップS600。攻撃防御ノード2がIPvirtual宛ての経路を広告していることにより、クライアント5から送信されたパケットはクライアント5に最も近い攻撃防御ノード2に到着する。攻撃防御ノード2の中継部20は、クライアント5からのパケットを受信し、受信したパケットに含まれるサーバ1の仮想IPアドレスIPvirtualをDHT管理部21に通知する。DHT管理部21は、この仮想IPアドレスIPvirtualのハッシュ値を算出し、このハッシュ値をKeyとして管理しているノードを検索する処理を行うステップS610。このとき、ステップS430の処理と同様にして検索が行われ、所望のノードにメッセージが転送される。メッセージを受信したノードにおいてDHT管理部2133は、メッセージに含まれるハッシュ値と一致するハッシュ値を分散ハッシュテーブルから検索し、一致したハッシュ値と関連付けられている攻撃検知ノード3のIPアドレスを取得する。DHT管理部2133は、取得したIPアドレスを通知するための応答メッセージを生成し、中継部2030に渡す。中継部2030は、検索を要求した攻撃防御ノード2へ応答メッセージを送信する。検索を要求した攻撃防御ノード2において中継部20はこの応答メッセージを受信し、所望の攻撃検知ノード3のIPアドレスを取得する。中継部20は、クライアント5から受信したパケットをカプセル化するステップS620。このカプセル化では、クライアント5からのパケットに対してIPヘッダが付加される。このIPヘッダには、送信元のIPアドレスとして攻撃防御ノード2のIPアドレスRcが記録され、宛先のIPアドレスとして攻撃検知ノード3のIPアドレスRsが記録されている。したがって、クライアント5IPclientを送信元としサーバ1IPvirtualを宛先とするパケットが、カプセル化によって、攻撃防御ノード2Rcを送信元とし攻撃検知ノード3Rsを宛先とするパケットに変換される。中継部20は、カプセル化したパケットを攻撃検知ノード3へ送信するステップS630。攻撃検知ノード3の中継部30は、攻撃防御ノード2からのパケットを受信し、カプセル解除するステップS640。このカプセル解除では、攻撃防御ノード2でパケットに付加されたIPヘッダが除去される。したがって、攻撃防御ノード2Rcを送信元とし攻撃検知ノード3Rsを宛先とするパケットが、カプセル解除によって、クライアント5IPclientを送信元としサーバ1IPvirtualを宛先とするパケットに変換される。続いて、中継部30は、パケットに含まれるサーバ1の仮想IPアドレスIPvirtualをキーにしてサーバ記憶部35内の情報を検索し、サーバ1の仮想IPアドレスIPvirtualに対応する実IPアドレスIPrealを取得するステップS650。さらに、中継部30は、ステップS640でカプセル解除したパケットをカプセル化するステップS660。このカプセル化では、送信元のIPアドレスとして攻撃検知ノード3のIPアドレスRsが記録され、宛先のIPアドレスとしてサーバ1の実IPアドレスIPrealが記録されたIPヘッダが付加される。したがって、カプセル解除されたパケットが、カプセル化によって、攻撃検知ノード3Rsを送信元としサーバ1IPrealを宛先とするパケットに変換される。中継部30は、カプセル化したパケットをサーバ1へ送信するステップS670。サーバ1のサーバアプリケーション10は攻撃検知ノード3からのパケットを受信し、適宜処理するステップS680。なお、受信されたパケットは、ミドルウェアによってカプセル解除される図示せず。サーバアプリケーション10は、クライアント5への応答パケットを攻撃検知ノード3へ送信するステップS690。この応答パケットは、サーバ1IPvirtualを送信元としクライアント5IPclientを宛先とするパケットに対して、カプセル化により、サーバ1IPvirtualを送信元とし攻撃検知ノード3Rsを宛先とするIPヘッダが付加されたものである。攻撃検知ノード3の中継部30はサーバ1からのパケットを受信し、カプセル解除するステップS700。このカプセル解除によって、サーバ1からのパケットは、サーバ1IPvirtualを送信元としクライアント5IPclientを宛先とするパケットに変換される。中継部30は、カプセル解除したパケットをクライアント5へ送信するステップS710。上述したように、サーバ1は1つの攻撃検知ノード3のみとVPN接続を確立するため、サーバが全ての中継端末とVPN接続を確立する手法を用いる場合よりもVPN接続を確立する処理負荷およびVPN接続の管理負荷を低減することができる。また、VPN接続の要求と確立がサーバ1と攻撃検知ノード3との間で自律的に行われるため、1つの管理端末が全ての攻撃検知ノード3の状態を管理し、サーバ1からVPN接続の要求を受けて攻撃検知ノード3の情報を応答するような中央集権的な仕組みを必要としない。また、攻撃防御ノード2と攻撃検知ノード3が、分散ハッシュテーブルを利用したDHTネットワークを構成することによって、サーバ1と攻撃検知ノード3との対応関係を管理する負荷を攻撃防御ノード2と攻撃検知ノード3間で分散することができる。次に、本実施形態におけるサーバ1に対する攻撃の検知と防御について説明する。サーバ1宛てのパケットは、そのサーバ1を収容する仮想セグメントを構成する攻撃検知ノード3によってサーバ1へ転送されるので、攻撃検知ノード3においてサーバ1へのトラヒックを把握することが可能となる。図9は、攻撃の検知と防御に関する攻撃防御ノード2と攻撃検知ノード3の機能構成を示している。攻撃防御ノード2は、前述した中継部20を有する。中継部20は、パケットの送信および受信を行う送受信部20aと、攻撃検知ノード3から通知されるフィルタリングルールを中継部20に設定するフィルタリング設定部20bと、攻撃検知ノード3から通知されるフィルタリングルールに従ってパケットを削除するフィルタリング部20cとを有する。攻撃検知ノード3は、前述した中継部30と、ログ記憶部36と、攻撃検知部37と、ルール決定部38とを有する。中継部30は、パケットの送信および受信を行う送受信部30aと、サーバ1に中継したパケットの情報をログに記録するログ記録部30bとを有する。ログ記憶部36は、中継部30がサーバ1に中継したパケットの情報を含むログを記憶する。攻撃検知部37は、ログ記憶部36に記憶されているログに基づいて攻撃を検知する。ルール決定部38は、攻撃検知部37によって攻撃が検知された場合に、その攻撃の防御を行うためのフィルタリングルールを決定する。図10は、サーバ1に対する攻撃の検知と防御時のシーケンスを示している。攻撃検知ノード3においてログ記録部30bは、送受信部30aが攻撃防御ノード2からのパケットをサーバ1に中継した際に、そのパケットからIPアドレス等の情報を取得し、ログ記憶部36内のログに追加する。図11は、1パケット分のログの構造を示している。攻撃防御ノード2でカプセル化されたパケットに付加されているIPヘッダの情報と、カプセル解除したパケットのIPヘッダから、パケットを送信したクライアント5のIPアドレス、パケットの宛先であるサーバ1の仮想IPアドレス、パケットを中継した攻撃防御ノード2のIPアドレスを取得することができる。これらと攻撃検知ノード3のIPアドレスおよびパケットの受信時刻がログに記録される。攻撃検知部37はログ記憶部36内のログに基づいて、攻撃防御ノード2からサーバ1へのトラヒックに関して、攻撃が発生したか否かの判定を行うステップS800。攻撃検知部37によって攻撃が発生したと判定された場合、すなわち攻撃が検知された場合、ルール決定部38はフィルタリングルールを決定すると共に、フィルタリングを行う攻撃防御ノード2を決定する。ルール決定部38は、決定したフィルタリングルールを通知するルール情報を生成し、フィルタリングを行う攻撃防御ノード2を指定する情報と共にルール情報を中継部30に通知するステップS810。中継部30の送受信部30aは、ルール決定部38によって指定された攻撃防御ノード2へルール情報を送信するステップS820。攻撃防御ノード2において、送受信部20aは攻撃検知ノード3からのルール情報を受信する。フィルタリング設定部20bは、ルール情報が示すフィルタリングルールに従って、特定の条件を満たすパケットを削除するようにフィルタリング部20cにフィルタリングの設定を行うステップS820。これ以降、フィルタリング部20cは、設定された条件に従って、クライアント5から受信したパケットを削除する。送受信部20aは、削除されたパケットを送信しない。次に、ステップS800において攻撃を判定する処理の詳細を説明する。図12は、ステップS800における処理の詳細を示している。まず、攻撃検知部37は、ログ記憶部36内のログに記録されているサーバ1の仮想IPアドレスの数と同数のカウンタを各サーバ1の仮想IPアドレスと関連付け、各カウンタのカウント値が0となるように各カウンタをリセットするステップS900。このカウンタのカウント値は各サーバ1へのトラヒック量を示す。以下の説明では、説明を単純化するため、パケット数をトラヒック量とするが、パケットのデータ量バイト数等をトラヒック量としてもよい。続いて、攻撃検知部37は、ログ記憶部36内のログに新たにパケットの情報が追加されたか否かを判定することにより、攻撃検知ノード3で新たにパケットが受信されたか否かを判定するステップS905。ログ記憶部36内のログに新たにパケットの情報が追加されていない場合、すなわち攻撃検知ノード3で新たにパケットが受信されていない場合、処理はステップS915に進む。また、ログ記憶部36内のログに新たにパケットの情報が追加された場合、すなわち攻撃検知ノード3で新たにパケットが受信された場合、攻撃検知部37は、ログにおいて新たに追加されたパケットの情報からサーバ1の仮想IPアドレスを抽出し、その仮想IPアドレスと関連付けられているカウンタのカウント値を1増加させるステップS910。このカウンタのカウント値はサーバ1宛てのパケットの数を示す。続いて、攻撃検知部37は、ステップS900でカウンタをリセットしてから所定時間例えば1秒が経過したか否かを判定するステップS915。所定時間が経過していない場合、処理はステップS905に戻る。また、所定時間が経過した場合、攻撃検知部37は、サーバ1毎のカウンタのカウント値が所定値を超えているか否かを判定するステップS920。この所定値は、サーバ1の能力に応じた値であり、サーバ1毎に異なる値であってもよい。1以上のサーバ1のカウンタのカウント値が所定値を超えている場合、攻撃検知部37は、攻撃が発生したと判断し、攻撃が発生しているサーバ1の仮想IPアドレスをルール決定部38に通知するステップS925。また、全てのサーバ1のカウンタのカウント値が所定値以下である場合、攻撃検知部37は、攻撃が発生していないと判断するステップS930。この場合、ルール決定部38にサーバ1の仮想IPアドレスは通知されない。攻撃が発生したと判断された場合、攻撃が発生していないと判断された場合のいずれであっても、処理はステップS900に戻る。上記の処理により、サーバ1への単位時間当たりのトラヒック量この例ではパケット数に相当が所定値を超えると攻撃が検知される。上記の処理は一例であり、攻撃を検知できる何らかの処理であればよい。次に、ステップS810においてフィルタリングルールを決定し、ステップS820においてフィルタリングルールを通知する処理の詳細を説明する。図13は、ステップS810,S820における処理の詳細を示している。図12のステップS925において攻撃が発生したと判断された場合、図13に示す処理が行われる。図13に示す処理の概要を説明する。各攻撃防御ノード2で個別に攻撃者のクライアント5のIPアドレスをフィルタリング対象棄却対象に指定するフィルタリングが攻撃の防御に有効な場合には、そのようなフィルタリングルールが生成される。一方で、攻撃防御ノード2でフィルタリング対象棄却対象として個別に指定可能なIPアドレスの数には限界があるため、攻撃者のクライアント5の数が多く、上記のフィルタリングが有効でない場合には、攻撃者のクライアント5からのパケットを中継する攻撃防御ノード2で全てのパケットをフィルタリング対象棄却対象に指定するフィルタリングルールが生成される。以下、処理の詳細を説明する。まず、ルール決定部38は、ログ記憶部36内のログに記録されている、攻撃検知ノード3で受信された各パケットの情報のうち、パケットの宛先として記録されているIPアドレスが、攻撃の検知されたサーバ1の仮想IPアドレス攻撃検知部37から通知された仮想IPアドレスと一致する情報を抽出するステップS1000。続いて、ルール決定部38は、ステップS1000で抽出した情報に基づいて、送信元のクライアント5毎にパケット数を算出するステップS1005。ステップS1005で算出されたクライアント5毎のパケット数は、各クライアント5から攻撃検知ノード3に到達する通信のトラヒック量に対応する。ステップS1005で区別されるクライアント5の数は通常2以上であるが、攻撃パケットの送信を行ったクライアント5が1台だけの場合も対応可能である。また、ステップS1005で算出されたクライアント5毎のパケット数はクライアント5のIPアドレスと関連付けられて攻撃検知ノード3内のログ記憶部36に保持される。続いて、ルール決定部38は、ステップS1005で算出したクライアント5毎のパケット数を数の多い順または数の少ない順に並べたときの多い方から順に1番目からmm:自然数番目までのパケット数の合計Tcを算出するステップS1010。さらに、ルール決定部38は、ステップS1005で算出したクライアント5毎のパケット数の全ての合計Taを算出するステップS1015。ステップS1015で算出した合計Taは、各クライアント5から攻撃検知ノード3に到達する通信のトラヒック量の合計に対応する。続いて、ルール決定部38は、ステップS1015で算出した合計TaからステップS1010で算出した合計Tcを減算した値Ta-Tcと所定の閾値Thとを比較し、値Ta-Tcが閾値Thを上回っているか否かを判定するステップS1020。本実施形態の閾値Thは、各攻撃検知ノード3がフィルタリング対象棄却対象として個別に指定可能なIPアドレスの数と同じ数に設定される。本実施形態では、各攻撃検知ノード3がフィルタリング対象棄却対象として個別に指定可能なIPアドレスの数が攻撃検知ノード3間で等しいすなわち各攻撃検知ノード3のフィルタリング能力が等しいことを想定しているが、この数が攻撃検知ノード3間で異なる場合には、例えば各攻撃検知ノード3が個別に指定可能なIPアドレスの数の中で最小の数を閾値Thに設定してもよい。値Ta-Tcが閾値Th以下である場合、ルール決定部38は、クライアント5毎のパケット数を数の多い順または数の少ない順に並べたときの多い方から順に1番目からmm:自然数番目までのパケット数に係るm台のクライアント5からのパケットを棄却するフィルタリングルールを示すルール情報を生成するステップS1065。このルール情報には、m台のクライアント5のIPアドレスが含まれる。また、ルール決定部38は、ステップS1000で抽出した情報のうち、パケットの送信元として記録されているIPアドレスが上記のm台のクライアントのいずれかのIPアドレスと一致する情報を選択し、その情報から、パケットを中継した攻撃防御ノード2のIPアドレスを抽出するステップS1070。抽出されたIPアドレスを有する攻撃防御ノード2が、フィルタリングを行う攻撃防御ノード2となる。ルール決定部38は、ステップS1065で生成したルール情報と、ステップS1070で抽出した攻撃防御ノード2のIPアドレスとを中継部30へ出力する。中継部30の送受信部30aは、ルール決定部38から出力されたIPアドレスを有する攻撃防御ノード2へ、ルール決定部38から出力されたルール情報を送信するステップS1075。このルール情報を受信した攻撃防御ノード2のフィルタリング設定部20bは、ルール情報が示すクライアント5のIPアドレスを送信元とするパケットを削除するようにフィルタリング部20cにフィルタリングの設定を行う。フィルタリング部20cは、送受信部20aが受信したパケットの送信元であるクライアント5のIPアドレスが、設定されたIPアドレスと一致した場合に、受信したパケットを削除する。また、ステップS1020において、値Ta-Tcが閾値Thを上回っている場合、ルール決定部38は、ステップS1000で抽出した情報に基づいて、パケットを中継した攻撃防御ノード2毎にパケット数を算出するステップS1025。ステップS1025で算出した攻撃防御ノード2毎のパケット数は、クライアント5から各攻撃防御ノード2に到達する通信のトラヒック量に対応する。ステップS1025で区別される攻撃防御ノード2の数は通常2以上であるが、攻撃パケットの中継を行った攻撃防御ノード2が1台だけの場合も対応可能である。また、ステップS1025で算出された攻撃防御ノード2毎のパケット数は攻撃防御ノード2のIPアドレスと関連付けられて攻撃検知ノード3内のログ記憶部36に保持される。続いて、ルール決定部38は、処理用の変数nを初期化値に1を設定するステップS1030。さらに、ルール決定部38は、ステップS1025で算出した攻撃防御ノード2毎のパケット数を数の多い順または数の少ない順に並べたときの多い方から順に1番目からn番目までのパケット数の合計Tnを算出するステップS1035。続いて、ルール決定部38は、ステップS1015で算出した合計TaからステップS1035で算出した合計Tnを減算した値Ta-Tnと所定の閾値Thとを比較し、値Ta-Tnが閾値Thを上回っているか否かを判定するステップS1040。値Ta-Tnが閾値Thを上回っている場合、ルール決定部38は変数nの値に1を加算するステップS1045。続いて、処理はステップS1035に戻る。また、値Ta-Tnが閾値Th以下である場合、ルール決定部38は、攻撃防御ノード2毎のパケット数を数の多い順または数の少ない順に並べたときの多い方から順に1番目からn番目までのパケット数に係るn台の攻撃防御ノード2で受信されるパケットのうち、攻撃が検知されたサーバ1の仮想IPアドレス攻撃検知部37から通知された仮想IPアドレス宛ての全てのパケットを棄却するフィルタリングルールを示すルール情報を生成するステップS1050。このルール情報には、攻撃が検知されたサーバ1の仮想IPアドレスが含まれる。また、ルール決定部38は、ログ記憶部36に格納されている、ステップS1025でパケット数を算出したn台の攻撃防御ノード2のIPアドレスを選択するステップS1055。選択されたIPアドレスを有する攻撃防御ノード2が、フィルタリングを行う攻撃防御ノード2となる。ルール決定部38は、ステップS1050で生成したルール情報と、ステップS1055で抽出した攻撃防御ノード2のIPアドレスとを中継部30へ出力する。中継部30の送受信部30aは、ルール決定部38から出力されたIPアドレスを有する攻撃防御ノード2へ、ルール決定部38から出力されたルール情報を送信するステップS1060。このルール情報を受信した攻撃防御ノード2のフィルタリング設定部20bは、ルール情報が示す仮想IPアドレス宛ての全てのパケットを削除するようにフィルタリング部20cにフィルタリングの設定を行う。フィルタリング部20cは、送受信部20aが受信したパケットの宛先であるサーバ1の仮想IPアドレスが、設定されたIPアドレスと一致した場合に、受信したパケットを削除する。本実施形態では、サーバ1が接続される攻撃検知ノード3の上流側に複数の攻撃防御ノード2を設けることで、攻撃検知ノード3において、パケットが到来する方向毎攻撃防御ノード2毎にサーバ1へのトラヒックを監視することができる。さらに、攻撃検知ノード3において攻撃が検知された場合に、攻撃パケットが経由する攻撃防御ノード2に対して、パケットを削除するフィルタリングルールが通知され、攻撃防御ノード2でフィルタリングが行われるので、攻撃に係るトラヒックを遮断することができる。このとき、他の攻撃防御ノード2を経由し、攻撃が検知されなかった正常なトラヒックは遮断されない。ステップS1065で決定されたフィルタリングルールは、全トラヒックに対して特定の攻撃者のクライアント5からの攻撃トラヒックの占める割合が高い攻撃に対して有効である。このような攻撃が行われている状況において、ステップS1065で決定されたフィルタリングルールに従ってフィルタリングを行うことによって、攻撃パケットが到着する攻撃防御ノード2が中継する正規のパケットを棄却せずに攻撃パケットのみを効率的に棄却することができる。また、ステップS1050で決定されたフィルタリングルールは、多数の攻撃者のクライアント5から分散して攻撃パケットが送信される攻撃に対して有効である。このような攻撃が行われている状況において、ステップS1050で決定されたフィルタリングルールに従ってフィルタリングを行うことによって、攻撃パケットが到着する攻撃防御ノード2では正規のパケットも棄却されるが、攻撃対象のサーバ1への攻撃パケットによる影響を最小限に低減することができる。上述したように、本実施形態によれば、攻撃検知ノード3で検知されたクライアント5毎のトラヒック量を量順に並べたときの多いほうから順に1番目からm番目までのトラヒック量に基づいてフィルタリングルールを決定することによって、攻撃形態に応じて、攻撃パケットの効率的なフィルタリングと、フィルタリングによる正規のトラヒックへの影響とのバランスをとったフィルタリングルールを決定することが可能となる。したがって、正規のトラヒックへの影響を抑えつつ、サーバ1を攻撃から防御することができる。本実施形態の手法では、攻撃者のクライアント5がIPアドレスを詐称して攻撃を行う場合でも、IPトレースバックを行わずに攻撃パケットを的確に棄却することができる。また、攻撃防御ノード2がフィルタリング対象棄却対象として個別に指定可能なIPアドレスの数をmとし、上位m件のトラヒック量に基づいてフィルタリングルールを決定することによって、攻撃形態と攻撃防御ノード2のフィルタリング能力とに応じた適切なフィルタリングを行うことができる。また、攻撃が検知されたサーバ1宛ての全てのトラヒック量Taと、上位m件のトラヒック量の合計Tcとを比較した結果に基づいてフィルタリングルールを決定することによって、攻撃形態に応じた適切なフィルタリングを行うことができる。また、図13のステップS1065で決定されたフィルタリングルールに従ってフィルタリングを行うことによって、攻撃パケットが到着する攻撃防御ノード2が中継する正規のパケットを棄却せずに攻撃パケットのみを効率的に棄却することができる。さらに、図13のステップS1050で決定されたフィルタリングルールに従ってフィルタリングを行うことによって、攻撃対象のサーバ1への攻撃パケットによる影響を最小限に低減することができる。以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。"