(57)【特許請求の範囲】
【請求項１】
パケット蓄積装置であって、
送受信間で通信用のセッションを確立して通信を行うとともに、前記セッションの切断用パケットの送信により前記セッションを切断して通信を終了するプロトコルに従って送信元との間でパケットを送受信する通信装置の監視結果において前記通信装置への攻撃が検知された場合に、前記通信装置宛のパケットを蓄積する蓄積部と、
前記通信装置への攻撃者が特定された場合に、前記蓄積部に蓄積された前記通信装置宛のパケットから、前記攻撃者からのパケットと、前記セッションの切断用パケット及び当該切断用パケットで切断されるセッションに係るパケットと、重複して蓄積されているパケットとを除いたパケットを前記通信装置宛に送信する送信部と、
前記通信装置への攻撃が検知された場合に、前記通信装置宛のパケットを中継する中継装置の出力先を前記パケット蓄積装置に切り替えて、前記中継装置から転送されてくる前記通信装置宛のパケットを前記蓄積部に蓄積する処理と、前記送信部による送信後に、前記中継装置で受信される前記通信装置宛のパケットのうち前記攻撃者からのパケットが破棄装置へ転送される一方で前記攻撃者以外からのパケットが前記通信装置へ転送されるように、前記中継装置の出力先を切り替える処理と、を行う制御部と、
を含むパケット蓄積装置。
【請求項２】
パケット蓄積装置が、
送受信間で通信用のセッションを確立して通信を行うとともに、前記セッションの切断用パケットの送信により前記セッションを切断して通信を終了するプロトコルに従って送信元との間でパケットを送受信する通信装置の監視結果において前記通信装置への攻撃が検知された場合に、前記通信装置宛のパケットを蓄積し、
前記通信装置への攻撃者が特定された場合に、前記蓄積部に蓄積された前記通信装置宛のパケットから、前記攻撃者からのパケットと、前記セッションの切断用パケット及び当該切断用パケットで切断されるセッションに係るパケットと、重複して蓄積されているパケットとを除いたパケットを前記通信装置宛に送信し、
前記通信装置への攻撃が検知された場合に、前記通信装置宛のパケットを中継する中継装置の出力先を前記パケット蓄積装置に切り替えて、前記中継装置から転送されてくる前記通信装置宛のパケットを前記蓄積部に蓄積し、
前記送信部による送信後に、前記中継装置で受信される前記通信装置宛のパケットのうち前記攻撃者からのパケットが破棄装置へ転送される一方で前記攻撃者以外からのパケットが前記通信装置へ転送されるように、前記中継装置の出力先を切り替える、
ことを含むパケット蓄積方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット蓄積装置，及びパケット蓄積方法に関する。
【背景技術】
【０００２】
サーバに対する不正攻撃の一つとして、ＤＤｏＳ攻撃（Distributed Denial of Service attack）がある。ＤＤｏＳ攻撃では、Internet Protocol(ＩＰ)ネットワーク上の複数
の場所に点在する端末から、サービスが稼働している特定のサーバに対して、同時に大量のパケットを送りつける。ＤＤｏＳ攻撃は、大量のパケット送信によりサーバのリソースが逼迫し、サーバがサービス不能になることを狙ってなされる。
【０００３】
不正攻撃を防止するために、攻撃対象となるサーバ宛のパケットが監視され、大量の攻撃用のパケット（以下、「攻撃パケット」という）を送りつけられているか、即ちサーバが攻撃を受けているかの検知を行う。攻撃が検知されると、パケットの中継装置に対し、サーバ宛のパケットをパケット破棄装置へ転送する旨の経路変更指示が与えられる。これにより、サーバへのパケットの到達が遮断される。従って、サーバのリソースが回復し、サーバはサービス処理を可能な状態となる。
【０００４】
その後、攻撃パケットの送信元が特定されると、パケット破棄装置への転送が設定されているサーバ宛のパケットのうち、攻撃パケットの送信元以外からのパケットをサーバへ転送させる経路変更（経路の着切り戻し）を行う。このような方法で、不正攻撃からサーバを守り、サービスの復旧を図る。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−４５６４９号公報
【特許文献２】特開２００４−２４８１８５号公報
【特許文献３】特開２００４−３０４７５２号公報
【特許文献４】特開２００６−３３１０１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した方法では、攻撃が検知されると、攻撃パケットの送信元（攻撃元）が特定されるまで、パケット廃棄装置へ転送されたサーバ宛のパケットは全て破棄される。このとき、攻撃元以外からのパケットも破棄されるため、サービス継続が困難となる可能性があった。また、サービスに関し、サーバとパケットの送信元との間でＴＣＰセッションが確立されている場合には、パケットの再送によってデータ送信の保証が図られる。しかし、ＴＣＰに基づくパケットの再送時間はリトライ回数ごとに増加する。このため、攻撃元が特定できても攻撃元以外からのパケットが再送されるに時間を要する場合があった。
【０００７】
本発明は、攻撃が検知されてから通信再開までの時間を短縮化できる技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面は、パケット蓄積装置である。このパケット蓄積装置は、送受信間で通信用のセッションを確立して通信を行うとともに、前記セッションの切断用パケットの送信により前記セッションを切断して通信を終了するプロトコルに従って送信元との間でパケットを送受信する通信装置の監視結果において前記通信装置への攻撃が検知された場合
に、前記通信装置宛のパケットを蓄積する蓄積部と、前記通信装置への攻撃者が特定された場合に、前記蓄積部に蓄積された前記通信装置宛のパケットから、前記攻撃者からのパケットと、前記セッションの切断用パケット及び当該切断用パケットで切断されるセッションに係るパケットと、重複して蓄積されているパケットとを除いたパケットを前記通信装置（１）宛に送信する送信部と、を含む。
【発明の効果】
【０００９】
本発明によれば、攻撃が検知されてから通信再開までの時間を短縮化できる。
【図面の簡単な説明】
【００１０】
【図１】図１は、サーバへの不正攻撃に対する防御システムの参考例を示す。
【図２】図２は、実施形態に係る防御システムの一例を示す図である。
【図３】図３（Ａ）は、参考例及び実施形態における正常時の中継装置（ＳＷ）の動作例を示すシーケンス図である。図３（Ｂ）は、端末からの攻撃時における参考例のＳＷの動作例を示すシーケンス図である。図３（Ｃ）は、端末からの攻撃時における実施形態のＳＷ及びサービス保証装置の動作例を示すシーケンス図である。
【図４】図４は、図２に示したサービス保証装置に適用可能な情報処理装置（コンピュータ）のハードウェア構成例を示す図である。
【図５】図５は、ＣＰＵがプログラムを実行することによって得られるサービス保証装置の機能例を模式的に示す図である。
【図６】図６は、攻撃者情報テーブルのデータ構造例を示す図である。
【図７】図７は、パケット管理テーブルのデータ構造例を示す図である。
【図８】図８は、図２に示した防御システム（監視装置，攻撃対策装置，ＳＷ，サービス保証装置）の動作例を示すシーケンス図である。
【図９】図９は、パケット管理テーブルに対するエントリ格納の例を示す説明図である。
【図１０】図１０は、有効パケットの判定処理フローの一例を示す。
【図１１】図１１は、攻撃者情報の有無の判定、及び送信者情報との比較を説明する図である。
【図１２】図１２は、蓄積処理部の処理によって作成されたパケット管理テーブルの例を示す。
【図１３】図１３は、攻撃パケットの判定処理の一例を示すフローチャートである。
【図１４】図１４は、攻撃者情報の記憶（登録）を説明する図である。
【図１５】図１５は、攻撃者情報と送信元情報との比較結果に基づく攻撃者フラグの設定を説明する図である。
【図１６】図１６は、攻撃者フラグが設定されたパケット管理テーブルの例を示す。
【発明を実施するための形態】
【００１１】
以下、図面を参照して実施形態について説明する。実施形態の構成は例示であり、実施形態の構成に限定されない。
【００１２】
図１は、サーバへの不正攻撃に対する防御システムの参考例を示す。図１において、「攻撃者」の端末Ａは、攻撃用のパケット（以下、「攻撃パケット」とも表記）を、サービス稼働中のサーバ１へ送信する。図１における「攻撃者以外」の端末Ｃは、攻撃を行っていない（サーバと正常に接続された）正規のユーザの端末であり、サーバ１によって提供されるサービスを利用するために、サーバ１へパケットを送信する。図１の例では、二つの正規ユーザの端末Ｃ１と、正規ユーザの端末Ｃ２とが存在すると仮定する。端末Ｃ１と端末Ｃ２とを纏めて指す場合には、端末Ｃと表記する。
【００１３】
サーバ１には、攻撃者の端末Ａからのパケットと、正規ユーザの端末Ｃからのパケット
とが到達する（図１の（１）（Ａ＋Ｃ））。監視装置２は、サーバ１に接続されており、サーバ１のリソース状況（バッファメモリの空き状況など）を常時監視する（図１：ａ．リソース監視）。
【００１４】
監視装置２は、不正攻撃と見なすリソースの変動を検知すると（図１：ｂ．攻撃検知）、監視装置２と接続された攻撃対策装置３へ攻撃検知の通知を出す。なお、不正攻撃の検知方法は必ずしもリソースの監視に限定されない。
【００１５】
攻撃対策装置３は、監視装置２からの攻撃検知の通知を受信すると、パケットを中継する装置（ＳＷ）４に経路切替指示を与える（図１：ｃ．経路切替）。経理切替指示は、サーバ１宛のパケットの全てをＳＷ４と接続された破棄処理装置５へ転送する旨の指示（全ケットをポートｐ２へ出力する指示）を含む。ＳＷ４は、指示に従いパケットの出力経路の変更を行う（ポートｐ１→ポートｐ２）。これにより、端末Ａ及び端末Ｃのパケットは、ＳＷ４から破棄処理装置５へ転送される（図１の（２）（Ａ＋Ｃ））破棄処理装置５は、すなわち、ＳＷ４から受信される端末Ａ及び端末Ｃからパケットを破棄する。
【００１６】
攻撃対策装置３は、サーバ１で受信された攻撃パケット中の情報から攻撃パケットの送信元アドレスを特定する。すると、攻撃対策装置３は、ＳＷ４に対し、正規ユーザの端末Ｃからのパケットの転送先を破棄処理装置５からサーバ１へ変更する（切り戻す）指示を与える（図１：ｄ．攻撃者特定）。これによって、攻撃パケットは破棄処理装置５（ポートｐ２）へ転送される（図１の（３）（Ａのみ））。一方で、正規ユーザの端末Ｃからのパケットはサーバ１（ポートｐ１）へ転送される（図１の（４）（Ｃのみ））。これによって、正規ユーザは、サービスを再度利用できるようになる。
【００１７】
しかし、参考例では、攻撃の発生が検知されてから攻撃パケットの送信元が特定されるまで、サーバ１宛のパケットの全てが破棄される。このため、サービスを利用中であった正規ユーザからのパケットについても攻撃パケットと同様に破棄される。従って、正規ユーザによるサービス利用の継続が困難になることがあった。
【００１８】
また、正規ユーザの端末Ｃとサーバ１との間にＴＣＰセッションが確立されている場合には、端末Ｃから再送パケットが送信されることで、サーバ１へのデータ到達が保証される。しかし、上記した経路の切り戻しによって、端末ＣからのパケットがＳＷ４からサーバ１へ転送されるようになっても、端末Ｃから再送パケットがＳＷ４へ送信され、ＳＷ４を介してサーバ１に届かない限りは、正規ユーザはサービス利用を再開できない。このように、経路の切り戻しが行われても、端末Ｃから再送パケットが直ちにサーバ１に到達するようにはならず、サービス利用が再開されるのに時間を要する場合があった。
【００１９】
図２は、実施形態に係る防御システムの一例を示す図である。図２において、ＩＰ網には、サーバ１が中継装置（スイッチ：ＳＷ）４を介して接続されている。また、ＩＰ網には、攻撃者の端末Ａと、攻撃者以外、例えば、正規ユーザの端末Ｃ１と正規ユーザの端末Ｃ２とが接続されている。但し、図２には、端末Ｃ１と端末Ｃ２とを纏めた端末Ｃが図示されている。端末Ｃ１と端末Ｃ２とを区別しない場合には、端末Ｃと表記する。
【００２０】
端末Ａ及び端末Ｃ（端末Ｃ１，端末Ｃ２）のそれぞれは、サーバ１との通信を行うために、例えば、Transmission Control Protocol（ＴＣＰ）セッションを両者間で確立する
。ＴＣＰセッションが確立されると、端末Ｃは、サーバ１により提供される所定のサービスを享受するために、サーバ１宛にパケットを送信する。一方、端末Ａは、サーバ１への攻撃を目的としたパケット（攻撃パケット）をサーバ１宛に送信する。これにより、端末Ａからの攻撃パケットと、正規ユーザの端末Ｃからのパケットとが、ＩＰ網及びＳＷ４を介してサーバ１に到達する（図２の（１）（Ａ＋Ｃ））。
【００２１】
ＴＣＰは、「送受信間で通信用のセッションを確立して通信を行うとともに、前記セッションの切断用パケットの送信により前記セッションを切断して通信を終了するプロトコル」の一例であり、ＴＣＰセッションは、「セッション」の一例である。また、ＴＣＰにおけるＦＩＮパケットは、「セッションの切断用パケット」の一例である。また、ＴＣＰは、「再送制御を行うプロトコル」の一例でもある。
【００２２】
実施形態における防御システムは、サーバ１に接続された監視装置２と、監視装置２に接続された攻撃対策装置３と、ＳＷ４と、ＳＷ４に接続された破棄処理装置５とを含む。防御システムは、さらに、ＳＷ４，監視装置２，及び攻撃対策装置３と接続されたサービス保証装置１０を含む。サーバ１は、「通信装置」の一例である。ＳＷ４は、「中継装置」の一例である。また、サービス保証装置１０は、「パケット蓄積装置」の一例である。
【００２３】
監視装置２は、参考例と同様に、サーバ１のリソース監視（ａ），及び攻撃の検知（ｂ）を行う。攻撃対策装置３は、サービス保証装置１０に対し、経路切替の指示を与える（図２，ｃ'経路切替）。
【００２４】
サービス保証装置１０は、攻撃対策装置３からの経路切替の指示に従い、ＳＷ４に、宛先アドレスがサーバ１のパケット、即ちサーバ１宛のパケットの転送先を、サーバ１（ポートｐ１）からサービス保証装置１０（ポートｐ１）へ切り替える切替指示を与える。
【００２５】
サービス保証装置１０は、ＳＷ４から受信される全てのパケット（図２の（２）（Ａ＋Ｃ））を記憶する。攻撃対策装置３は、例えば、サービス保証装置１０で記憶されるパケットの送信元アドレスに基づき、攻撃者の送信元アドレスを特定する。これによって、攻撃者の端末Ａを特定する。すると、攻撃対策装置３は、攻撃者の送信元アドレス（攻撃者の特定情報）を、サービス保証装置１０に供給する（図２，ｄ'攻撃者特定）。
【００２６】
サービス保証装置１０は、記憶したパケットのうち、以下の（１）〜（３）を除くパケット（「有効パケット」と称する）を抽出し、有効パケットのサーバ１への転送をＳＷ４に指示する（ｄ'−１）。ＳＷ４は、サービス保証装置１０から転送された有効パケット
をサーバ１へ中継する（図２（３）（Ｃのみ）参照）。
（１）攻撃者の端末Ａからのパケット（「攻撃者からのパケット」の一例）
（２）セッション切断用パケット及びセッション切断用のパケットに係るセッションのパケット（「セッションの切断用パケット及び当該切断用パケットで切断されるセッションに係るパケット」の一例）
（３）重複して蓄積されているパケット（「重複パケット」の一例）
【００２７】
上記（１）〜（３）のパケットは、「正規ユーザの通信（サービス利用）の再開」の観点から除外される。上記（１）のパケットは、正規ユーザの通信再開の妨げとなるものであるから当然に除外される。上記（１）のパケットは、例えば、攻撃対策装置３から受信される端末Ａからのパケットの送信元アドレスに基づき識別することができる。攻撃者の端末Ａからパケットが転送されない。これによって、攻撃からサーバ１を守ることができる。
【００２８】
上記（２）における「セッション切断のパケット」とは、例えば、ＴＣＰにおけるＦＩＮパケットである。ＦＩＮパケットとは、ＴＣＰで接続を終了する（セッションを切断する）際に送られるパケットであり、ＴＣＰヘッダの制御フラグでＦＩＮフィールドがセットされたパケットである。
【００２９】
攻撃検知によってサービス保証装置１０へパケットが転送されると、サーバ１と端末Ｃ
との通信が中断する。この中断時間が短くない場合には、端末Ｃのユーザは、通信の継続を止める（サービス利用を止める）と考えられる。通信の終了に際し、端末Ｃからはセッションを切断するためのＦＩＮパケットが送信される。
【００３０】
これより、ＦＩＮパケットは、正規ユーザがサーバ１との通信（サービス利用）を止めたことの意思表示と捉えることができる。したがって、ＦＩＮパケットで切断されるＴＣＰセッションは、通信再開を要しないセッションと考えられる。よって、当該ＴＣＰセッションのパケットは、サーバ１への転送を要しない無用のパケットであるので、サーバ１へ転送しない。
【００３１】
上記（３）の重複パケットは、重複するパケットのうちサーバ１へ転送する１つを除いた残りを指す。通信の再開に当たっては、重複するうちの１つを転送すれば足り、残りは転送を要しない無用のものであり、徒に帯域を浪費する要因となり得る。よって残りはサーバ１に転送しない。なお、サーバ１への転送対象から除外される（１）〜（３）のパケットは、サービス保証装置１０にて破棄される。
【００３２】
サービス保証装置１０は、蓄積（記憶）したパケットの転送が終了すると、経路切替の指示をＳＷ４に送る（ｄ'−２）。経路切替の指示は、攻撃者（端末Ａ）からのパケット
は破棄処理装置（ポートｐ２）へ転送し、正規ユーザ（端末Ｃ）からのパケットはサーバ１（ポートｐ１）へ転送する指示を含む。
【００３３】
ＳＷ４は、指示に従い経路切替を行う。この結果、攻撃者（端末Ａ）からのパケットは破棄処理装置（ポートｐ２）へ転送される（図２の（４）（Ａのみ））。一方、正規ユーザ（端末Ｃ）からのパケットはサーバ１（ポートｐ１）へ転送される（図２の（４）（Ｃのみ））。これによって、正規ユーザは、サーバ１を用いたサービスの利用を再開することができる。
【００３４】
図３（Ａ）は、参考例及び実施形態における正常時のＳＷ４の動作例を示すシーケンス図であり、図３（Ｂ）は、端末Ａからの攻撃時における参考例のＳＷ４の動作例を示すシーケンス図であり、図３（Ｃ）は、端末Ａからの攻撃時における実施形態のＳＷ４及びサービス保証装置１０の動作例を示すシーケンス図である。
【００３５】
図３（Ａ）において、端末Ｃ２は、サーバ１とのＴＣＰセッションを確立するために、３ウェイハンドシェイクと呼ばれるセッションの確立手順を行う。最初に、端末Ｃ２は、通信を要求するＳＹＮパケットをサーバ１に送信する（ＳＷ４は、端末Ｃ２からのＳＹＮパケットをサーバ１と接続されたポートｐ１へ出力する）。端末Ｃ２は、サーバ１から通信を許可するＳＹＮ−ＡＣＫパケット（ＳＷ４によって中継される）を受信する。ＳＹＮ−ＡＣＫパケットを受信した端末Ｃ２は、通信開始を示すＡＣＫパケットをサーバ１に送る。これによって、端末Ｃ２とサーバ１との間にＴＣＰセッションが確立される。その後、端末Ｃ２は、サーバ１宛のデータ（Data1，Data2，Data3参照）をサーバ１へ送る。Ｓ
Ｗ４は、端末Ｃ２からのパケットをサーバ１と接続されたポートｐ１へ出力し、サーバ１からのパケットを端末Ｃ２へ向けて送る。
【００３６】
ＴＣＰセッションを終了する場合には、端末は、ＦＩＮパケットを送る。図３（Ａ）では、端末Ｃ１が、データを送信し終わり、ＦＩＮパケットをサーバ１（ポートｐ１）へ送信して通信を終了する様子が例示されている。
【００３７】
図３（Ｂ）は、参考例において、図３（Ａ）で示したような端末Ｃ１及び端末Ｃ２からのパケット送信に加えて、攻撃者の端末Ａからの攻撃パケット（ＳＹＮパケット）が大量にサーバ１へ送信された様子を示す。
【００３８】
端末Ｃ２は、サーバ１との間でＴＣＰセッションを確立し、パケットを送信すると、パケットの再送制御のために、パケットのＡＣＫの待ちタイマを設定する。待ちタイマの満了時間の初期値は、例えば３秒であるとする（図３（Ｂ）＜１＞）。
【００３９】
端末Ａからの攻撃パケットをサーバ１が受信することで、サーバ１のリソース使用量（負荷）が上昇し、監視装置２にて攻撃が検知されると、ＳＷ４は、サーバ１宛のパケットの全てを破棄処理装置５（ポートｐ２）へ送信する。
【００４０】
このため、端末Ｃ２は、サーバ１宛に送信したパケットに対するＡＣＫを、待ちタイマがタイムアウト（Ｔ．Ｏ．）する前に受信することができなくなる。待ちタイマがタイムアウトすると、パケット再送をリトライする。このとき、端末Ｃ２は、ＡＣＫ受信の可能性を高めるため、待ちタイマの満了時間を前回よりも延ばす。図３（Ｂ）の例では、満了時間が６秒に延ばされている。
【００４１】
パケットが破棄処理装置５へ転送されて破棄されている間、端末Ｃ２は、ＡＣＫを受信できないので、待ちタイマの満了時間を延ばしながらパケット再送のリトライを繰り替えす。待ちタイマの満了時間の長さは、ＯＳ（Operating System）の仕様に依存するが、最大９６秒に達することもある。
【００４２】
図３（Ｂ）の例では、攻撃対策装置３の攻撃者特定によって、正規ユーザのパケットがサーバ１へ転送される状態に切り替わるまでの間に、待ちタイマの満了時間が２４秒に達した場合が例示されている（図３（Ｂ）＜３＞）。
【００４３】
経路がサーバ１側へ切り替えられて、パケットを送信すればサーバ１からＡＣＫを直ちに受信できることが期待できる状態になっていても、端末Ｃ２は、待ち時間（２４秒）が経過するまでパケットの再送を行わない。この結果、端末Ｃ２がサーバ１との通信を再開できず、サービスを利用できない状態が長時間に亘って継続する。
【００４４】
これに対し、図３（Ｃ）に示す例では、攻撃者の端末Ａからの攻撃パケットによって、端末Ｃ２でＡＣＫの待ちタイマのタイムアウトが連続して起こっている点では参考例（図３（Ｂ））と同じである。但し、実施形態では、攻撃が検知された後のサーバ１宛の全てのパケットは、サービス保証装置１０にて記憶され、サービス保証装置１０で記憶された端末Ｃ２からサーバ１宛のパケットは、攻撃者が特定された後に、ＳＷ４経由でサーバ１へ転送される。サーバ１は、パケットに対するＡＣＫを生成し、送信する。
【００４５】
ここで、端末Ｃ２が待ちタイマ（満了時間２４秒）で、ＡＣＫを待っていたとすると、ＡＣＫは、待ちタイマのタイムアウト前に端末Ｃ２で受信される。したがって、端末Ｃ２は、待ちタイマがタイムアウトするのを待つことなく、次のパケットを送信できる。このように、次のパケットを端末Ｃ２が送信するタイミングを早めることができるので、サーバ１との通信再開（サービス復旧）までの時間を短縮化できる。
【００４６】
また、図３（Ｃ）において、サービス保証装置１０に記憶されたパケットのうち、ＦＩＮパケットを送信した端末Ｃ１からサーバ１宛のパケットは、上記した（２）の「セッション切断のパケットに係るセッションのパケット」に該当する。このため、サーバ１への転送対象から除外される。
【００４７】
また、待ちタイマのタイムアウトに伴い端末Ｃ２から再送されたパケットは、上記した（３）の「重複したパケット」に該当するため、サーバ１への転送対象から除外される。これらの（２）及び（３）のパケットが転送対象から除外されることで、転送対象のデー
タ量を減らし、転送処理の短縮化を図ることができる。また、サーバ１において、重複データの処理のような無用の処理が発生するのを回避し、サーバ１の処理リソースが有効利用されるようにすることができる。
【００４８】
以下、図２に示したシステムの詳細について説明する。
＜情報処理装置（コンピュータ）のハードウェア構成＞
図４は、図２に示したサービス保証装置１０に適用可能な情報処理装置（コンピュータ）のハードウェア構成例を示す図である。情報処理装置２０として、例えば、パーソナルコンピュータ（ＰＣ），ワークステーション（ＷＳ）のような汎用コンピュータ、或いは専用のコンピュータが適用可能である。
【００４９】
図４において、情報処理装置２０は、例えば、バスを介して相互に接続された、Central Processing Unit（ＣＰＵ）２１と、主記憶装置２２と、補助記憶装置２３と、回線イ
ンタフェース（回線Ｉ／Ｆ）２４とを含む。
【００５０】
主記憶装置２２は、プログラムの展開領域，ＣＰＵ２１の作業領域，データのバッファ（記憶）領域として使用される。主記憶装置２２は、例えば、揮発性記憶媒体であるRandom Access Memory（ＲＡＭ），或いはＲＡＭとRead Only Memory（ＲＯＭ）との組み合わせで形成される。ＲＯＭはファームウェアを記憶している場合もある。
【００５１】
補助記憶装置２３は、例えば、ハードディスクドライブ（ＨＤＤ），Solid State Drive（ＳＳＤ），フラッシュメモリ，Electrically Erasable Programmable Read-Only Memory（ＥＥＰＲＯＭ）などの不揮発性記憶媒体で形成される。補助記憶装置２３は、データやプログラムの記憶領域として使用される。主記憶装置２２及び補助記憶装置２３は、「記憶装置」，「記憶部」，「メモリ」，「記憶媒体」の一例である。
【００５２】
回線インタフェース２４は、ネットワーク（ＮＷ）に接続され、他の通信装置との通信を司る。例えば、サービス保証装置１０として動作する情報処理装置２０は、監視装置２，攻撃対策装置３，及びＳＷ４とネットワークを介して接続され、通信（パケットの送受信）を行う。回線インタフェース２４として、例えば、Local Area Network（ＬＡＮ）カードやネットワークインタフェースカード（ＮＩＣ）と呼ばれる通信インタフェースカードを適用できる。
【００５３】
ＣＰＵ２１は、「プロセッサ」，「制御装置」，「コントローラ」の一例である。ＣＰＵ２１は、補助記憶装置２３に記憶されたプログラムを主記憶装置２２にロードして実行する（主記憶装置２２中のＲＯＭに記憶されたプログラム（ファームウェア）を実行する場合もある）。プログラムの実行によって、ＣＰＵ２１は、情報処理装置２０をサービス保証装置１０として動作させる。
【００５４】
図５は、ＣＰＵ２１がプログラムを実行することによって得られるサービス保証装置１０の機能例を模式的に示す図である。図５において、ＣＰＵ２１は、処理管理部１１，転送処理部１２，送受信部１３，蓄積処理部１４，及び経路制御部１５として動作する。これらとしての動作において、他の装置との通信を行う場合には、ＣＰＵ２１は、回線インタフェース２４を用いて通信を行う。蓄積部１６は、主記憶装置２２及び補助記憶装置２３の少なくとも一方に作成される。なお、送受信部１３は、「送信部」の一例であり、経路制御部１５は、「制御部」の一例である。蓄積部１６は、「蓄積部」の一例である。
【００５５】
なお、処理管理部１１，転送処理部１２，送受信部１３，蓄積処理部１４，及び経路制御部１５の少なくとも一つは、ハードウェアを用いて形成されても良い。ハードウェアは、例えば、Field Programmable Gate Array（ＦＰＧＡ）のようなプログラマブルロジッ
クデバイス（ＰＬＤ）や、集積回路（ＩＣ，ＬＳＩ，Application Specific Integrated Circuit（ＡＳＩＣ）など）などを含む。
【００５６】
処理管理部１１は、監視装置２から経路切替の通知を受け付けるとともに、攻撃対策装置３から攻撃者特定の通知を受け付け、受け付けた通知を蓄積処理部１４および転送処理部１２に転送する。
【００５７】
蓄積処理部１４は、処理管理部１１からの通知をトリガに蓄積部１６の初期化を行い、経路制御部１５に対し、ＳＷ４向けの経路制御通知（経路切替の指示）を出力する。また、蓄積処理部１４は、蓄積部１６へのパケットの蓄積処理を行う。
【００５８】
転送処理部１２は、処理管理部１１からの通知をトリガに、攻撃者情報を記憶する。経路制御部１５は、蓄積処理部１４および送受信部１３からの通知をトリガに、ＳＷ４に対して経路切替の指示を出力する。
【００５９】
送受信部１３は、ＳＷ４とのパケットの送受信を行う。また、送受信部１３は、受信した各パケットについて、パケット情報に基づき、パケットが有効か否かの判定を行う。蓄積部１６は、攻撃者テーブルと、蓄積パケット管理テーブルとを記憶する。さらに、蓄積部１６には、ＳＷ４から転送されてくるパケットが蓄積（記憶）されるバッファ領域を含む。
【００６０】
図６は、攻撃者情報テーブルのデータ構造例を示す図である。図６に示す例では、攻撃者情報テーブルＴ１（以下「テーブルＴ１」ともいう）は、攻撃パケットの送信元ＩＰアドレスと、送信元ポート番号とのペアを記憶する１以上のエントリからなり、各エントリは、項番（Ｎｏ．）にて管理される。
【００６１】
図７は、パケット管理テーブルのデータ構造例を示す図である。図７において、パケット管理テーブルＴ２（以下「テーブルＴ２」ともいう）は、バッファ領域に蓄積されるパケット毎に作成されるエントリを記憶する。
【００６２】
エントリは、パケットの受信時間と、送信元（source）情報と、宛先（destination）
情報と、プロトコル（Protocol）と、タイプ(Type)と、シーケンス番号と、攻撃者フラグと、ＦＩＮフラグと、重複フラグとを含む。
【００６３】
受信時間は、パケットの受信時間を示す。送信元情報は、パケットの送信元ＩＰアドレスと送信元ポート番号を含む。宛先情報は、パケットの宛先ＩＰアドレスと宛先ポート番号とを示す。プロトコルは、パケットのプロトコル種別を示す。タイプは、パケットのタイプを示す。シーケンス番号は、パケットに設定されたシーケンス番号を示す。攻撃者フラグは、攻撃対策装置３からの通知にて知らされた攻撃パケットのエントリに設定される。ＦＩＮフラグは、ＦＩＮフラグが設定されたパケット、及びＦＩＮフラグに係るセッションのパケットに設定される。重複フラグは、パラメータが同一のパケット（重複パケット）に設定される。
【００６４】
なお、図４に示した情報処理装置２０のハードウェア構成は、図２に示したサーバ１，監視装置２，攻撃対策装置３，ＳＷ４のハードウェア構成としても適用が可能である。すなわち、ＣＰＵ２１のプログラム実行により、情報処理装置２０は、サーバ１，監視装置２，攻撃対策装置３，ＳＷ４のそれぞれとして動作することができる。
【００６５】
＜動作例＞
図８は、図２に示した防御システム（監視装置２，攻撃対策装置３，ＳＷ４，サービス
保証装置１０）の動作例を示すシーケンス図である。図８において、監視装置２は、監視対象のサーバ１のリソース状況を監視する。監視装置２は、監視において、不正攻撃と見なせるリソース状況を攻撃として検知する。
【００６６】
不正攻撃を検知した監視装置２は、攻撃検知の旨を攻撃対策装置３へ通知する（図８＜１＞）。一方、監視装置２は、サービス保証装置１０へ経路切替の指示を通知する（図８＜２＞）。監視装置２から攻撃対策装置３及びサービス保証装置１０への通知には、サーバ１のアドレス情報が含まれている。
【００６７】
サービス保証装置１０では、監視装置２からの攻撃検知の通知を処理管理部１１が受け付ける。処理管理部１１は、蓄積処理部１４に対し、処理通知を送信する（図８＜３＞）。蓄積処理部１４は、処理通知を受け付けると、テーブルＴ１（図６）及びテーブルＴ２（図７）の初期化を行う（図８＜４＞：ＤＢ初期化）。
【００６８】
蓄積処理部１４は、処理通知を経路制御部１５に送る（図８＜５＞）。処理通知を受け付けた経路制御部１５は、処理通知に含まれるサーバ１のアドレスを用いて、サーバ１宛のパケットをサービス保証装置１０へ転送する旨の経路変更の指示（制御信号）を、ＳＷ４へ送信する（図８＜６＞：経路制御）。
【００６９】
サービス保証装置１０は、経路変更の指示によってＳＷ４から転送されてくるサーバ１宛のパケットを受信する（図８＜７＞）。パケットは、送受信部１３で受信される。送受信部１３は、パケットを処理通知とともに蓄積処理部１４に送る。
【００７０】
蓄積処理部１４は、パケットの蓄積処理と、テーブル設定処理とを行う（図８＜９＞）。すなわち、蓄積処理部１４は、パケットを蓄積部１６のバッファ領域に蓄積（記憶）する。また、蓄積処理部１４は、パケット情報（パケットのヘッダに設定されたパラメータなど）を含むエントリをテーブルＴ２に格納する。図９は、テーブルＴ２に対するエントリ格納の例を示す説明図である。
【００７１】
図９に示す例では、テーブルＴ２には、パケット情報の一例として、受信時間と、送信元ＩＰアドレスと、送信元ポート番号と、宛先ＩＰアドレスと、宛先ポート番号と、プロトコル種別と、タイプと、シーケンス番号とが記憶される。図８＜９＞の処理は、ＳＷ４から受信されるサーバ１宛のパケットの全てについて行われる。
【００７２】
図１０は、図８＜９＞において実行される、通信（サービス利用）再開に有効なパケット（有効パケット）の判定処理フローの一例を示す。当該処理は、蓄積処理部１４（蓄積処理部１４として動作するＣＰＵ２１）によって実行される。
【００７３】
図１０の０１において、蓄積処理部１４は、受信したパケットを蓄積部１６のバッファ領域に格納する一方で、当該パケットのエントリをパケット管理テーブル（テーブルＴ２）に格納する（図９参照）。
【００７４】
０２では、蓄積処理部１４は、攻撃者情報テーブル（テーブルＴ１）に攻撃者情報が登録されているか否か（あるか否か）を判定する。例えば、図１１に示すように、蓄積処理部１４は、テーブルＴ１を参照し、攻撃者情報、すなわち、攻撃者のＩＰアドレス及びポート番号がテーブルＴ１に登録されているか否かを判定する。例えば、テーブルＴ１が空き状態で、攻撃者情報がなければ（０２，Ｎｏ）、処理が０５に進む。攻撃者情報があれば（０２，Ｙｅｓ）、処理が０３に進む。
【００７５】
０３では、蓄積処理部１４は、０１で記憶されたエントリ中の送信元情報が攻撃者情報
と一致するか否かを判定する。ずなわち、蓄積処理部１４は、エントリ中の送信元（source）情報の“ＩＰ”及び“ｐｏｒｔ”の値が攻撃者情報と一致するか否かを判定する。送信元情報が攻撃者情報と一致する場合には（０３，Ｙｅｓ）、処理が０４に進み、一致しない場合には（０３，Ｎｏ）、処理が０５に進む。
【００７６】
０４では、蓄積処理部１４は、パケットのエントリに攻撃者フラグを設定する。すなわち、蓄積処理部１４は、エントリ中の攻撃者フラグの値を“１”に設定する（図１１参照）。
【００７７】
０５では、蓄積処理部１４は、０１にて蓄積したパケットに対応するエントリを参照し、パケットのタイプが“ＦＩＮ”か否かを判定する。本実施形態では、プロトコル種別が“ＴＣＰ”である場合には、タイプとして、例えば“ＳＹＮ”，“ＦＩＮ”，“ＡＣＫ”，“Data”の何れかが設定される。タイプが“ＦＩＮ”であれば（０５，Ｙｅｓ）、処理が０６に進み、そうでなければ（０５，Ｎｏ）、処理が０９に進む。
【００７８】
０６では、蓄積処理部１４は、対応エントリにＦＩＮフラグを設定する。すなわち、蓄積処理部１４は、対応エントリのＦＩＮフラグに“１”を設定する。
【００７９】
０７では、蓄積処理部１４は、テーブルＴ２から、ＦＩＮパケットで切断されたセッションのパケットに対応するエントリを検索する。ＦＩＮパケットで切断されたセッションのパケットか否かの識別は、例えばＦＩＮパケットにおける送信元（src）情報と一致す
る送信元（src）情報がエントリ中に含まれているか否かの判断を持ってなされる。
【００８０】
例えば、ＦＩＮパケットの送信元ＩＰアドレス及び送信元ポート番号と同じ送信元ＩＰアドレス及び送信元ポート番号を含むエントリは、「ＦＩＮパケットで切断されたセッションのパケット」と判定し得る。なお、送信元ＩＰアドレスと送信元ポート番号とのうち、送信元ポート番号のみで識別し得る場合には、送信元ポート番号が一致するか否かの判定が適用されても良い。
【００８１】
該当のエントリが検索された場合には（０７，Ｙｅｓ）、処理が０８に進み、そうでない場合には（０７，Ｎｏ）、処理が０９に進む。
【００８２】
０８では、蓄積処理部１４は、０７でテーブルＴ２から検索されたエントリ、すなわち、ＦＩＮパケットで切断されたセッションのパケットに対応するエントリに含まれたＦＩＮフラグに“１”を設定する。
【００８３】
０９では、蓄積処理部１４は、０１でテーブルＴ２に格納したエントリと、同じ内容を有するエントリをテーブルＴ２から検索する。同じ内容を有するエントリとは、送信元情報，宛先情報，プロトコル種別，及びタイプが同じ値を有するエントリである。このようなエントリに対応するパケットは、送信元から再送されたパケットと判断できる。同じ内容のエントリが検索された場合には（０９，Ｙｅｓ）、処理が１０に進み、そうでない場合には（０９，Ｎｏ）、図１０の処理が終了する。
【００８４】
１０では、蓄積処理部１４は、０９で検索したエントリに重複フラグを設定する、すなわち、蓄積処理部１４は、０９で検索したエントリの重複フラグに“１”を設定する。１０の処理が終了すると、図１０の処理が終了する。なお、０２〜０４の処理と、０５〜０８の処理と、０９及び１０の処理との順序は入れ替わっていても良い。
【００８５】
上記のようなパケットの判定処理が終わると、蓄積処理部１４は、送受信部１３から次のパケットが転送されてくるのを待つ。そして、蓄積処理部１４は、攻撃対策装置３から
の攻撃者特定の通知が来るまで、パケットのバッファ領域への蓄積、テーブルＴ２へのエントリ記憶，判定処理（図１０）を繰り返す。
【００８６】
図１２は、蓄積処理部１４の処理によって作成されたテーブルＴ２の例を示す。図１２に示す例では、上から３番目のエントリ（エントリ３）は、ＦＩＮパケットのエントリである（タイプが“ＦＩＮ”）ので、ＦＩＮフラグの値が“１”に設定されている。エントリ３に関して、上から２番目のエントリ（エントリ２）は、エントリ３の送信元情報と同じ送信元情報（src IP = C1, src port= CC1）を有する。よって、エントリ２は、ＦＩＮパケットによって切断されたセッションに係るパケットのエントリであるので、エントリ３と同様に、ＦＩＮフラグに“１”が設定されている。
【００８７】
上から７番目のエントリ（エントリ７）は、上から４番目のエントリ（エントリ４）と同一である。また、上から８番目のエントリ（エントリ８）は、上から５番目のエントリ（エントリ５）と同一である。そして、上から９番目のエントリ（エントリ９）は、上から６番目のエントリ（エントリ６）と同一である。よって、エントリ７〜９は、エントリ４〜６に対応する各パケットの再送パケットについてのエントリである。このため、エントリ７〜９の重複フラグには“１”が設定されている。
【００８８】
図８に戻って、攻撃対策装置３は、攻撃送信元のアドレス情報、すなわち、攻撃パケットの送信元情報（送信元ＩＰアドレス，送信元ポート番号）を特定すると、当該送信元情報を含む攻撃者特定通知をサービス保証装置１０へ送信する（図８＜１０＞）。
【００８９】
サービス保証装置１０で、攻撃対策装置３からの攻撃者特定通知を処理管理部１１で受け取る。処理管理部１１は、蓄積処理部１４に処理を渡す（図８＜１１＞）。蓄積処理部１４は、攻撃パケットの判定処理を行う（図８＜１２＞）。
【００９０】
図１３は、攻撃パケットの判定処理の一例を示すフローチャートである。図１３の処理は、蓄積処理部１４（ＣＰＵ２１）によって実行される。１１において、蓄積処理部１４は、攻撃特定通知に含まれる送信元情報を、テーブルＴ１に格納する。
【００９１】
図１４は、攻撃者情報の記憶（登録）を説明する図である。図１４に示すように、蓄積処理部１４は、攻撃者の送信元ＩＰアドレス（例えば“ａ”）及び送信元ポート番号（例えば“ａａ”）を、テーブルＴ１に登録する。
【００９２】
１２では、蓄積処理部１４は、攻撃者情報と一致する送信元情報を含むエントリをテーブルＴ２から検索する。図１５に示すように、テーブルＴ１の攻撃者情報と、テーブルＴ２の各エントリの送信元情報とを比較し、両者が一致するか否かを判定する。送信元情報が攻撃者情報と一致するエントリがテーブルＴ２から見つからない場合には（１２，Ｎｏ）、図１３の処理は終了する。これに対し、送信元情報が攻撃者情報と一致するエントリがテーブルＴ２から発見された場合には（１２，Ｙｅｓ）、処理が１３に進む。
【００９３】
１３では、蓄積処理部１４は、発見されたエントリの攻撃者フラグに“１”を設定する（図１５参照）。１３の処理が終了すると、図１３の処理が終了する。図１３の処理によって、バッファ領域に蓄積された攻撃パケットのエントリの攻撃者フラグに“１”が設定される。図１６は、攻撃者フラグが設定されたテーブルＴ２の例を示す。図１６の例では、エントリ１の送信元情報が攻撃者情報と一致するため、攻撃者フラグに“１”が設定されている。
【００９４】
図１６に示したような、攻撃者フラグ，ＦＩＮフラグ，重複フラグの何れかに“１”が設定されたエントリのパケットは、「サービスの利用」或いは「通信再開」の観点からは
無効なパケットである。このため、サーバ１への転送対象から除外される．残りのパケット（図１６の例では、エントリ４，５，６のパケット）は、通信再開に有効なパケット（有効パケット）として、サーバ１への転送対象に加えられる。無効なパケットは、サービス保証装置１０で破棄される。
【００９５】
図８に戻って、攻撃パケットの判定処理（図８＜１２＞）が終了すると、有効パケットの転送指示の通知が送受信部１３へ与えられる（図８＜１３＞）。送受信部１３は、テーブルＴ２を参照し、バッファ領域に記憶されている有効パケットを読み出して、ＳＷ４へ転送する。このとき、サービス保証装置１０は、ＳＷ４に対し、サービス保証装置１０から受信されるサーバ１宛のパケットをサーバ１へ転送するように指示する。ＳＷ４は、転送されたパケットを指示に従いサーバ１へ送る。これにより、正規ユーザから再送パケットを待つことなく、サーバ１はパケットを受信し、ＡＣＫを返すことができる。
【００９６】
このように、実施形態によれば、参考例では破棄していたパケットを破棄せず、攻撃の送信元が特定され次第、サーバ１に転送される。従って、正規ユーザの通信（サービス利用）再開までの時間が短縮化され、サービスが早急に復旧可能となる。
【００９７】
このとき、攻撃パケットだけでなく、ＦＩＮパケットで終了される通信に係るパケット（セッション切断用のパケットで切断されるセッションに係るパケット）及び重複パケットも、通信再開に貢献しないのでサーバ１への転送対象から除外される。無用のパケット転送が回避されることで、サービス保証装置１０からサーバ１へのパケット転送の負荷，サーバ１におけるサービス保証装置１０からのパケットの処理負荷を低減できる。よって、例えば、図３（Ｃ）のシーケンスにおいて、サーバ１の処理が円滑となり、パケットの送信元へＡＣＫを返信するタイミングを早めることを期待できる。すなわち、通信再開を早めることが期待できる。
【００９８】
送受信部１３は、バッファ領域に記憶された有効パケットの転送が終了すると、経路制御部１５へ処理通知を送る（図８＜１５＞）。すると、経路制御部１５は、経路切替の指示をＳＷ４へ送る（図８＜１６＞）。経路切替の指示は、攻撃者情報が送信元情報に含まれたパケット（攻撃パケット）は破棄処理装置５へ転送し、攻撃パケット以外のサーバ１宛のパケットはサーバ１へ転送する旨の指示（制御信号）である。
【００９９】
これによって、攻撃パケットは、破棄処理装置５にて破棄される一方で、正規ユーザのパケットはサーバ１に送られる。したがって、正規ユーザとサーバ１との間の通信によるサービス利用が攻撃者により妨げられることを回避できる。以上説明した実施形態の構成は、適宜組み合わせることができる。
【符号の説明】
【０１００】
Ｔ１・・・攻撃者情報テーブル
Ｔ２・・・パケット管理テーブル
１・・・サーバ
２・・・監視装置
３・・・攻撃対策装置
４・・・中継装置（ＳＷ）
５・・・破棄処理装置
１０・・・サービス保証装置
１１・・・処理管理部
１２・・・転送処理部
１３・・・送受信部
１４・・・蓄積処理部
１５・・・経路制御部
１６・・・蓄積部
２０・・・情報処理装置
２１・・・ＣＰＵ
２２・・・主記憶装置
２３・・・補助記憶装置
２４・・・回線インタフェース
【図１】
0006593137.tif 000002
【図２】
0006593137.tif 000003
【図３】
0006593137.tif 000004
【図４】
0006593137.tif 000005
【図５】
0006593137.tif 000006
【図６】
0006593137.tif 000007
【図７】
0006593137.tif 000008
【図８】
0006593137.tif 000009
【図９】
0006593137.tif 000010
【図１０】
0006593137.tif 000011
【図１１】
0006593137.tif 000012
【図１２】
0006593137.tif 000013
【図１３】
0006593137.tif 000014
【図１４】
0006593137.tif 000015
【図１５】
0006593137.tif 000016
【図１６】
0006593137.tif 000017