(57)【要約】【課題】ネットワーク上の既存の通信機器の置換を伴わずに、送信元のIPアドレスの詐称による攻撃を検知し、サーバを攻撃から防御することができる通信システムを提供する。【解決部】クライアント５からサーバ１の仮想IPアドレス宛てに送信されるパケットは、クライアント５とネットワークとの接続点に応じた攻撃防御ノード２によって受信され、攻撃防御ノード２および攻撃検知ノード３をこの順に経由してサーバ１に到達する。クライアント５がIPアドレスを詐称していない場合、各々の攻撃防御ノード２が中継するパケットの送信元のIPアドレスは攻撃防御ノード２毎に一定のIPアドレス範囲に収まるが、クライアント５がIPアドレスを詐称している場合、各々の攻撃防御ノード２が中継するパケットの送信元のIPアドレスの範囲が変化する。攻撃検知ノード３は、このIPアドレスの範囲の変化を検知する。【選択図】図１
2012186520.tif 000002
【特許請求の範囲】
【請求項１】
通信端末から、実IPアドレスおよび仮想IPアドレスを有するサーバの前記仮想IPアドレス宛てに送信されるパケットを中継する複数の第１の中継端末と、
前記第１の中継端末によって中継されたパケットを受信し、受信したパケットを前記仮想IPアドレスに対応した前記実IPアドレス宛てのパケットに変換し、前記サーバとの間で確立されたVPN接続により前記サーバへ変換後のパケットを送信する複数の第２の中継端末と、
を備え、前記通信端末が送信したパケットは、当該通信端末とネットワークとの接続点に応じた前記第１の中継端末によって受信される通信システムであって、
前記第１の中継端末は、
パケットを削除するルールを示すルール情報を前記第２の中継端末から受信する受信部と、
前記第２の中継端末から受信された前記ルール情報が示すルールに従って、前記第１の中継端末で受信されたパケットを削除するフィルタリング部と、
を有し、
前記第２の中継端末は、
ネットワーク上の全てのIPアドレスを複数のIPアドレス範囲に分類したときの各々のIPアドレス範囲の情報を含むネットワーク情報を記憶すると共に、前記第１の中継端末が中継するパケットの送信元の前記通信端末のIPアドレスに対応する前記IPアドレス範囲の情報と当該第１の中継端末の識別情報とを含む通信履歴情報を記憶する記憶部と、
前記第２の中継端末で受信されたパケットの送信元の前記通信端末のIPアドレスと、当該パケットを中継した前記第１の中継端末の識別情報と、前記ネットワーク情報とに基づいて前記通信履歴情報を生成し、前記記憶部に格納する生成部と、
第１の通信履歴情報と、当該第１の通信履歴情報よりも前に生成された第２の通信履歴情報とを比較した結果に基づいて、前記通信端末のIPアドレスの詐称による攻撃を検知する検知部と、
前記検知部によって検知された攻撃に係るパケットを削除する前記ルールを決定し、前記ルール情報を生成するルール決定部と、
前記検知部によって検知された攻撃に係るパケットを中継した前記第１の中継端末へ前記ルール情報を送信する送信部と、
を有することを特徴とする通信システム。
【請求項２】
前記検知部は、前記第１の通信履歴情報に含まれる前記IPアドレス範囲の情報と、前記第２の通信履歴情報に含まれる前記IPアドレス範囲の情報とが同一であり、かつ前記第１の通信履歴情報に含まれる前記第１の中継端末の識別情報と、前記第２の通信履歴情報に含まれる前記第１の中継端末の識別情報とが異なる場合に、前記通信端末のIPアドレスの詐称による攻撃を検知することを特徴とする請求項１に記載の通信システム。
【請求項３】
前記第１の中継端末および前記第２の中継端末の状態を管理する管理端末をさらに備え、
前記第２の中継端末はさらに、前記管理端末に対して、前記第２の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末のネットワークへの参加状態の確認を要求する確認要求を送信し、当該参加状態を示す回答を前記管理端末から受信する状態確認部を有し、
前記検知部は、前記第１の通信履歴情報に含まれる前記IPアドレス範囲の情報と、前記第２の通信履歴情報に含まれる前記IPアドレス範囲の情報とが同一であり、かつ前記第１の通信履歴情報に含まれる前記第１の中継端末の識別情報と、前記第２の通信履歴情報に含まれる前記第１の中継端末の識別情報とが異なる場合であって、前記第１の中継端末がネットワークから脱退したことを前記回答が示している場合に、前記通信端末のIPアドレスの詐称による攻撃を検知しない
ことを特徴とする請求項１に記載の通信システム。
【請求項４】
前記第１の中継端末および前記第２の中継端末の状態を管理する管理端末をさらに備え、
前記第２の中継端末はさらに、前記管理端末に対して、前記第１の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末のネットワークへの参加状態と、前記第２の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末のネットワークへの参加状態との確認を要求する確認要求を送信し、当該参加状態を示す回答を前記管理端末から受信する状態確認部を有し、
前記通信履歴情報はさらに、当該通信履歴情報に係るパケットの受信時刻を示す時刻情報を含み、
前記検知部は、前記第１の通信履歴情報に含まれる前記IPアドレス範囲の情報と、前記第２の通信履歴情報に含まれる前記IPアドレス範囲の情報とが同一であり、かつ前記第１の通信履歴情報に含まれる前記第１の中継端末の識別情報と、前記第２の通信履歴情報に含まれる前記第１の中継端末の識別情報とが異なる場合であって、前記第２の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末がネットワークに参加中であることを前記回答が示しており、かつ前記第２の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末のネットワーク加入時刻が、前記第２の通信履歴情報に含まれる前記時刻情報が示す時刻よりも前である場合に、前記通信端末のIPアドレスの詐称による攻撃を検知する
ことを特徴とする請求項１または請求項３に記載の通信システム。
【請求項５】
前記送信部は、前記第１の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末と、前記第２の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末とに対して前記ルール情報を送信することを特徴とする請求項１〜請求項４のいずれか一項に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想IPアドレスが割り当てられたサーバと、サーバ宛てのパケットを中継する中継端末とを有する通信システムに関する。
【背景技術】
【０００２】
IPネットワーク上の攻撃を検知し、攻撃に対する防御を行う侵入検知システム（IDS）やファイアウォール（FW）等は、到来するパケットに記録されている送信元IPアドレスに基づいて、攻撃の検知および防御を行う。したがって、攻撃者は、攻撃の検知および防御を回避するために、攻撃パケットの送信元IPアドレスを詐称した上で、DoS（Denial of Service）攻撃や分散DoS攻撃等を行うことがある。
【０００３】
従来、IPアドレス詐称による攻撃を検知する技術として、IPトレースバックがある。このIPトレースバックは、パケットへマーキングを行い、あるいはパケットが通過するルータにハッシュ値を保存し、それらを追跡することで、送信元IPアドレスが詐称される場合でも、パケットの発信源を追跡および探知する技術である（例えば、特許文献１、非特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２８７２０号公報
【非特許文献】
【０００５】
【非特許文献１】門林 ほか、“IPトレースバック技術”、情報処理 Vol. 42、No. 12、pp.1175-1180、2001年12月
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のIPトレースバック技術では、発信源の正確な追跡および探知を実現するためには、ルータ等のネットワーク上の多くの通信機器を、上記の技術を実現する機能を備えた通信機器に置換する必要があり、この置換に必要なコストが増大するという問題があった。このため、ネットワーク上の通信機器の置換を伴わずに攻撃の検知および防御を行うことが望ましい。
【０００７】
本発明は、上述した課題に鑑みてなされたものであって、ネットワーク上の既存の通信機器の置換を伴わずに、送信元のIPアドレスの詐称による攻撃を検知し、サーバを攻撃から防御することができる通信システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記の課題を解決するためになされたもので、通信端末から、実IPアドレスおよび仮想IPアドレスを有するサーバの前記仮想IPアドレス宛てに送信されるパケットを中継する複数の第１の中継端末と、前記第１の中継端末によって中継されたパケットを受信し、受信したパケットを前記仮想IPアドレスに対応した前記実IPアドレス宛てのパケットに変換し、前記サーバとの間で確立されたVPN接続により前記サーバへ変換後のパケットを送信する複数の第２の中継端末と、を備え、前記通信端末が送信したパケットは、当該通信端末とネットワークとの接続点に応じた前記第１の中継端末によって受信される通信システムであって、前記第１の中継端末は、パケットを削除するルールを示すルール情報を前記第２の中継端末から受信する受信部と、前記第２の中継端末から受信された前記ルール情報が示すルールに従って、前記第１の中継端末で受信されたパケットを削除するフィルタリング部と、を有し、前記第２の中継端末は、ネットワーク上の全てのIPアドレスを複数のIPアドレス範囲に分類したときの各々のIPアドレス範囲の情報を含むネットワーク情報を記憶すると共に、前記第１の中継端末が中継するパケットの送信元の前記通信端末のIPアドレスに対応する前記IPアドレス範囲の情報と当該第１の中継端末の識別情報とを含む通信履歴情報を記憶する記憶部と、前記第２の中継端末で受信されたパケットの送信元の前記通信端末のIPアドレスと、当該パケットを中継した前記第１の中継端末の識別情報と、前記ネットワーク情報とに基づいて前記通信履歴情報を生成し、前記記憶部に格納する生成部と、第１の通信履歴情報と、当該第１の通信履歴情報よりも前に生成された第２の通信履歴情報とを比較した結果に基づいて、前記通信端末のIPアドレスの詐称による攻撃を検知する検知部と、前記検知部によって検知された攻撃に係るパケットを削除する前記ルールを決定し、前記ルール情報を生成するルール決定部と、前記検知部によって検知された攻撃に係るパケットを中継した前記第１の中継端末へ前記ルール情報を送信する送信部と、を有することを特徴とする通信システムである。
【０００９】
また、本発明の通信システムにおいて、前記検知部は、前記第１の通信履歴情報に含まれる前記IPアドレス範囲の情報と、前記第２の通信履歴情報に含まれる前記IPアドレス範囲の情報とが同一であり、かつ前記第１の通信履歴情報に含まれる前記第１の中継端末の識別情報と、前記第２の通信履歴情報に含まれる前記第１の中継端末の識別情報とが異なる場合に、前記通信端末のIPアドレスの詐称による攻撃を検知することを特徴とする。
【００１０】
また、本発明の通信システムは、前記第１の中継端末および前記第２の中継端末の状態を管理する管理端末をさらに備え、前記第２の中継端末はさらに、前記管理端末に対して、前記第２の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末のネットワークへの参加状態の確認を要求する確認要求を送信し、当該参加状態を示す回答を前記管理端末から受信する状態確認部を有し、前記検知部は、前記第１の通信履歴情報に含まれる前記IPアドレス範囲の情報と、前記第２の通信履歴情報に含まれる前記IPアドレス範囲の情報とが同一であり、かつ前記第１の通信履歴情報に含まれる前記第１の中継端末の識別情報と、前記第２の通信履歴情報に含まれる前記第１の中継端末の識別情報とが異なる場合であって、前記第１の中継端末がネットワークから脱退したことを前記回答が示している場合に、前記通信端末のIPアドレスの詐称による攻撃を検知しないことを特徴とする。
【００１１】
また、本発明の通信システムは、前記第１の中継端末および前記第２の中継端末の状態を管理する管理端末をさらに備え、前記第２の中継端末はさらに、前記管理端末に対して、前記第１の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末のネットワークへの参加状態と、前記第２の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末のネットワークへの参加状態との確認を要求する確認要求を送信し、当該参加状態を示す回答を前記管理端末から受信する状態確認部を有し、前記通信履歴情報はさらに、当該通信履歴情報に係るパケットの受信時刻を示す時刻情報を含み、前記検知部は、前記第１の通信履歴情報に含まれる前記IPアドレス範囲の情報と、前記第２の通信履歴情報に含まれる前記IPアドレス範囲の情報とが同一であり、かつ前記第１の通信履歴情報に含まれる前記第１の中継端末の識別情報と、前記第２の通信履歴情報に含まれる前記第１の中継端末の識別情報とが異なる場合であって、前記第２の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末がネットワークに参加中であることを前記回答が示しており、かつ前記第２の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末のネットワーク加入時刻が、前記第２の通信履歴情報に含まれる前記時刻情報が示す時刻よりも前である場合に、前記通信端末のIPアドレスの詐称による攻撃を検知することを特徴とする。
【００１２】
また、本発明の通信システムにおいて、前記送信部は、前記第１の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末と、前記第２の通信履歴情報に含まれる前記識別情報に対応する前記第１の中継端末とに対して前記ルール情報を送信することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、通信端末からサーバの仮想IPアドレス宛てに送信されるパケットは、通信端末とネットワークとの接続点に応じた第１の中継端末によって受信され、第１の中継端末および第２の中継端末をこの順に経由してサーバに到達する。通信端末がIPアドレスを詐称していない場合、各々の第１の中継端末が中継するパケットの送信元のIPアドレスは第１の中継端末毎に一定のIPアドレス範囲に収まるが、通信端末がIPアドレスを詐称している場合、各々の第１の中継端末が中継するパケットの送信元のIPアドレスの範囲が変化する。したがって、第１の通信履歴情報と第２の通信履歴情報とを比較することによって、このIPアドレスの範囲の変化を検知することが可能となる。よって、第１の中継端末と第２の中継端末をネットワークに追加することによって、ネットワーク上の既存の通信機器の置換を伴わずに、送信元のIPアドレスの詐称による攻撃を検知し、サーバを攻撃から防御することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態による通信システムの構成を示す構成図である。
【図２】本発明の一実施形態による通信システムの機能構成を示すブロック図である。
【図３】本発明の一実施形態における初期ノード起動手順を示すシーケンス図である。
【図４】本発明の一実施形態におけるノード加入手順を示すシーケンス図である。
【図５】本発明の一実施形態におけるノード脱退手順を示すシーケンス図である。
【図６】本発明の一実施形態におけるサーバ公開開始手順を示すシーケンス図である。
【図７】本発明の一実施形態におけるサーバ公開停止手順を示すシーケンス図である。
【図８】本発明の一実施形態における通信手順を示すシーケンス図である。
【図９】本発明の一実施形態による攻撃防御ノードと攻撃検知ノードの機能構成を示すブロック図である。
【図１０】本発明の一実施形態における攻撃検知・防御方法を説明するための構成図である。
【図１１】本発明の一実施形態における攻撃検知・防御方法を説明するための構成図である。
【図１２】本発明の一実施形態における攻撃検知・防御方法を説明するための構成図である。
【図１３】本発明の一実施形態におけるネットワーク情報を示す参考図である。
【図１４】本発明の一実施形態における攻撃検知・防御手順を示すシーケンス図である。
【図１５】本発明の一実施形態におけるログの構造を示す参考図である。
【図１６】本発明の一実施形態における攻撃検知ノードの動作の手順を示すフローチャートである。
【図１７】本発明の一実施形態における攻撃検知方法を説明するための参考図である。
【図１８】DHTネットワークにおけるハッシュ空間を示す参考図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照し、本発明の実施形態を説明する。図１は、本発明の一実施形態による通信システムの構成を示している。本通信システムは、サーバを保護する機構を備えたオーバーレイネットワークを構成しており、サーバ１、攻撃防御ノード２（第１の中継端末）、攻撃検知ノード３（第２の中継端末）、管理ノード４、クライアント５（通信端末）を備える。図１に示す各装置の位置は、実際の物理ネットワーク上の位置とは必ずしも一致しない。
【００１６】
サーバ１は、FTP（File Transfer Protocol）サーバやWebサーバ等であり、所定のサービスを提供する。サーバ１には、実ネットワークで用いるIPアドレス（本明細書では実IPアドレスとする）と共に、仮想的なIPアドレス（本明細書では仮想IPアドレスとする）が割り当てられている。
【００１７】
攻撃防御ノード２は、クライアント５からサーバ１宛てに送信されるパケットを攻撃検知ノード３に中継する。また、攻撃防御ノード２は、サーバ１を攻撃から防御するためのパケットフィルタリングを行う。攻撃防御ノード２は、例えばISP（Internet Service Provider）毎のネットワークに設置されており、そのネットワーク内のクライアント５から送信されるパケットを中継する。
【００１８】
攻撃検知ノード３は、攻撃防御ノード２が中継したパケットをサーバ１に中継する。また、攻撃検知ノード３は、サーバ１に対する攻撃を検知する。管理ノード４は、サーバ１に対する仮想IPアドレスの割り当てと、攻撃防御ノード２および攻撃検知ノード３の状態を管理する。クライアント５は、例えばISP毎のネットワークに所属している。クライアント５がサーバ１の仮想IPアドレス宛てに送信したパケットは、ルーティングプロトコルに従って、クライアント５とネットワークとの接続点の位置に応じた攻撃検知ノード３に転送される。
【００１９】
サーバ１と攻撃検知ノード３との間ではVPN（Virtual Private Network）接続が確立される。これにより、サーバ１はネットワーク上の仮想的なセグメント（仮想セグメント）に収容される。サーバ１と攻撃検知ノード３との関係は１対１である、すなわちサーバ１は１つの攻撃検知ノード３のみとVPN接続を確立するため、特定のサーバ１宛てのパケットは、このサーバ１とVPN接続を確立している１つの攻撃検知ノード３を必ず経由する。サーバ１が全ての攻撃検知ノード３とVPN接続を確立する手法を用いてもよいが、上記のようにサーバ１が１つの攻撃検知ノード３のみとVPN接続を確立することによって、VPN接続を確立する処理負荷およびVPN接続の管理負荷が低減される。
【００２０】
サーバ１は、攻撃検知ノード３とVPN接続を確立する場合、特定の１つの攻撃検知ノード３に対してVPN接続の要求を行う。このVPN接続の要求と確立はサーバ１と攻撃検知ノード３との間で自律的に行われるため、１つの管理端末が全ての攻撃検知ノード３の状態を管理し、サーバ１からVPN接続の要求を受けて攻撃検知ノード３の情報を応答するような中央集権的な仕組みを必要としない。
【００２１】
攻撃防御ノード２と攻撃検知ノード３は、分散ハッシュテーブル（DHT： Distributed Hash Table）を利用したDHTネットワークを構成する。これにより、サーバ１と攻撃検知ノード３との対応関係を管理する負荷が攻撃防御ノード２および攻撃検知ノード３間で分散される。
【００２２】
攻撃検知ノード３には、同一のサーバ１に対するパケットが複数の攻撃防御ノード２から到来しうる。攻撃検知ノード３が、どの攻撃防御ノード２からのパケットであるのかを区別してサーバ１へのパケット量を監視し、攻撃を検知することで、攻撃パケットがどの攻撃防御ノード２から到来するのかを知ることができる。攻撃が検知された場合、複数の攻撃防御ノード２のうち攻撃パケットを中継した攻撃防御ノード２において、攻撃対象となったサーバ１の仮想IPアドレス宛てのパケットを削除するパケットフィルタリングを実施することで、サーバ１を攻撃から防御することができる。パケットフィルタリングを実施している攻撃防御ノード２以外の攻撃防御ノード２から到来するパケットは攻撃パケットではないとみなされ、サーバ１へ転送される。
【００２３】
本実施形態では、クライアント５からサーバ１の仮想IPアドレス宛てに送信されるパケットは、攻撃防御ノード２および攻撃検知ノード３をこの順に経由してサーバ１に到達する。分散DoS攻撃のように、個々の攻撃クライアントが送信するパケットは少量であるが多数の攻撃クライアントからのパケットが特定のサーバに集中する攻撃を検知するには、攻撃対象となるサーバの近傍で攻撃の検知を行うことが望ましい。本実施形態では、パケットの転送経路上でよりサーバ１に近い攻撃検知ノード３が攻撃の検知を行うことによって、より的確に攻撃を検知することが可能となる。さらに、サーバ１と攻撃検知ノード３との関係が１対１であるため、攻撃検知ノード３が各サーバ１へのトラヒックを一元的に監視することになり、サーバ１に対する攻撃をより的確に検知することができる。
【００２４】
また、多数の攻撃クライアントからのパケットがネットワーク上で転送されるとネットワーク資源を浪費するので、攻撃クライアントの近傍でパケットフィルタリングを実施することが望ましい。本実施形態では、パケットの転送経路上でより攻撃元のクライアント５に近い攻撃防御ノード２がパケットのフィルタリングを行うことによって、攻撃元のクライアント５から送信されたパケットの転送によるネットワーク資源の消費をより抑えることが可能となる。
【００２５】
図２は、パケットの中継に関する本通信システムの機能構成を示している。サーバ１は、サーバアプリケーション１０と、サーバ公開部１１とを有する。サーバアプリケーション１０は、クライアント５からの要求に応じてサービスを提供する。サーバ公開部１１は、サーバ１を収容する仮想セグメントを構築するためのサーバ公開に係る処理を行う。
【００２６】
攻撃防御ノード２は、中継部２０と、DHT管理部２１と、DHT記憶部２２と、広告部２３とを有する。中継部２０は、クライアント５から送信されたパケットを攻撃検知ノード３に中継する。DHT管理部２１は、DHTネットワークに参加するための処理を行い、DHT記憶部２２に記憶される情報を管理する。DHT記憶部２２は、サーバ１とVPN接続を確立している攻撃検知ノード３のIPアドレスとサーバ１の仮想IPアドレスとの対応関係を示す情報を記憶する。より具体的には、DHT記憶部２２は、サーバ１とVPN接続を確立している攻撃検知ノード３のIPアドレスと、サーバ１の仮想IPアドレスからSHA1（Secure Hash Algorithm 1）を用いて算出したハッシュ値とを関連付けて記憶する。DHTネットワークでは、この対応関係を示す情報は、サーバ１とVPN接続を確立している攻撃検知ノード３で管理されるとは限らず、DHTネットワークを構成する攻撃防御ノード２と攻撃検知ノード３のいずれかにおいて管理される。
【００２７】
広告部２３は、サーバ１の仮想IPアドレス宛てのパケットが攻撃防御ノード２に届くように、ルーティングプロトコルの一種であるOSPF（Open Shortest Path First）やBGP（Border Gateway Protocol）に従って、仮想IPアドレス宛ての経路に係る経路情報をネットワーク上に広告する。クライアント５がサーバ１の仮想IPアドレス宛てのパケットを送信すると、この経路情報に従ってネットワーク上のルータが転送を行うことにより、クライアント５に最も近い攻撃防御ノード２にパケットが到着する。つまり、クライアント５が送信したパケットは、クライアント５とネットワークとの接続点の位置に応じた攻撃防御ノード２に到着する。
【００２８】
攻撃検知ノード３は、中継部３０と、サーバ公開部３１と、DHT管理部３２と、DHT記憶部３３と、広告部３４とを有する。中継部３０は、攻撃防御ノード２から送信されたパケットをサーバ１に中継する。サーバ公開部３１は、サーバ１を収容する仮想セグメントを構築するためのサーバ公開に係る処理を行う。DHT管理部３２は、DHTネットワークに参加するための処理を行い、DHT記憶部３３に記憶される情報を管理する。DHT記憶部３３はDHT記憶部２２と同様に、サーバ１とVPN接続を確立している攻撃検知ノード３のIPアドレスと、サーバ１の仮想IPアドレスからSHA1を用いて算出したハッシュ値とを関連付けて記憶する。
【００２９】
広告部３４は、OSPFに従って、エニーキャストアドレス宛ての経路に係る経路情報をネットワーク上に広告する。サーバ１が、サーバ公開に係るVPN接続を行う際にエニーキャストアドレス宛てに攻撃検知ノード３の検索要求を行うと、サーバ１に最も近い攻撃検知ノード３から応答が返される。サーバ記憶部３５は、サーバ１の仮想IPアドレスと実IPアドレスとを関連付けて記憶する。
【００３０】
管理ノード４は、仮想IPアドレス記憶部４０と、アドレス管理部４１と、設定情報記憶部４２と、ノード管理部４３と、ノードリスト記憶部４４とを有する。仮想IPアドレス記憶部４０は、サーバ１に割り当てられる仮想IPアドレスを記憶する。アドレス管理部４１は、サーバ１に対する仮想IPアドレスの割り当てを管理する。設定情報記憶部４２は、攻撃防御ノード２に通知する仮想IPアドレスの範囲や、攻撃検知ノード３に通知するエニーキャストアドレスの範囲等を含む設定情報を記憶する。各攻撃防御ノード２には共通の仮想IPアドレス範囲が通知される。また、各攻撃検知ノード３には共通のエニーキャストアドレス範囲が通知される。ノード管理部４３は、DHTネットワークを構成する攻撃防御ノード２および攻撃検知ノード３の情報を管理する。ノードリスト記憶部４４は、DHTネットワークを構成する攻撃防御ノード２および攻撃検知ノード３の一覧であるノードリストを記憶する。
【００３１】
クライアント５はクライアントアプリケーション５０を有する。クライアントアプリケーション５０はサーバ１に対してサービスの要求を行う。
【００３２】
次に、攻撃防御ノード２と攻撃検知ノード３によるDHTネットワークの構築と管理について説明する。DHTネットワークにおいては、ネットワークを構成するノードの加入と離脱が生じる。ノードが加入する場合、既にDHTネットワークを構成しているいずれかのノードに対して加入処理を行うことで、DHTネットワークへの加入を行う。一方、DHTネットワークからノードが離脱する場合、ルーティングテーブルの再構築が行われ、残りのノードにより通信が継続される。このとき、離脱したノードが所持していた情報はDHTネットワーク上で隣接するノードが同期を取るなどして保持される。なお、最初にDHTネットワークを構成するノードが起動する場合は、加入処理を行う対象のノードが存在しないため、初期ノード起動処理が行われる。以下、DHTネットワークを構築するアルゴリズムの一種であるChordを実装したプログラムを例に、それぞれの具体的な手法を説明する。
【００３３】
図３は、DHTネットワークを構成する最初のノードである初期ノード（攻撃防御ノード２または攻撃検知ノード３）が加入する場合のシーケンスを示している。初期ノードにおいて、DHT管理部２１（３２）は、ノードリストの取得要求を示すノードリスト要求を管理ノード４へ送信する（ステップＳ１００）。なお、管理ノード４のIPアドレスは既知であるものとする。管理ノード４においてノード管理部４３はノードリスト要求を受信し、ノードリスト記憶部４４内のノードリストにノードのIPアドレスが登録されているか否かを判定する（ステップＳ１１０）。
【００３４】
最初のノードが加入する場合、ノードリストにノードのIPアドレスが登録されていないため、管理ノード４は初期ノード起動処理が必要であると判定し、初期ノード起動処理の要求を示す初期ノード起動要求を、ノードリスト要求の送信元であるノードへ送信する（ステップＳ１２０）。初期ノード起動要求には、設定情報記憶部４２内の設定情報に基づく仮想IPアドレスの範囲とエニーキャストアドレスの範囲が含まれる。
【００３５】
初期ノードにおいて、DHT管理部２１（３２）は、初期ノード起動要求を受信し、初期ノード起動処理を実行する（ステップＳ１３０）。具体的には、次に示すようなブートストラップノードの起動コマンドを実行する。
start-dhash --root dhash-a -j sure.lcs.mit.edu:10000 -p 10000 &
【００３６】
初期ノード起動処理の実行により、DHT記憶部２２（３３）には分散ハッシュテーブルが作成される。前述したように、このテーブルの構成要素は、サーバ１とVPN接続を確立している攻撃検知ノード３のIPアドレスと、サーバ１の仮想IPアドレスからSHA1を用いて算出したハッシュ値とのペアである。初期ノード起動処理が完了した時点では、テーブルにはこれらの情報は格納されていない。また、初期ノード起動処理が完了した時点では、DHTネットワークの全てのノード（１個）の情報を初期ノードが単体で管理している状態となる。
【００３７】
初期ノード起動処理の実行後、DHT管理部２１（３２）は、初期ノードがDHTネットワークに加入したことを示すノード加入通知を管理ノード４へ送信することにより自身のIPアドレスを通知する（ステップＳ１４０）。管理ノード４においてノード管理部４３はノード加入通知を受信し、ノード加入通知により通知されたIPアドレスをノード加入時刻（ノード加入通知の受信時刻）と共にノードリスト記憶部４４内のノードリストに追加する（ステップＳ１５０）。
【００３８】
初期ノードが攻撃防御ノード２である場合、初期ノード起動処理の実行後、攻撃防御ノード２の広告部２３は、初期ノード起動要求によって通知された範囲の仮想IPアドレス宛ての経路に係る経路情報をネットワーク上に広告する。また、初期ノードが攻撃検知ノード３である場合、初期ノード起動処理の実行後、攻撃検知ノード３の広告部３４は、初期ノード起動要求によって通知された範囲のエニーキャストアドレス宛ての経路に係る経路情報をネットワーク上に広告する（ステップＳ１６０）。
【００３９】
なお、管理ノード４が初期ノードからノードリスト要求を受信してからノード加入通知を受信するまでの間に他のノードからノードリスト要求を受信した場合、ノードリスト要求の再送を示すメッセージが他のノードへ送信される。このため、初期ノードによるDHTネットワークが構築されるまで、他のノードからのノードリスト要求に対する処理は実行されない。
【００４０】
図４は、１以上のノードによりDHTネットワークが構成されている場合に新たなノード（攻撃防御ノード２または攻撃検知ノード３）が加入する場合のシーケンスを示している。新たに加入するノードにおいて、DHT管理部２１（３２）は、ノードリストの取得要求を示すノードリスト要求を管理ノード４へ送信する（ステップＳ２００）。なお、管理ノード４のIPアドレスは既知であるものとする。管理ノード４においてノード管理部４３はノードリスト要求を受信し、ノードリスト記憶部４４内のノードリストにノードのIPアドレスが登録されているか否かを判定する（ステップＳ２１０）。
【００４１】
既に他のノードが加入している場合、ノードリストにノードのIPアドレスが登録されているため、管理ノード４は、ノードリスト要求の送信元であるノードへノードリストを送信する（ステップＳ２２０）。このとき、設定情報記憶部４２内の設定情報に基づく仮想IPアドレスの範囲とエニーキャストアドレスの範囲がノードリストに付加される。新たに加入するノードにおいて、DHT管理部２１（３２）は、ノードリストを受信し、ノードリストに記載されているノードを対象としてノード加入処理を実行する（ステップＳ２３０）。具体的には、次に示すような既存ノードへの加入のコマンドを実行する。
start-dhash --root dhash-b -j sure.lcs.mit.edu:10000 &
【００４２】
ノード加入処理の実行により、DHT記憶部２２（３３）には分散ハッシュテーブルが作成される。ノード加入処理では、ノードリストに記載されたIPアドレスを有するノードと通信が行われ、DHTネットワークに加入するための設定が行われる。
【００４３】
ノード加入処理の実行後、DHT管理部２１（３２）は、新たにノードがDHTネットワークに加入したことを示すノード加入通知を管理ノード４へ送信することにより自身のIPアドレスを通知する（ステップＳ２４０）。管理ノード４においてノード管理部４３はノード加入通知を受信し、ノード加入通知により通知されたIPアドレスをノード加入時刻（ノード加入通知の受信時刻）と共にノードリスト記憶部４４内のノードリストに追加する（ステップＳ２５０）。
【００４４】
新たに加入するノードが攻撃防御ノード２である場合、ノード加入処理の実行後、攻撃防御ノード２の広告部２３は、管理ノード４から通知された範囲の仮想IPアドレス宛ての経路に係る経路情報をネットワーク上に広告する。また、新たに加入するノードが攻撃検知ノード３である場合、ノード加入処理の実行後、攻撃検知ノード３の広告部３４は、管理ノード４から通知された範囲のエニーキャストアドレス宛ての経路に係る経路情報をネットワーク上に広告する（ステップＳ２６０）。
【００４５】
以下、ステップＳ２３０において、DHTネットワークに加入する処理の詳細を説明する。DHTは、管理対象の情報のハッシュ値（以下、Keyとする）と、管理対象の情報（以下、Valueとする）とのペアを格納する分散ハッシュテーブルを複数のノードに分散させることによって、情報を効率的に管理する手法である。本実施形態では、サーバ１の仮想IPアドレスがKeyに該当し、攻撃検知ノード３のIPアドレスがValueに該当する。本実施形態では、DHTネットワークを構成する攻撃防御ノード２および攻撃検知ノード３が、自身のIPアドレスに基づいて、管理対象となる攻撃検知ノード３のIPアドレス（Value）を管理する。
【００４６】
本実施形態でDHTネットワークの実装アルゴリズムの一例として用いるChordでは、DHTネットワークを構成するノードが各ノードのIDに従って配置される。各ノードに割り当てられるIDは、具体的にはノード毎のIPアドレスからSHA-1を用いて算出したハッシュ値である。Chordでは２１６０のハッシュ空間が用いられ、各ノードは円周上の点として定義される。図１８は、簡単のためハッシュ空間を２４とした場合のIDの割り当てを示している。０から１５までの各IDを有するノードが配置されている。
【００４７】
Chordでは、DHTネットワークを構成する各ノードが、自身のノードIDから隣接するノードIDまでの間に位置するIDに対応するValueを管理する。図１８において、ノードIDが０、２、６、９、１１、１３、１４のノードがDHTネットワークに加入している場合、ノードIDが０のノード０は、ノードIDが１５と０に対応するKeyとValueのペアを管理する。
【００４８】
Chordでは、各ノードはSuccessor、Predecessor、Fingertableと呼ばれる３種類のルーティングテーブルを保持する。これらのルーティングテーブルは、各ノードがDHT記憶部２２（３３）の分散ハッシュテーブルに保持するKeyとValueのペア（サーバ１の仮想IPアドレスと転送ノードのIPアドレスのペア）とは異なる。各ルーティングテーブルはDHT記憶部２２（３３）に保持されるものとする。
【００４９】
Successorは、ノードIDが大きくなる方向に見て最近傍に位置するノードのIPアドレスを保持するルーティングテーブルであり、Predecessorは、ノードIDが小さくなる方向に見て最近傍に位置するノードのIPアドレスを保持するルーティングテーブルである。Fingertableは、2mのハッシュ空間において、以下の式に一致するIPアドレスを保持するルーティングテーブルである。
ノードのIPアドレス＝IPadress[next(Z)]、ただし、Z=(Node_ID+2i) mod2m、i=0〜m
上記の式のnext(Z)は、ハッシュ空間上でZから右回り（つまりノードIDが大きくなる方向）に見て次に存在するノードのIDを返す関数である。IPadress[X]はIDがXのノードのIPアドレスを返す関数である。
【００５０】
DHTネットワークに新たなノードが加入することは、円周上のノードが存在していない点の位置にノードが加わることを意味する。以下では、ID12のノード（ノード１２）とID18のノード（ノード１８）が存在しているDHTネットワークにID15のノード（ノード１５）が加入する場合を例として加入の手順を説明する。
【００５１】
ノード１５は、自身のIPアドレスからハッシュ値であるIDを算出する。続いて、ノード１５は、ノードリストに記載されているノードに対して、自身のIDを保持の対象としているノードのIPアドレスを要求する。要求を受けたノードは、ノード１５のIDを保持していれば応答し、保持していなければ他のノードに要求を行う。この結果、ノード１５はノード１８のIPアドレスを取得する。
【００５２】
続いて、ノード１５はノード１８にjoinメッセージを送信し、Successorにノード１８のIPアドレスを記録する。さらに、ノード１５はノード１８から、Predecessorに保持すべきノード１２のIPアドレスを通知され、Predecessorにノード１２のIPアドレスを記録する。
【００５３】
続いて、ノード１５は、それまでノード１８がFingertableに保持していたIPアドレスのうち、ノード１５が管理すべき部分に該当するIPアドレスをノード１８から受信し、Fingertableに記録する。また、ノード１５は、それまでノード１８がDHT記憶部２２（３３）の分散ハッシュテーブルに保持していたKeyとValueのペアのうち、ノード１５が管理すべき部分に該当するKeyとValueのペアをノード１８から受信し、DHT記憶部２２（３３）に記録する。ノード１５は、ノード１２に自身の加入を通知し、ノード１２は、ノード１５からの通知に基づいて、自身が保持しているSuccessorに記録されていたノード１８のIPアドレスをノード１５のIPアドレスに変更する。
【００５４】
図５は、DHTネットワークに加入しているノード（攻撃防御ノード２または攻撃検知ノード３）がDHTネットワークから脱退する場合のシーケンスを示している。DHTネットワークから脱退するノードにおいて、DHT管理部２１（３２）はノード脱退処理を実行する（ステップＳ３００）。続いて、DHT管理部２１（３２）は、DHTネットワークからの脱退を示すノード脱退通知を管理ノード４へ送信することにより自身のIPアドレスを通知する（ステップＳ３１０）。管理ノード４においてノード管理部４３はノード脱退通知を受信し、ノード脱退通知により通知されたIPアドレスをノードリスト記憶部４４内のノードリストから削除する（ステップＳ３２０）。
【００５５】
上記のようにしてノードが脱退した場合、ハッシュ空間上でこのノードに隣接するノードにおいて、Successor、Predecessor、Fingertableがそれぞれ更新される。このとき、脱退したノードが保持していた情報を引き継ぐための処理として、DHTでは近傍のノードに自身が保持するデータのコピーを配置するなどして情報の欠損を防いでいる。なお、脱退したノードについては、そのノードのIPアドレスとノード脱退時刻（ノード脱退通知の受信時刻）とが脱退ノードリストに記録される。脱退ノードリストはノードリスト記憶部４４に格納される。一旦脱退したノードが再度加入した場合には、ノードリストにノードのIPアドレスが登録された際に、同じノードのIPアドレスが脱退ノードリストから削除される。
【００５６】
次に、サーバ１を収容する仮想セグメントを構築するためのサーバ公開について説明する。サーバ１は予め管理ノード４から仮想IPアドレスを取得する。管理ノード４においてアドレス管理部４１は予め仮想IPアドレスを生成し、仮想IPアドレス記憶部４０に保存する。サーバ１のサーバ公開部１１は管理ノード４にアクセスし、仮想IPアドレスの割り当てに必要な情報の登録を行う。管理ノード４のアドレス管理部４１は、仮想IPアドレス記憶部４０から仮想IPアドレスを選択し、仮想IPアドレスをサーバ１に通知する。複数のサーバ１に対して同一の仮想IPアドレスが割り当てられないよう、アドレス管理部４１は仮想IPアドレスの割り当てを管理する。サーバ１に対する仮想IPアドレスの通知は公開鍵証明書の発行により行われるが、詳細な説明を省略する。この公開鍵証明書はサーバ１が攻撃検知ノード３にアクセスする際に使用されるが、本実施形態では、公開鍵証明書による公知の通信方法に係る説明を省略する。
【００５７】
図６は、仮想IPアドレスを取得したサーバ１の公開開始時のシーケンスを示している。サーバ１は、攻撃検知ノード３が使用するエニーキャストアドレスを予め知っているものとする。サーバ１のサーバ公開部１１は、エニーキャストアドレス宛てに攻撃検知ノード３の接続要求を送信する（ステップＳ４００）。この接続要求はサーバ１に最も近い攻撃検知ノード３に到着する。攻撃検知ノード３のサーバ公開部３１はサーバ１からの接続要求を受信し、自身のIPアドレスを通知する応答をサーバ１へ送信する（ステップＳ４１０）。
【００５８】
サーバ１のサーバ公開部１１は攻撃検知ノード３からの応答を受信し、その応答によって通知されたIPアドレス宛てに、VPN接続の要求を示すVPN接続要求を送信する（ステップＳ４２０）。このVPN接続要求によって、サーバ１の仮想IPアドレスおよび実IPアドレスが攻撃検知ノード３に通知される。この後、サーバ１と攻撃検知ノード３の双方においてVPN接続のための各種設定が行われるが、詳細な説明を省略する。
【００５９】
攻撃検知ノード３のサーバ公開部３１は、サーバ１から通知された仮想IPアドレスをDHT管理部３２に通知する。DHT管理部３２は仮想IPアドレスのハッシュ値を算出し、攻撃検知ノード３のIPアドレスとハッシュ値とを、DHTネットワークを構成する攻撃防御ノード２または攻撃検知ノード３のDHT記憶部２２（３３）内の分散ハッシュテーブルに登録する処理を行う（ステップＳ４３０）。具体的には、以下のような“put”コマンドを実行する。なお、(a)はハッシュ値を示し、(b)は攻撃検知ノードのIPアドレスを示す。
put <(a)> <(b)>
【００６０】
また、DHT管理部３２は、サーバ１の仮想IPアドレスと実IPアドレスとを組にしてサーバ記憶部３５に登録する（ステップＳ４４０）。
【００６１】
以下、ステップＳ４３０において攻撃検知ノード３のIPアドレスとサーバ１の仮想IPアドレスのハッシュ値のペアを分散ハッシュテーブルに登録する処理の詳細を説明する。DHT管理部３２は、サーバ１の仮想IPアドレスのハッシュ値をKeyとして管理すべきノードを検索する処理を行う。図１８に示すDHTネットワークにおいて、ノード０が検索を行う例を示す。サーバ１の仮想IPアドレスのハッシュ値が１２であるとすると、DHT管理部３２は、前述したnext関数によりnext(12)=13であるため、目的の情報を管理すべきノードがノード１３であることを求める。これに基づき、DHT管理部３２は、攻撃検知ノード３のIPアドレスとサーバ１の仮想IPアドレスのハッシュ値のペアを含み、ノード１３の検索を依頼するメッセージを生成し、中継部３０に渡す。
【００６２】
前述したFingertableの定義より、ノード０のFingertableに保持されるノードIDは、2(i=0,1[z=1,2])、6（i=2[z=4]）、9(i=3[z=8])となる。ノード１３のノードIDである13に関して、23<13<24であることから、ノード０は、i=3[z=8]のときのノードIDに対応するノード９にノード１３の検索を依頼する。すなわち、中継部３０はノード９宛てに上記のメッセージを送信する。
【００６３】
ノード９のFingertableに保持されるノードIDは、11(i=0,1[z=10,11])、13(i=2[z=13])、2(i=3[z=1])であることから、ノード９はノード１３の情報を保持している。したがって、ノード９からノード１３に、ノード０からのメッセージが転送される。ノード１３において中継部２０（３０）はメッセージを受信し、DHT管理部２１（３２）に渡す。DHT管理部２１は、メッセージに含まれる攻撃検知ノード３のIPアドレスとサーバ１の仮想IPアドレスのハッシュ値をDHT記憶部２２（３３）に設定する。
【００６４】
このように、DHTネットワークでは、はじめに大まかな検索を行い、検索対象に近づくに従って、徐々に細かい検索を行うことで、DHTネットワークを構成しているノードから隣接するノードを順番に辿る場合よりも効率的な検索を実現している。上記のようにして、攻撃検知ノード３のIPアドレスとサーバ１の仮想IPアドレスのハッシュ値のペアが、DHTネットワークを構成する攻撃防御ノード２または攻撃検知ノード３によって管理されるようになる。
【００６５】
図７は、サーバ１の公開停止時のシーケンスを示している。攻撃検知ノード３のサーバ公開部３１は、サーバ１からの明示的なVPN接続の解除通知あるいは障害等によるVPN接続の解除を検知することにより、VPN接続が切断されたことを検知し、DHT管理部３２に通知する（ステップＳ５００）。
【００６６】
DHT管理部３２は、サーバ公開部３１から通知を受けると、切断されたVPN接続の接続相手であるサーバ１の仮想IPアドレスと自身のIPアドレスのペアを分散ハッシュテーブルから削除するため、VPN接続を解除したサーバ１の仮想IPアドレスのハッシュ値をKeyとして管理しているノードを検索する処理を行う（ステップＳ５１０）。このとき、ステップＳ４３０の処理と同様にして検索が行われ、所望のノードにメッセージが転送される。メッセージを受信したノードにおいてDHT管理部２１（３３）は、メッセージに含まれるハッシュ値と一致するハッシュ値およびそれと関連付けられている攻撃検知ノード３のIPアドレスを分散ハッシュテーブルから削除する。
【００６７】
次に、サーバ１とクライアント５との通信について説明する。図８は、クライアント５がサーバ１と通信を行う際のシーケンスを示している。クライアント５は、例えばDNSサーバにサーバ１の名前解決を依頼し、その結果としてDNSサーバからサーバ１のIPアドレスを通知されることにより、サーバ１の仮想IPアドレス（IP_virtual）を取得することが可能である。クライアント５のクライアントアプリケーション５０は、クライアント５（IP_client）を送信元とし、サーバ１（IP_virtual）を宛先とするパケットを送信する（ステップＳ６００）。攻撃防御ノード２がIP_virtual宛ての経路を広告していることにより、クライアント５から送信されたパケットはクライアント５に最も近い攻撃防御ノード２に到着する。
【００６８】
攻撃防御ノード２の中継部２０は、クライアント５からのパケットを受信し、受信したパケットに含まれるサーバ１の仮想IPアドレス（IP_virtual）をDHT管理部２１に通知する。DHT管理部２１は、この仮想IPアドレス（IP_virtual）のハッシュ値を算出し、このハッシュ値をKeyとして管理しているノードを検索する処理を行う（ステップＳ６１０）。
【００６９】
このとき、ステップＳ４３０の処理と同様にして検索が行われ、所望のノードにメッセージが転送される。メッセージを受信したノードにおいてDHT管理部２１（３３）は、メッセージに含まれるハッシュ値と一致するハッシュ値を分散ハッシュテーブルから検索し、一致したハッシュ値と関連付けられている攻撃検知ノード３のIPアドレスを取得する。DHT管理部２１（３３）は、取得したIPアドレスを通知するための応答メッセージを生成し、中継部２０（３０）に渡す。中継部２０（３０）は、検索を要求した攻撃防御ノード２へ応答メッセージを送信する。検索を要求した攻撃防御ノード２において中継部２０はこの応答メッセージを受信し、所望の攻撃検知ノード３のIPアドレスを取得する。
【００７０】
中継部２０は、クライアント５から受信したパケットをカプセル化する（ステップＳ６２０）。このカプセル化では、クライアント５からのパケットに対してIPヘッダが付加される。このIPヘッダには、送信元のIPアドレスとして攻撃防御ノード２のIPアドレス（Rc）が記録され、宛先のIPアドレスとして攻撃検知ノード３のIPアドレス（Rs）が記録されている。したがって、クライアント５（IP_client）を送信元としサーバ１（IP_virtual）を宛先とするパケットが、カプセル化によって、攻撃防御ノード２（Rc）を送信元とし攻撃検知ノード３（Rs）を宛先とするパケットに変換される。中継部２０は、カプセル化したパケットを攻撃検知ノード３へ送信する（ステップＳ６３０）。
【００７１】
攻撃検知ノード３の中継部３０は、攻撃防御ノード２からのパケットを受信し、カプセル解除する（ステップＳ６４０）。このカプセル解除では、攻撃防御ノード２でパケットに付加されたIPヘッダが除去される。したがって、攻撃防御ノード２（Rc）を送信元とし攻撃検知ノード３（Rs）を宛先とするパケットが、カプセル解除によって、クライアント５（IP_client）を送信元としサーバ１（IP_virtual）を宛先とするパケットに変換される。
【００７２】
続いて、中継部３０は、パケットに含まれるサーバ１の仮想IPアドレス（IP_virtual）をキーにしてサーバ記憶部３５内の情報を検索し、サーバ１の仮想IPアドレス（IP_virtual）に対応する実IPアドレス（IP_real）を取得する（ステップＳ６５０）。さらに、中継部３０は、ステップＳ６４０でカプセル解除したパケットをカプセル化する（ステップＳ６６０）。このカプセル化では、送信元のIPアドレスとして攻撃検知ノード３のIPアドレス（Rs）が記録され、宛先のIPアドレスとしてサーバ１の実IPアドレス（IP_real）が記録されたIPヘッダが付加される。したがって、カプセル解除されたパケットが、カプセル化によって、攻撃検知ノード３（Rs）を送信元としサーバ１（IP_real）を宛先とするパケットに変換される。中継部３０は、カプセル化したパケットをサーバ１へ送信する（ステップＳ６７０）。
【００７３】
サーバ１のサーバアプリケーション１０は攻撃検知ノード３からのパケットを受信し、適宜処理する（ステップＳ６８０）。なお、受信されたパケットは、ミドルウェアによってカプセル解除される（図示せず）。サーバアプリケーション１０は、クライアント５への応答パケットを攻撃検知ノード３へ送信する（ステップＳ６９０）。この応答パケットは、サーバ１（IP_virtual）を送信元としクライアント５（IP_client）を宛先とするパケットに対して、カプセル化により、サーバ１（IP_virtual）を送信元とし攻撃検知ノード３（Rs）を宛先とするIPヘッダが付加されたものである。
【００７４】
攻撃検知ノード３の中継部３０はサーバ１からのパケットを受信し、カプセル解除する（ステップＳ７００）。このカプセル解除によって、サーバ１からのパケットは、サーバ１（IP_virtual）を送信元としクライアント５（IP_client）を宛先とするパケットに変換される。中継部３０は、カプセル解除したパケットをクライアント５へ送信する（ステップＳ７１０）。
【００７５】
上述したように、サーバ１は１つの攻撃検知ノード３のみとVPN接続を確立するため、サーバが全ての中継端末とVPN接続を確立する手法を用いる場合よりもVPN接続を確立する処理負荷およびVPN接続の管理負荷を低減することができる。また、VPN接続の要求と確立がサーバ１と攻撃検知ノード３との間で自律的に行われるため、１つの管理端末が全ての攻撃検知ノード３の状態を管理し、サーバ１からVPN接続の要求を受けて攻撃検知ノード３の情報を応答するような中央集権的な仕組みを必要としない。
【００７６】
また、攻撃防御ノード２と攻撃検知ノード３が、分散ハッシュテーブルを利用したDHTネットワークを構成することによって、サーバ１と攻撃検知ノード３との対応関係を管理する負荷を攻撃防御ノード２と攻撃検知ノード３間で分散することができる。
【００７７】
次に、本実施形態におけるサーバ１に対する攻撃の検知と防御について説明する。サーバ１宛てのパケットは、そのサーバ１を収容する仮想セグメントを構成する攻撃検知ノード３によってサーバ１へ転送されるので、攻撃検知ノード３においてサーバ１へのトラヒックを把握することが可能となる。図９は、攻撃の検知と防御に関する攻撃防御ノード２と攻撃検知ノード３の機能構成を示している。
【００７８】
攻撃防御ノード２は、前述した中継部２０を有する。中継部２０は、パケットの送信および受信を行う送受信部２０ａと、攻撃検知ノード３から通知されるフィルタリングルールを中継部２０に設定するフィルタリング設定部２０ｂと、攻撃検知ノード３から通知されるフィルタリングルールに従ってパケットを削除するフィルタリング部２０ｃとを有する。
【００７９】
攻撃検知ノード３は、前述した中継部３０と、ログ記憶部３６と、攻撃検知部３７と、ルール決定部３８とを有する。中継部３０は、パケットの送信および受信を行う送受信部３０ａと、サーバ１に中継したパケットの情報をログに記録するログ記録部３０ｂとを有する。ログ記憶部３６は、中継部３０がサーバ１に中継したパケットの情報を含むログを記憶すると共に、攻撃検知部３７が攻撃を検知する際に使用する各種情報を記憶する。攻撃検知部３７は、ログ記憶部３６に記憶されているログ等に基づいて、送信元のIPアドレスの詐称による攻撃を検知する。ルール決定部３８は、攻撃検知部３７によって攻撃が検知された場合に、その攻撃の防御を行うためのフィルタリングルールを決定する。
【００８０】
次に、本実施形態における攻撃検知・防御方法を説明する。図１０に示すように、サーバ１ａ〜１ｃ、攻撃防御ノード２ａ〜２ｃ、攻撃検知ノード３ａ〜３ｂ、管理ノード４、およびクライアント５ａ〜５ｅが存在する場合を例として説明を行う。クライアント５ａ，５ｂ，５ｃ，５ｄ，５ｅのそれぞれの本来のIPアドレスは10.0.0.1、10.0.0.2、20.0.0.1、30.0.0.1、30.0.0.2であるものとする。
【００８１】
本実施形態では、クライアント５からサーバ１の仮想IPアドレス宛てに送信されるパケットが、クライアント５とネットワークとの接続点の位置に応じた攻撃防御ノード２によって受信されるようネットワーク上の経路が構築されている。図１０に示す例では、攻撃検知ノード２ａとクライアント５ａ，５ｂが、同一のISP等によって管理される第１のネットワークに所属し、攻撃検知ノード２ｂとクライアント５ｃが、同一のISP等によって管理される第２のネットワークに所属し、攻撃検知ノード２ｃとクライアント５ｄ，５ｅが、同一のISP等によって管理される第３のネットワークに所属していることを想定している。このため、クライアント５ａ，５ｂが送信したパケットは攻撃防御ノード２ａによって受信され、クライアント５ｃが送信したパケットは攻撃防御ノード２ｂによって受信され、クライアント５ｄ，５ｅが送信したパケットは攻撃防御ノード２ｃによって受信される。
【００８２】
クライアント５がIPアドレスを詐称していない場合、各々の攻撃防御ノード２が中継するパケットの送信元のIPアドレスは、各々の攻撃防御ノード２に対応した一定のIPアドレス範囲に収まる。言い換えると、クライアント５がIPアドレスを詐称していない場合、各々の攻撃防御ノード２は、各々に対応した一定のIPアドレス範囲に対応するネットワークを経由したパケットのみを受信する。
【００８３】
攻撃検知ノード３は、攻撃防御ノード２によって中継されたパケットを受信した際、そのパケットの送信元のIPアドレスに基づいて、そのパケットを中継した攻撃防御ノード２の識別子（以下、ノード識別子と記載）と、その攻撃防御ノード２に対応するIPアドレス範囲の識別子（以下、ネットワーク識別子と記載）と、パケットの受信時刻とを関連付けたプロファイル（通信履歴情報）を生成し、記憶する。例えば、図１１に示すように、攻撃検知ノード３ａにおいて、クライアント５ａ，５ｃ，５ｄからのパケットが受信された場合、以下のようなプロファイルが生成される。
【００８４】
攻撃検知ノード３ａは、クライアント５ａからのパケットを受信したので、クライアント５ａのIPアドレス10.0.0.1に基づいて、このパケットを中継した攻撃防御ノード２ａに対応するネットワーク識別子（図１１に示す例ではネットワークプレフィックス）が10.0.0.0/24であることを検知する。したがって、攻撃検知ノード３ａは、攻撃防御ノード２ａのノード識別子（図１１に示す例では２ａ）と、ネットワーク識別子（10.0.0.0/24）と、クライアント５ａからのパケットを受信した時刻（図１１に示す例ではＴａ）とを関連付けたプロファイルを生成する。攻撃検知ノード３ａは、クライアント５ｃ，５ｄからもパケットを受信したので、同様にしてプロファイルを生成する。図１１には、上記のプロファイルを含むプロファイル情報Ｐ１が示されている。
【００８５】
続いて、図１２に示すように、クライアント５ｄがIPアドレスを詐称してサーバ１ａ宛のパケットを送信したとする。詐称後のクライアント５ｄのIPアドレスを10.0.0.5とする。クライアント５ｄはIPアドレスを詐称しているが、ネットワークとの接続点の位置が変化していないので、クライアント５が送信したパケットは攻撃防御ノード２ｃによって中継され、攻撃検知ノード３ａによって受信される。このとき、攻撃検知ノード３ａは、上記と同様に、攻撃防御ノード２ｃのノード識別子（図１２に示す例では２ｃ）と、ネットワーク識別子（10.0.0.0/24）と、クライアント５ｄからのパケットを受信した時刻（図１１に示す例ではＴｄ）とを関連付けたプロファイルを生成する。図１２には、上記のプロファイルを含むプロファイル情報Ｐ２が示されている。
【００８６】
図１２のプロファイル情報Ｐ２が示すように、同一のネットワーク識別子（10.0.0.0/24）に関して、ノード識別子が異なる２つのプロファイル（「２ａ：10.0.0.0/24：Ｔａ」と「２ｃ：10.0.0.0/24：Ｔｄ」）が存在している。つまり、時刻Ｔａの時点では、このネットワーク識別子（10.0.0.0/24）に対応するIPアドレスを有するクライアント５からのパケットは攻撃防御ノード２ａによって受信されていたが、時刻Ｔａよりも後の時刻Ｔｄの時点では、同じネットワーク識別子（10.0.0.0/24）に対応するIPアドレスを有するクライアント５からのパケットが、攻撃防御ノード２ａとは異なる攻撃防御ノード２ｃによって中継されている。このように、同一のネットワーク識別子に関するプロファイルのノード識別子が変化した場合、攻撃検知ノード３は、送信元のIPアドレスが詐称されており、送信元のIPアドレスの詐称による攻撃が発生したと判断する。
【００８７】
本実施形態では、送信元のIPアドレスの詐称による攻撃が検知された場合、攻撃に利用されたIPアドレスに対応するネットワーク識別子に対応するIPアドレスを送信元とするパケットを棄却するというポリシーに従って、パケットのフィルタリングが行われる。図１２に示す例では、IPアドレス10.0.0.5が攻撃に利用されたと判断され、このIPアドレス10.0.0.5を送信元とするパケットを中継した攻撃防御ノード２ｃと、このIPアドレス10.0.0.5に対応するネットワーク識別子に対応する攻撃防御ノード２ａとにおいて、このIPアドレス10.0.0.5に対応するネットワーク識別子10.0.0.0/24とネットワークプレフィックスが一致するIPアドレスを送信元とするパケットが棄却される。
【００８８】
攻撃検知ノード３のログ記憶部３６は、前述したログのほか、攻撃検知部３７が攻撃を検知する際に使用する情報であるプロファイル情報とネットワーク情報を記憶する。プロファイル情報については上述した通りである。ネットワーク情報は、ネットワーク（インターネット）上の全てのIPアドレス（000.000.000.000〜255.255.255.255）からなるIPアドレス空間を複数のIPアドレス範囲に分類（分割）したときの各々のIPアドレス範囲に対応するネットワーク識別子の情報を含む。
【００８９】
図１３はネットワーク情報の一例を示している。本実施形態のネットワーク情報を提供するWebサービスが既知であり、そのWebサービスを提供するサーバからネットワーク情報を受信することが可能である。図１３に示す例では、ネットワーク識別子としてネットワークプレフィックスＩ１が記録されている。攻撃検知部３７は、攻撃検知ノード３で受信されたパケットの送信元のIPアドレスとネットワークプレフィックスＩ１との各値を上位のオクテット（8ビットの値）から順にオクテット単位で比較する。攻撃検知部３７は、最上位のオクテットの値が一致し、かつアドレス値の最上位側から見て値が一致する桁数が最大のネットワークプレフィックスＩ１を選択する。例えば、攻撃検知ノード３で受信されたパケットの送信元のIPアドレスが10.0.0.1である場合、ネットワークプレフィックス10.0.0.0/24が選択される。
【００９０】
ネットワーク識別子としてAS番号を使用することも可能である。図１３に示すパス情報Ｉ２の末尾の番号がAS番号である。上記と同様にして、攻撃検知ノード３で受信されたパケットの送信元のIPアドレスに対応するネットワークプレフィックスＩ１（例えば10.0.0.0/24）を選択し、そのネットワークプレフィックスＩ１に関連付けられたAS番号（例えば7667）を選択すれば、このAS番号がネットワーク識別子となる。
【００９１】
同一のネットワーク識別子に対応する攻撃防御ノード２が２台以上あると、上記の攻撃検知方法では、送信元のIPアドレスの詐称による攻撃を誤検知する可能性がある。このため、１つのネットワーク識別子に対して１台の攻撃防御ノード２のみが対応するように攻撃防御ノード２を設置することが望ましい。以下の説明では、同一のネットワーク識別子に対応する攻撃防御ノード２が２台以上設置されていないことを前提とする。
【００９２】
上記の説明が、本実施形態における攻撃検知・防御方法の説明である。なお、上記の説明では、説明を簡略化するため、攻撃防御ノード２の加入や脱退に伴うDHTネットワークの構成変更を考慮していない。DHTネットワークの構成変更が発生すると、上述したプロファイルが変化する場合があるため、この変化を送信元のIPアドレスの詐称による攻撃として誤検知する可能性がある。以下では、この誤検知を低減した攻撃検知・防御方法を説明する。
【００９３】
図１４は、サーバ１に対する攻撃の検知と防御時のシーケンスを示している。攻撃検知ノード３においてログ記録部３０ｂは、送受信部３０ａが攻撃防御ノード２からのパケットをサーバ１に中継した際に、そのパケットからIPアドレス等の情報を取得し、ログ記憶部３６内のログに追加する。図１５は、１パケット分のログの構造を示している。攻撃防御ノード２でカプセル化されたパケットに付加されているIPヘッダの情報と、カプセル解除したパケットのIPヘッダから、パケットを送信したクライアント５のIPアドレス、パケットの宛先であるサーバ１の仮想IPアドレス、パケットを中継した攻撃防御ノード２のIPアドレスを取得することができる。これらと攻撃検知ノード３のIPアドレスおよびパケットの受信時刻がログに記録される。
【００９４】
攻撃検知部３７はログ記憶部３６内のログ等に基づいて、攻撃防御ノード２からサーバ１へのトラヒックに関して、送信元のIPアドレスの詐称による攻撃が発生したか否かの判定を行う（ステップＳ８００）。攻撃検知部３７によって攻撃が発生したと判定された場合、すなわち攻撃が検知された場合、ルール決定部３８はフィルタリングルールを決定すると共に、フィルタリングを行う攻撃防御ノード２を決定する。ルール決定部３８は、決定したフィルタリングルールを通知するルール情報を生成し、フィルタリングを行う攻撃防御ノード２を指定する情報と共にルール情報を中継部３０に通知する（ステップＳ８１０）。
【００９５】
中継部３０の送受信部３０ａは、ルール決定部３８によって指定された攻撃防御ノード２へルール情報を送信する（ステップＳ８２０）。攻撃防御ノード２において、送受信部２０ａは攻撃検知ノード３からのルール情報を受信する。フィルタリング設定部２０ｂは、ルール情報が示すフィルタリングルールに従って、特定の条件を満たすパケットを削除するようにフィルタリング部２０ｃにフィルタリングの設定を行う（ステップＳ８２０）。これ以降、フィルタリング部２０ｃは、設定された条件に従って、クライアント５から受信したパケットを削除する。送受信部２０ａは、削除されたパケットを送信しない。
【００９６】
次に、ステップＳ８００において、送信元のIPアドレスの詐称による攻撃を判定する処理の詳細を説明する。図１６は、ステップＳ８００における処理の詳細を示している。まず、攻撃検知部３７は、ログ記憶部３６内のログに新たにパケットの情報が追加されたか否かを判定することにより、攻撃検知ノード３で新たにパケットが受信されたか否かを判定する（ステップＳ９００）。ログ記憶部３６内のログに新たにパケットの情報が追加されていない場合、すなわち攻撃検知ノード３で新たにパケットが受信されていない場合、再度ステップＳ９００の処理が行われる。
【００９７】
また、ログ記憶部３６内のログに新たにパケットの情報が追加された場合、すなわち攻撃検知ノード３で新たにパケットが受信された場合、攻撃検知部３７は、ログにおいて新たに追加されたパケットの情報から、パケットを中継した攻撃防御ノード２のIPアドレスとパケットの送信元のIPアドレスとパケットの受信時刻とを抽出する（ステップＳ９０５）。抽出した攻撃防御ノード２のIPアドレスはノード識別子として使用される。
【００９８】
続いて、攻撃検知部３７は、ログ記憶部３６内のネットワーク情報に基づいて、ステップＳ９０５で抽出した送信元のIPアドレスに対応するネットワーク識別子を選択する。攻撃検知部３７は、選択したネットワーク識別子と、ステップＳ９０５で抽出したノード識別子とパケットの受信時刻とを含むプロファイル（通信履歴情報）を生成し、プロファイル情報としてログ記憶部３６に格納する（ステップＳ９１０）。以下では、ステップＳ９１０で生成した最新のプロファイルのノード識別子をＭとし、ネットワーク識別子をＮとする。
【００９９】
続いて、攻撃検知部３７は、ログ記憶部３６内のプロファイル情報に含まれるプロファイルのうち、ステップＳ９１０で生成した最新のプロファイルと、それ以外の過去のプロファイル（最新のプロファイルのパケット受信時刻よりも古いパケット受信時刻を含むプロファイル）とを比較する。そして、攻撃検知部３７は、最新のプロファイルを除いた過去のプロファイルの中に、最新のプロファイルのノード識別子Ｍとノード識別子が一致し、かつ最新のプロファイルのネットワーク識別子Ｎとネットワーク識別子が一致するプロファイルがあるか否かを判定する（ステップＳ９１５）。
【０１００】
最新のプロファイルのノード識別子Ｍとノード識別子が一致し、かつ最新のプロファイルのネットワーク識別子Ｎとネットワーク識別子が一致するプロファイルがある場合、攻撃検知部３７は、攻撃が発生していないと判断する（ステップＳ９３５）。この場合、ルール決定部３８にサーバ１の仮想IPアドレスは通知されない。続いて、処理はステップＳ９００に戻る。
【０１０１】
また、最新のプロファイルのノード識別子Ｍとノード識別子が一致し、かつ最新のプロファイルのネットワーク識別子Ｎとネットワーク識別子が一致するプロファイルがない場合、攻撃検知部３７は、最新のプロファイルを除いた過去のプロファイルの中に、最新のプロファイルのネットワーク識別子Ｎとネットワーク識別子が一致するプロファイルがあるか否かを判定する（ステップＳ９２０）。
【０１０２】
最新のプロファイルのネットワーク識別子Ｎとネットワーク識別子が一致するプロファイルがない場合、処理はステップＳ９３５に進み、攻撃が発生していないと判断される。また、最新のプロファイルのネットワーク識別子Ｎとネットワーク識別子が一致するプロファイルがある場合（この場合、プロファイル間でノード識別子は異なる）、同じネットワーク識別子に対応するIPアドレスを有するクライアント５からのパケットが、異なる時点で異なる攻撃防御ノード２よって中継されているため、送信元のIPアドレスの詐称による攻撃が発生している可能性がある。以下では、最新のプロファイルのネットワーク識別子Ｎとネットワーク識別子が一致するプロファイルのノード識別子をＸとする。
【０１０３】
この場合、攻撃防御ノード２の加入や脱退によりプロファイルが変化している可能性もあるため、攻撃防御ノード２の状態の確認が行われる（ステップＳ９２５）。より具体的には、攻撃検知部３７は、攻撃防御ノード２の状態を管理ノード４に確認する指示を中継部３０へ出力する。この指示には、攻撃防御ノード２のIPアドレスであるノード識別子Ｍとノード識別子Ｘが含まれる。中継部３０の送受信部３０ａは、ノード識別子Ｍとノード識別子Ｘを含み、攻撃防御ノード２の状態の確認を依頼する状態確認依頼メッセージを管理ノード４へ送信する。
【０１０４】
管理ノード４のノード管理部４３は状態確認依頼メッセージを受信すると、ノードリスト記憶部４４からノードリストおよび脱退ノードリストを読み出す。ノード管理部４３は、ノードリストおよび脱退ノードリストにおいて、受信した状態確認依頼メッセージに含まれるノード識別子Ｍ、ノード識別子Ｘと同一のIPアドレスをそれぞれ検索する。ノード管理部４３は、検索の結果に基づいて、攻撃防御ノード２の状態を回答する状態回答メッセージを生成し、状態確認依頼メッセージの送信元である攻撃検知ノード３へ送信する。
【０１０５】
ノード識別子Ｍまたはノード識別子Ｘと一致するIPアドレスがノードリストにあった場合、状態回答メッセージには、そのIPアドレスと、ノードが加入している（DHTネットワークに参加中である）ことを示す情報と、ノード加入時刻との組合せが含まれる。また、ノード識別子Ｍまたはノード識別子Ｘと一致するIPアドレスが脱退ノードリストにあった場合、状態回答メッセージには、そのIPアドレスと、ノードが脱退している（DHTネットワークから離脱している）ことを示す情報と、ノード脱退時刻との組合せが含まれる。
【０１０６】
ノード識別子Ｘを有する攻撃防御ノード２に関しては、ノードが脱退している場合と参加中の場合との両方がある。これに対して、ノード識別子Ｍを有する攻撃防御ノード２に関しては、この攻撃防御ノード２によって中継されたパケットが攻撃検知ノード３で受信されているため（ステップＳ９００〜Ｓ９１５）、ノードは脱退しておらず参加中であることを想定している。したがって、ノード識別子Ｍを有する攻撃防御ノード２に関しては、そのIPアドレスと、ノードが加入していることを示す情報と、ノード加入時刻との組合せが状態回答メッセージに含まれるものとする。
【０１０７】
攻撃検知ノード３の送受信部３０ａは状態回答メッセージを受信すると、受信した状態回答メッセージを攻撃検知部３７へ出力する。攻撃検知部３７は、状態回答メッセージに含まれる情報を参照する。以上の処理により、攻撃防御ノード２の状態の確認が行われる。
【０１０８】
ステップＳ９２５に続いて、攻撃検知部３７は、ノード識別子Ｘと一致するIPアドレスと組み合わされているノードの状態の情報がノードの脱退を示しているか否か（すなわちノード識別子Ｘを有する攻撃防御ノード２が脱退しているか否か）を判定する（ステップＳ９３０）。ノード識別子Ｘと一致するIPアドレスと組み合わされた情報がノードの脱退を示している場合、ノード識別子Ｘを有する攻撃防御ノード２の脱退により、この攻撃防御ノード２によって受信されていたパケットが、ノード識別子Ｍを有する攻撃防御ノード２によって受信されるようになったと考えられる。この場合、処理はステップＳ９３５に進み、攻撃は発生していないと判断される。
【０１０９】
また、ノード識別子Ｘと一致するIPアドレスと組み合わされた情報がノードの脱退ではなくノードの加入を示している場合、攻撃検知部３７は、状態回答メッセージに含まれる、ノード識別子Ｍを有する攻撃防御ノード２のノード加入時刻と、ノード識別子Ｘおよびネットワーク識別子Ｎを含むプロファイルのパケット受信時刻とを比較し、ノード加入時刻がパケット受信時刻よりも後であるか否かを判定する（ステップＳ９４０）。
【０１１０】
図１７は、ステップＳ９４０における判定に関係する場合を示している。図１７において、Ｔｍは、ノード識別子Ｍを有する攻撃防御ノード２（以下、攻撃防御ノード２ｍと記載）のノード加入時刻を示し、Ｔｘは、ノード識別子Ｘを有する攻撃防御ノード２（以下、攻撃防御ノード２ｘと記載）のノード加入時刻を示す。また、Ｔｐｍは、ノード識別子Ｍとネットワーク識別子Ｎを含むプロファイルのパケット受信時刻（すなわち攻撃防御ノード２ｍによって中継されたパケットの攻撃検知ノード３における受信時刻）を示し、Ｔｐｘは、ノード識別子Ｘとネットワーク識別子Ｎを含むプロファイルのパケット受信時刻（すなわち攻撃防御ノード２ｘによって中継されたパケットの攻撃検知ノード３における受信時刻）を示す。
【０１１１】
図１７（ａ）では、攻撃防御ノード２ｘがDHTネットワークに加入した時刻Ｔｘ以降、ネットワーク識別子Ｎに対応するIPアドレスを有するクライアント５からのパケットは攻撃防御ノード２ｘで中継されていることが分かる（時刻Ｔｘ）。しかし、攻撃防御ノード２ｍがDHTネットワークに加入した時刻Ｔｍ以降、ネットワーク識別子Ｎに対応するIPアドレスを有するクライアント５からのパケットは攻撃防御ノード２ｍで中継されていることが分かる（時刻Ｔｐｍ）。図１７（ａ）の場合、攻撃防御ノード２ｍの加入によって、ネットワーク識別子Ｎに対応する攻撃防御ノード２が変化しているため、攻撃は発生していないと判定される。
【０１１２】
図１７（ｂ）では、攻撃防御ノード２ｘがDHTネットワークに加入した時刻Ｔｘ以降、ネットワーク識別子Ｎに対応するIPアドレスを有するクライアント５からのパケットは攻撃防御ノード２ｘで中継されていることが分かる（時刻Ｔｐｘ）。しかし、ネットワーク識別子Ｎに対応するIPアドレスを有するクライアント５からのパケットが攻撃防御ノード２ｘで中継された時刻Ｔｐｘよりも後の時刻Ｔｐｍでは、攻撃防御ノード２ｘがDHTネットワークに加入した時刻Ｔｘよりも前にDHTネットワークに加入している攻撃防御ノード２ｍで同様のパケットが中継されていることが分かる。攻撃防御ノード２ｘは脱退していないので、ネットワーク識別子Ｎに対応するIPアドレスを有するクライアント５からのパケットは時刻Ｔｐｘ以降も攻撃防御ノード２ｘで中継されるはずである。したがって、図１７（ｂ）の場合、ネットワーク識別子Ｎに対応するIPアドレスを詐称に使用したクライアント５からのパケットが攻撃防御ノード２ｍで中継されたと考えられるので、攻撃が発生していると判定される。
【０１１３】
図１７（ｃ）では、時刻Ｔｘで攻撃防御ノード２ｘがDHTネットワークに加入した後、時刻Ｔｍで攻撃防御ノード２ｍがDHTネットワークに加入していることが分かる。さらに、時刻Ｔｍよりも後の時刻Ｔｐｘでは、ネットワーク識別子Ｎに対応するIPアドレスを有するクライアント５からのパケットが攻撃防御ノード２ｘで中継され、時刻Ｔｐｘよりも後の時刻Ｔｐｍでは、ネットワーク識別子Ｎに対応するIPアドレスを有するクライアント５からのパケットが攻撃防御ノード２ｍで中継されていることが分かる。
【０１１４】
攻撃防御ノード２ｘも攻撃防御ノード２ｍも脱退してなく、クライアント５がIPアドレスを詐称していない場合、ネットワーク識別子Ｎに対応するIPアドレスを有するクライアント５からのパケットは攻撃防御ノード２ｘと攻撃防御ノード２ｍのうちの一方のみで中継されなければならない。したがって、図１７（ｃ）の場合、攻撃防御ノード２ｘで中継されたパケットと、攻撃防御ノード２ｍで中継されたパケットのうちの一方は、送信元のIPアドレスを詐称した攻撃のパケットだと考えられるので、攻撃が発生していると判定される。
【０１１５】
ステップＳ９４０において、ノード加入時刻がパケット受信時刻よりも後である場合（図１７（ａ）の場合）、処理はステップＳ９３５に進み、攻撃が発生していないと判断される。また、ノード加入時刻がパケット受信時刻よりも前である場合（図１７（ｂ）、（ｃ）の場合）、攻撃検知部３７は、攻撃が発生したと判断し、ノード識別子Ｍおよびノード識別子Ｘに相当する２台の攻撃防御ノード２のIPアドレスとネットワーク識別子Ｎとをルール決定部３８に通知する（ステップＳ９４５）。
【０１１６】
続いて、ルール決定部３８は、ネットワーク識別子Ｎに対応するIPアドレス範囲に含まれるIPアドレスを有するクライアント５からのパケットを棄却するフィルタリングルールを示すルール情報を生成し、このルール情報と、攻撃検知部３７から通知された２台の攻撃防御ノード２のIPアドレスとを中継部３０へ出力する（ステップＳ９５０）。
【０１１７】
中継部３０の送受信部３０ａは、ルール決定部３８から出力されたIPアドレスを有する２台の攻撃防御ノード２へ、ルール決定部３８から出力されたルール情報を送信する（ステップＳ９５５）。このルール情報を受信した攻撃防御ノード２のフィルタリング設定部２０ｂは、ルール情報が示すIPアドレス範囲に含まれるIPアドレスを送信元とするパケットを削除するようにフィルタリング部２０ｃにフィルタリングの設定を行う。フィルタリング部２０ｃは、送受信部２０ａが受信したパケットの送信元であるクライアント５のIPアドレスが、設定されたIPアドレス範囲に含まれる場合に、受信したパケットを削除する。
【０１１８】
上述したように、本実施形態によれば、攻撃検知ノード３においてパケットが受信されたときに、このパケットの情報から生成したプロファイルと、過去に生成したプロファイルとを比較することによって、送信元のIPアドレスによる攻撃を検知し、サーバ１を攻撃から防御することができる。より具体的には、最新のプロファイルに含まれるネットワーク識別子と、過去のプロファイルに含まれるネットワーク識別子とが同一であり、かつ最新のプロファイルに含まれるノード識別子と、過去のプロファイルに含まれるノード識別子とが異なる場合（図１６のステップＳ９２０でＹＥＳの場合）に、送信元のIPアドレスの詐称による攻撃を検知し、サーバ１を攻撃から防御することができる。本実施形態は、既存の通信機器を置換することなく、少数の攻撃防御ノード２と攻撃検知ノード３をネットワークに追加することで実現することが可能である。
【０１１９】
また、攻撃防御ノード２の加入や脱退の状態に関する情報を管理ノード４から取得し、取得した情報に基づいて攻撃の検知を行うことによって、攻撃防御ノード２の加入や脱退に伴うプロファイルの変化を検知することによる攻撃の誤検知を低減することができる。
【０１２０】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【０１２１】
１・・・サーバ、２・・・攻撃防御ノード、３・・・攻撃検知ノード、４・・・管理ノード、５・・・クライアント、１０・・・サーバアプリケーション、１１，３１・・・サーバ公開部、２０，３０・・・中継部、２０ａ，３０ａ・・・送受信部、２０ｂ・・・フィルタリング設定部、２０ｃ・・・フィルタリング部、２１，３２・・・DHT管理部、２２，３３・・・DHT記憶部、２３，３４・・・広告部、３０ｂ・・・ログ記録部、３５・・・サーバ記憶部、３６・・・ログ記憶部、３７・・・攻撃検知部、３８・・・ルール決定部、４０・・・仮想IPアドレス記憶部、４１・・・アドレス管理部、４２・・・設定情報記憶部、４３・・・ノード管理部、４４・・・ノードリスト記憶部、５０・・・クライアントアプリケーション
【図１】
2012186520.tif 000003
【図２】
2012186520.tif 000004
【図３】
2012186520.tif 000005
【図４】
2012186520.tif 000006
【図５】
2012186520.tif 000007
【図６】
2012186520.tif 000008
【図７】
2012186520.tif 000009
【図８】
2012186520.tif 000010
【図９】
2012186520.tif 000011
【図１０】
2012186520.tif 000012
【図１１】
2012186520.tif 000013
【図１２】
2012186520.tif 000014
【図１３】
2012186520.tif 000015
【図１４】
2012186520.tif 000016
【図１５】
2012186520.tif 000017
【図１６】
2012186520.tif 000018
【図１７】
2012186520.tif 000019
【図１８】
2012186520.tif 000020