JP2012186519A - 通信システム - Google Patents
通信システム Download PDFInfo
- Publication number
- JP2012186519A JP2012186519A JP2011046190A JP2011046190A JP2012186519A JP 2012186519 A JP2012186519 A JP 2012186519A JP 2011046190 A JP2011046190 A JP 2011046190A JP 2011046190 A JP2011046190 A JP 2011046190A JP 2012186519 A JP2012186519 A JP 2012186519A
- Authority
- JP
- Japan
- Prior art keywords
- node
- server
- attack
- packet
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】正規のトラヒックへの影響を抑えつつ、サーバを攻撃から防御することができる通信システムを提供する。
【解決手段】クライアント5からサーバ1の仮想IPアドレス宛てに送信されるパケットは、攻撃防御ノード2および攻撃検知ノード3をこの順に経由してサーバ1に到達する。攻撃検知ノード3は、特定のサーバ1への攻撃が検知された場合に、特定のサーバ1宛てのパケットに基づいて、パケットを送信したクライアント5毎にトラヒック量を検知し、検知したクライアント5毎のトラヒック量を量順に並べたときの多いほうから順に1番目からM番目までのトラヒック量に基づいて、攻撃検知ノード3に適用するフィルタリングルールを決定する。
【選択図】図1
【解決手段】クライアント5からサーバ1の仮想IPアドレス宛てに送信されるパケットは、攻撃防御ノード2および攻撃検知ノード3をこの順に経由してサーバ1に到達する。攻撃検知ノード3は、特定のサーバ1への攻撃が検知された場合に、特定のサーバ1宛てのパケットに基づいて、パケットを送信したクライアント5毎にトラヒック量を検知し、検知したクライアント5毎のトラヒック量を量順に並べたときの多いほうから順に1番目からM番目までのトラヒック量に基づいて、攻撃検知ノード3に適用するフィルタリングルールを決定する。
【選択図】図1
Description
本発明は、仮想IPアドレスが割り当てられたサーバと、サーバ宛てのパケットを中継する中継端末とを有する通信システムに関する。
ネットワーク上の通信装置が受ける攻撃の一つに分散DoS(Denial of Service)攻撃がある。分散DoS攻撃とは、攻撃者となる複数の攻撃クライアントが結託して、攻撃対象のサーバに対して、サーバの処理能力を超える多量の不正パケットを送信することで、サーバが提供するサービスの停止を招く攻撃である。
従来、分散DoS攻撃の検知と防御を行う手法として、保護対象のサーバの近傍でサーバ宛のトラヒックを監視し、予め設定した閾値を越えるパケットの到来を検知した場合や、パケット量の急激な変動を検知した場合に、サーバ宛てのトラヒックを遮断する手法がある(例えば、特許文献1参照)。
分散DoS攻撃の攻撃クライアントに近い上流側では、観測される不正パケットの量が少なく、正規なパケットとの見極めが困難であることから、分散DoS攻撃に対する従来の防御手法では、攻撃対象のサーバの近傍でサーバ宛てのトラヒックを全て遮断せざるを得ず、これによって正規のトラヒックも遮断されてしまうため、正規のトラヒックへの影響が大きかった。また、攻撃クライアントを的確に把握できたとしても、ファイアウォールに設定可能な防御ルールの数に制限があることから、攻撃クライアントの数が多数の場合も、サーバ宛のトラヒックを全体的に遮断せざるを得なかった。
本発明は、上述した課題に鑑みてなされたものであって、正規のトラヒックへの影響を抑えつつ、サーバを攻撃から防御することができる通信システムを提供することを目的とする。
本発明は、上記の課題を解決するためになされたもので、通信端末から、実IPアドレスおよび仮想IPアドレスを有するサーバの前記仮想IPアドレス宛てに送信されるパケットを中継する複数の第1の中継端末と、前記第1の中継端末によって中継されたパケットを受信し、受信したパケットを前記仮想IPアドレスに対応した前記実IPアドレス宛てのパケットに変換し、前記サーバとの間で確立されたVPN接続により前記サーバへ変換後のパケットを送信する複数の第2の中継端末と、を備えた通信システムであって、前記第1の中継端末は、パケットを削除するルールを示すルール情報を前記第2の中継端末から受信する受信部と、前記第2の中継端末から受信された前記ルール情報が示すルールに従って、前記第1の中継端末で受信されたパケットを削除するフィルタリング部と、を有し、前記第2の中継端末は、前記サーバ宛てのトラヒック量を検知し、検知したトラヒック量に基づいて、前記サーバ毎に攻撃を検知する検知部と、前記検知部によって特定のサーバへの攻撃が検知された場合に、前記第2の中継端末で受信されたパケットのうち前記特定のサーバ宛てのパケットに基づいて、当該パケットを送信した前記通信端末毎にトラヒック量を検知し、検知した前記通信端末毎のトラヒック量を量順に並べたときの多いほうから順に1番目からM(M:自然数)番目までのトラヒック量に基づいて前記ルールを決定し、前記ルール情報を生成するルール決定部と、前記特定のサーバ宛てのパケットを中継した前記第1の中継端末へ前記ルール情報を送信する送信部と、を有することを特徴とする通信システムである。
また、本発明の通信システムにおいて、前記Mは、前記第1の中継端末で設定可能な前記ルールの数であることを特徴とする。
また、本発明の通信システムにおいて、前記ルール決定部は、前記特定のサーバ宛ての全てのトラヒック量と、前記1番目から前記M番目までのトラヒック量の合計とを比較した結果に基づいて前記ルールを決定することを特徴とする。
また、本発明の通信システムにおいて、前記ルール決定部は、前記1番目から前記M番目までのトラヒック量の合計を前記特定のサーバ宛ての全てのトラヒック量から減算した値が所定値以下である場合に、前記1番目から前記M番目までのトラヒック量に係るパケットを中継した前記第1の中継端末に設定する前記ルールとして、前記1番目から前記M番目までのトラヒック量に係るパケットを送信した前記通信端末からのパケットを削除するという前記ルールを決定することを特徴とする。
また、本発明の通信システムにおいて、前記ルール決定部は、前記1番目から前記M番目までの第1のトラヒック量の合計を前記特定のサーバ宛ての全てのトラヒック量から減算した値が所定値を超える場合に、前記第2の中継端末で受信されたパケットのうち前記特定のサーバ宛てのパケットに基づいて、当該パケットを中継した前記第1の中継端末毎にトラヒック量を検知し、検知した前記第1の中継端末毎のトラヒック量を量順に並べたときの多いほうから順に1番目からN(N:自然数)番目までの第2のトラヒック量の合計を前記特定のサーバ宛ての全てのトラヒック量から減算した値が所定値以下であれば、前記第1のトラヒック量に係るパケットを中継した前記第1の中継端末に設定する前記ルールとして、前記第2のトラヒック量に係るパケットを中継した前記第1の中継端末で受信される全てのパケットを削除するという前記ルールを決定することを特徴とする。
本発明によれば、通信端末からサーバの仮想IPアドレス宛てに送信されるパケットは、第1の中継端末および第2の中継端末をこの順に経由してサーバに到達する。パケットの転送経路上でよりサーバに近い第2の中継端末が攻撃の検知を行うことによって、より的確に攻撃を検知することが可能となる。また、パケットの転送経路上でより攻撃元の通信端末に近い第1の中継端末がパケットのフィルタリングを行うことによって、攻撃元の通信端末から送信されたパケットの転送によるネットワーク資源の消費をより抑えることが可能となる。さらに、第2の中継端末で検知された通信端末毎のトラヒック量を量順に並べたときの多いほうから順に1番目からM番目までのトラヒック量に基づいてルールを決定することによって、攻撃パケットの効率的なフィルタリングと、フィルタリングによる正規のトラヒックへの影響とのバランスをとったルールを決定することが可能となるので、正規のトラヒックへの影響を抑えつつ、サーバを攻撃から防御することができる。
以下、図面を参照し、本発明の実施形態を説明する。図1は、本発明の一実施形態による通信システムの構成を示している。本通信システムは、サーバを保護する機構を備えたオーバーレイネットワークを構成しており、サーバ1、攻撃防御ノード2(第1の中継端末)、攻撃検知ノード3(第2の中継端末)、管理ノード4、クライアント5(通信端末)を備える。図1に示す各装置の位置は、実際の物理ネットワーク上の位置とは必ずしも一致しない。
サーバ1は、FTP(File Transfer Protocol)サーバやWebサーバ等であり、所定のサービスを提供する。サーバ1には、実ネットワークで用いるIPアドレス(本明細書では実IPアドレスとする)と共に、仮想的なIPアドレス(本明細書では仮想IPアドレスとする)が割り当てられている。
攻撃防御ノード2は、クライアント5からサーバ1宛てに送信されるパケットを攻撃検知ノード3に中継する。また、攻撃防御ノード2は、サーバ1を攻撃から防御するためのパケットフィルタリングを行う。攻撃防御ノード2は、例えばISP(Internet Service Provider)毎のネットワークに設置されており、そのネットワーク内のクライアント5から送信されるパケットを中継する。
攻撃検知ノード3は、攻撃防御ノード2が中継したパケットをサーバ1に中継する。また、攻撃検知ノード3は、サーバ1に対する攻撃を検知する。管理ノード4は、サーバ1に対する仮想IPアドレスの割り当てと、攻撃防御ノード2および攻撃検知ノード3の状態を管理する。クライアント5は、例えばISP毎のネットワークに所属している。クライアント5がサーバ1の仮想IPアドレス宛てに送信したパケットは、ルーティングプロトコルに従って、クライアント5とネットワークとの接続点の位置に応じた攻撃検知ノード3に転送される。
サーバ1と攻撃検知ノード3との間ではVPN(Virtual Private Network)接続が確立される。これにより、サーバ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: Distributed Hash Table)を利用した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アドレスからSHA1(Secure Hash Algorithm 1)を用いて算出したハッシュ値とを関連付けて記憶する。DHTネットワークでは、この対応関係を示す情報は、サーバ1とVPN接続を確立している攻撃検知ノード3で管理されるとは限らず、DHTネットワークを構成する攻撃防御ノード2と攻撃検知ノード3のいずれかにおいて管理される。
広告部23は、サーバ1の仮想IPアドレス宛てのパケットが攻撃防御ノード2に届くように、ルーティングプロトコルの一種であるOSPF(Open Shortest Path First)やBGP(Border Gateway Protocol)に従って、仮想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管理部21(32)は、ノードリストの取得要求を示すノードリスト要求を管理ノード4へ送信する(ステップS100)。なお、管理ノード4のIPアドレスは既知であるものとする。管理ノード4においてノード管理部43はノードリスト要求を受信し、ノードリスト記憶部44内のノードリストにノードのIPアドレスが登録されているか否かを判定する(ステップS110)。
最初のノードが加入する場合、ノードリストにノードのIPアドレスが登録されていないため、管理ノード4は初期ノード起動処理が必要であると判定し、初期ノード起動処理の要求を示す初期ノード起動要求を、ノードリスト要求の送信元であるノードへ送信する(ステップS120)。初期ノード起動要求には、設定情報記憶部42内の設定情報に基づく仮想IPアドレスの範囲とエニーキャストアドレスの範囲が含まれる。
初期ノードにおいて、DHT管理部21(32)は、初期ノード起動要求を受信し、初期ノード起動処理を実行する(ステップS130)。具体的には、次に示すようなブートストラップノードの起動コマンドを実行する。
start-dhash --root dhash-a -j sure.lcs.mit.edu:10000 -p 10000 &
start-dhash --root dhash-a -j sure.lcs.mit.edu:10000 -p 10000 &
初期ノード起動処理の実行により、DHT記憶部22(33)には分散ハッシュテーブルが作成される。前述したように、このテーブルの構成要素は、サーバ1とVPN接続を確立している攻撃検知ノード3のIPアドレスと、サーバ1の仮想IPアドレスからSHA1を用いて算出したハッシュ値とのペアである。初期ノード起動処理が完了した時点では、テーブルにはこれらの情報は格納されていない。また、初期ノード起動処理が完了した時点では、DHTネットワークの全てのノード(1個)の情報を初期ノードが単体で管理している状態となる。
初期ノード起動処理の実行後、DHT管理部21(32)は、初期ノードが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管理部21(32)は、ノードリストの取得要求を示すノードリスト要求を管理ノード4へ送信する(ステップS200)。なお、管理ノード4のIPアドレスは既知であるものとする。管理ノード4においてノード管理部43はノードリスト要求を受信し、ノードリスト記憶部44内のノードリストにノードのIPアドレスが登録されているか否かを判定する(ステップS210)。
既に他のノードが加入している場合、ノードリストにノードのIPアドレスが登録されているため、管理ノード4は、ノードリスト要求の送信元であるノードへノードリストを送信する(ステップS220)。このとき、設定情報記憶部42内の設定情報に基づく仮想IPアドレスの範囲とエニーキャストアドレスの範囲がノードリストに付加される。新たに加入するノードにおいて、DHT管理部21(32)は、ノードリストを受信し、ノードリストに記載されているノードを対象としてノード加入処理を実行する(ステップS230)。具体的には、次に示すような既存ノードへの加入のコマンドを実行する。
start-dhash --root dhash-b -j sure.lcs.mit.edu:10000 &
start-dhash --root dhash-b -j sure.lcs.mit.edu:10000 &
ノード加入処理の実行により、DHT記憶部22(33)には分散ハッシュテーブルが作成される。ノード加入処理では、ノードリストに記載されたIPアドレスを有するノードと通信が行われ、DHTネットワークに加入するための設定が行われる。
ノード加入処理の実行後、DHT管理部21(32)は、新たにノードが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アドレスからSHA-1を用いて算出したハッシュ値である。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記憶部22(33)の分散ハッシュテーブルに保持するKeyとValueのペア(サーバ1の仮想IPアドレスと転送ノードのIPアドレスのペア)とは異なる。各ルーティングテーブルはDHT記憶部22(33)に保持されるものとする。
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アドレスを返す関数である。
ノードのIPアドレス=IPadress[next(Z)]、ただし、Z=(Node_ID+2i) mod2m、i=0〜m
上記の式のnext(Z)は、ハッシュ空間上でZから右回り(つまりノードIDが大きくなる方向)に見て次に存在するノードのIDを返す関数である。IPadress[X]は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記憶部22(33)の分散ハッシュテーブルに保持していたKeyとValueのペアのうち、ノード15が管理すべき部分に該当するKeyとValueのペアをノード18から受信し、DHT記憶部22(33)に記録する。ノード15は、ノード12に自身の加入を通知し、ノード12は、ノード15からの通知に基づいて、自身が保持しているSuccessorに記録されていたノード18のIPアドレスをノード15のIPアドレスに変更する。
図5は、DHTネットワークに加入しているノード(攻撃防御ノード2または攻撃検知ノード3)がDHTネットワークから脱退する場合のシーケンスを示している。DHTネットワークから脱退するノードにおいて、DHT管理部21(32)はノード脱退処理を実行する(ステップS300)。続いて、DHT管理部21(32)は、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記憶部22(33)内の分散ハッシュテーブルに登録する処理を行う(ステップS430)。具体的には、以下のような“put”コマンドを実行する。なお、(a)はハッシュ値を示し、(b)は攻撃検知ノードのIPアドレスを示す。
put <(a)> <(b)>
put <(a)> <(b)>
また、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関数によりnext(12)=13であるため、目的の情報を管理すべきノードがノード13であることを求める。これに基づき、DHT管理部32は、攻撃検知ノード3のIPアドレスとサーバ1の仮想IPアドレスのハッシュ値のペアを含み、ノード13の検索を依頼するメッセージを生成し、中継部30に渡す。
前述したFingertableの定義より、ノード0のFingertableに保持されるノードIDは、2(i=0,1[z=1,2])、6(i=2[z=4])、9(i=3[z=8])となる。ノード13のノードIDである13に関して、23<13<24であることから、ノード0は、i=3[z=8]のときのノードIDに対応するノード9にノード13の検索を依頼する。すなわち、中継部30はノード9宛てに上記のメッセージを送信する。
ノード9のFingertableに保持されるノードIDは、11(i=0,1[z=10,11])、13(i=2[z=13])、2(i=3[z=1])であることから、ノード9はノード13の情報を保持している。したがって、ノード9からノード13に、ノード0からのメッセージが転送される。ノード13において中継部20(30)はメッセージを受信し、DHT管理部21(32)に渡す。DHT管理部21は、メッセージに含まれる攻撃検知ノード3のIPアドレスとサーバ1の仮想IPアドレスのハッシュ値をDHT記憶部22(33)に設定する。
このように、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管理部21(33)は、メッセージに含まれるハッシュ値と一致するハッシュ値およびそれと関連付けられている攻撃検知ノード3のIPアドレスを分散ハッシュテーブルから削除する。
次に、サーバ1とクライアント5との通信について説明する。図8は、クライアント5がサーバ1と通信を行う際のシーケンスを示している。クライアント5は、例えばDNSサーバにサーバ1の名前解決を依頼し、その結果としてDNSサーバからサーバ1のIPアドレスを通知されることにより、サーバ1の仮想IPアドレス(IP_virtual)を取得することが可能である。クライアント5のクライアントアプリケーション50は、クライアント5(IP_client)を送信元とし、サーバ1(IP_virtual)を宛先とするパケットを送信する(ステップS600)。攻撃防御ノード2がIP_virtual宛ての経路を広告していることにより、クライアント5から送信されたパケットはクライアント5に最も近い攻撃防御ノード2に到着する。
攻撃防御ノード2の中継部20は、クライアント5からのパケットを受信し、受信したパケットに含まれるサーバ1の仮想IPアドレス(IP_virtual)をDHT管理部21に通知する。DHT管理部21は、この仮想IPアドレス(IP_virtual)のハッシュ値を算出し、このハッシュ値をKeyとして管理しているノードを検索する処理を行う(ステップS610)。
このとき、ステップS430の処理と同様にして検索が行われ、所望のノードにメッセージが転送される。メッセージを受信したノードにおいてDHT管理部21(33)は、メッセージに含まれるハッシュ値と一致するハッシュ値を分散ハッシュテーブルから検索し、一致したハッシュ値と関連付けられている攻撃検知ノード3のIPアドレスを取得する。DHT管理部21(33)は、取得したIPアドレスを通知するための応答メッセージを生成し、中継部20(30)に渡す。中継部20(30)は、検索を要求した攻撃防御ノード2へ応答メッセージを送信する。検索を要求した攻撃防御ノード2において中継部20はこの応答メッセージを受信し、所望の攻撃検知ノード3のIPアドレスを取得する。
中継部20は、クライアント5から受信したパケットをカプセル化する(ステップS620)。このカプセル化では、クライアント5からのパケットに対してIPヘッダが付加される。このIPヘッダには、送信元のIPアドレスとして攻撃防御ノード2のIPアドレス(Rc)が記録され、宛先のIPアドレスとして攻撃検知ノード3のIPアドレス(Rs)が記録されている。したがって、クライアント5(IP_client)を送信元としサーバ1(IP_virtual)を宛先とするパケットが、カプセル化によって、攻撃防御ノード2(Rc)を送信元とし攻撃検知ノード3(Rs)を宛先とするパケットに変換される。中継部20は、カプセル化したパケットを攻撃検知ノード3へ送信する(ステップS630)。
攻撃検知ノード3の中継部30は、攻撃防御ノード2からのパケットを受信し、カプセル解除する(ステップS640)。このカプセル解除では、攻撃防御ノード2でパケットに付加されたIPヘッダが除去される。したがって、攻撃防御ノード2(Rc)を送信元とし攻撃検知ノード3(Rs)を宛先とするパケットが、カプセル解除によって、クライアント5(IP_client)を送信元としサーバ1(IP_virtual)を宛先とするパケットに変換される。
続いて、中継部30は、パケットに含まれるサーバ1の仮想IPアドレス(IP_virtual)をキーにしてサーバ記憶部35内の情報を検索し、サーバ1の仮想IPアドレス(IP_virtual)に対応する実IPアドレス(IP_real)を取得する(ステップS650)。さらに、中継部30は、ステップS640でカプセル解除したパケットをカプセル化する(ステップS660)。このカプセル化では、送信元のIPアドレスとして攻撃検知ノード3のIPアドレス(Rs)が記録され、宛先のIPアドレスとしてサーバ1の実IPアドレス(IP_real)が記録されたIPヘッダが付加される。したがって、カプセル解除されたパケットが、カプセル化によって、攻撃検知ノード3(Rs)を送信元としサーバ1(IP_real)を宛先とするパケットに変換される。中継部30は、カプセル化したパケットをサーバ1へ送信する(ステップS670)。
サーバ1のサーバアプリケーション10は攻撃検知ノード3からのパケットを受信し、適宜処理する(ステップS680)。なお、受信されたパケットは、ミドルウェアによってカプセル解除される(図示せず)。サーバアプリケーション10は、クライアント5への応答パケットを攻撃検知ノード3へ送信する(ステップS690)。この応答パケットは、サーバ1(IP_virtual)を送信元としクライアント5(IP_client)を宛先とするパケットに対して、カプセル化により、サーバ1(IP_virtual)を送信元とし攻撃検知ノード3(Rs)を宛先とするIPヘッダが付加されたものである。
攻撃検知ノード3の中継部30はサーバ1からのパケットを受信し、カプセル解除する(ステップS700)。このカプセル解除によって、サーバ1からのパケットは、サーバ1(IP_virtual)を送信元としクライアント5(IP_client)を宛先とするパケットに変換される。中継部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番目からm(m:自然数)番目までのパケット数の合計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番目からm(m:自然数)番目までのパケット数に係る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への攻撃パケットによる影響を最小限に低減することができる。
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
1・・・サーバ、2・・・攻撃防御ノード、3・・・攻撃検知ノード、4・・・管理ノード、5・・・クライアント、10・・・サーバアプリケーション、11,31・・・サーバ公開部、20,30・・・中継部、20a,30a・・・送受信部、20b・・・フィルタリング設定部、20c・・・フィルタリング部、21,32・・・DHT管理部、22,33・・・DHT記憶部、23,34・・・広告部、30b・・・ログ記録部、35・・・サーバ記憶部、36・・・ログ記憶部、37・・・攻撃検知部、38・・・ルール決定部、40・・・仮想IPアドレス記憶部、41・・・アドレス管理部、42・・・設定情報記憶部、43・・・ノード管理部、44・・・ノードリスト記憶部、50・・・クライアントアプリケーション
Claims (5)
- 通信端末から、実IPアドレスおよび仮想IPアドレスを有するサーバの前記仮想IPアドレス宛てに送信されるパケットを中継する複数の第1の中継端末と、
前記第1の中継端末によって中継されたパケットを受信し、受信したパケットを前記仮想IPアドレスに対応した前記実IPアドレス宛てのパケットに変換し、前記サーバとの間で確立されたVPN接続により前記サーバへ変換後のパケットを送信する複数の第2の中継端末と、
を備えた通信システムであって、
前記第1の中継端末は、
パケットを削除するルールを示すルール情報を前記第2の中継端末から受信する受信部と、
前記第2の中継端末から受信された前記ルール情報が示すルールに従って、前記第1の中継端末で受信されたパケットを削除するフィルタリング部と、
を有し、
前記第2の中継端末は、
前記サーバ宛てのトラヒック量を検知し、検知したトラヒック量に基づいて、前記サーバ毎に攻撃を検知する検知部と、
前記検知部によって特定のサーバへの攻撃が検知された場合に、前記第2の中継端末で受信されたパケットのうち前記特定のサーバ宛てのパケットに基づいて、当該パケットを送信した前記通信端末毎にトラヒック量を検知し、検知した前記通信端末毎のトラヒック量を量順に並べたときの多いほうから順に1番目からM(M:自然数)番目までのトラヒック量に基づいて前記ルールを決定し、前記ルール情報を生成するルール決定部と、
前記特定のサーバ宛てのパケットを中継した前記第1の中継端末へ前記ルール情報を送信する送信部と、
を有することを特徴とする通信システム。 - 前記Mは、前記第1の中継端末で設定可能な前記ルールの数であることを特徴とする請求項1に記載の通信システム。
- 前記ルール決定部は、前記特定のサーバ宛ての全てのトラヒック量と、前記1番目から前記M番目までのトラヒック量の合計とを比較した結果に基づいて前記ルールを決定することを特徴とする請求項2に記載の通信システム。
- 前記ルール決定部は、前記1番目から前記M番目までのトラヒック量の合計を前記特定のサーバ宛ての全てのトラヒック量から減算した値が所定値以下である場合に、前記1番目から前記M番目までのトラヒック量に係るパケットを中継した前記第1の中継端末に設定する前記ルールとして、前記1番目から前記M番目までのトラヒック量に係るパケットを送信した前記通信端末からのパケットを削除するという前記ルールを決定することを特徴とする請求項3に記載の通信システム。
- 前記ルール決定部は、前記1番目から前記M番目までの第1のトラヒック量の合計を前記特定のサーバ宛ての全てのトラヒック量から減算した値が所定値を超える場合に、前記第2の中継端末で受信されたパケットのうち前記特定のサーバ宛てのパケットに基づいて、当該パケットを中継した前記第1の中継端末毎にトラヒック量を検知し、検知した前記第1の中継端末毎のトラヒック量を量順に並べたときの多いほうから順に1番目からN(N:自然数)番目までの第2のトラヒック量の合計を前記特定のサーバ宛ての全てのトラヒック量から減算した値が所定値以下であれば、前記第1のトラヒック量に係るパケットを中継した前記第1の中継端末に設定する前記ルールとして、前記第2のトラヒック量に係るパケットを中継した前記第1の中継端末で受信される全てのパケットを削除するという前記ルールを決定することを特徴とする請求項3または請求項4に記載の通信システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011046190A JP2012186519A (ja) | 2011-03-03 | 2011-03-03 | 通信システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011046190A JP2012186519A (ja) | 2011-03-03 | 2011-03-03 | 通信システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012186519A true JP2012186519A (ja) | 2012-09-27 |
Family
ID=47016225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011046190A Withdrawn JP2012186519A (ja) | 2011-03-03 | 2011-03-03 | 通信システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012186519A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014112448A (ja) * | 2014-03-19 | 2014-06-19 | Ntt Communications Corp | アクセス制御装置、アクセス制御方法、およびアクセス制御プログラム |
JP2019047327A (ja) * | 2017-09-01 | 2019-03-22 | 日本電信電話株式会社 | 異常検知装置および異常検知方法 |
JP7369892B1 (ja) * | 2023-03-03 | 2023-10-26 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
WO2024185164A1 (ja) * | 2023-03-03 | 2024-09-12 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
-
2011
- 2011-03-03 JP JP2011046190A patent/JP2012186519A/ja not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014112448A (ja) * | 2014-03-19 | 2014-06-19 | Ntt Communications Corp | アクセス制御装置、アクセス制御方法、およびアクセス制御プログラム |
JP2019047327A (ja) * | 2017-09-01 | 2019-03-22 | 日本電信電話株式会社 | 異常検知装置および異常検知方法 |
JP7369892B1 (ja) * | 2023-03-03 | 2023-10-26 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
WO2024185164A1 (ja) * | 2023-03-03 | 2024-09-12 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6080313B2 (ja) | 仮想ネットワークを実装及び管理するシステム及び方法 | |
CN102845027B (zh) | 用于在diameter节点处提供优先级路由的方法、系统和装置 | |
Jen et al. | APT: A practical tunneling architecture for routing scalability | |
JP5757552B2 (ja) | コンピュータシステム、コントローラ、サービス提供サーバ、及び負荷分散方法 | |
WO2016094037A1 (en) | Stateful load balancing in a stateless network | |
RU2558624C2 (ru) | Устройство управления, система связи, способ связи и носитель записи, содержащий записанную на нем программу для связи | |
JP6364106B2 (ja) | DiameterシグナリングルータにおいてDiameterメッセージをルーティングするための方法、システムおよびコンピュータ読取可能媒体 | |
US9160648B2 (en) | Content-centric network and method of performing routing between domains therefor | |
WO2017012471A1 (zh) | 负载均衡处理方法及装置 | |
JP2012186519A (ja) | 通信システム | |
JP5966488B2 (ja) | ネットワークシステム、スイッチ、及び通信遅延短縮方法 | |
WO2017028391A1 (zh) | 虚拟网络通信的方法及装置 | |
JP2010193083A (ja) | 通信システムおよび通信方法 | |
JP4391960B2 (ja) | リソース管理装置、システムおよび方法 | |
Kambhampati et al. | Epiphany: A location hiding architecture for protecting critical services from DDoS attacks | |
JP2005005836A (ja) | ネットワーク及びサーバの負荷低減ルータ | |
US8811179B2 (en) | Method and apparatus for controlling packet flow in a packet-switched network | |
JP2012186520A (ja) | 通信システム | |
JP5022412B2 (ja) | 経路情報管理システム、経路情報管理方法、およびプログラム | |
JP2011193378A (ja) | 通信システム | |
JP2011193379A (ja) | 通信システム | |
JP6591619B1 (ja) | 通信管理装置、中継装置、通信システム、通信方法及びコンピュータプログラム | |
WO2009062429A1 (fr) | Procédé, nœud de réseau et système évitant des attaques dans un réseau p2p | |
Oesterle et al. | Challenges with BGPSec | |
Mahmoud et al. | Qualitative analysis of methods for circumventing malicious ISP blocking |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20140513 |