(57)【要約】  コネクション制御装置（１）は、コネクション数算出部（２１）によって、ネットワーク上のサーバとクライアントとの間に確立されているＴＣＰコネクションの数を、サーバ毎に算出する。そして、算出した数が所定の閾値以上であると判定部（２２）によって判定された場合、コネクション制御装置（１）は、異常コネクション検出部（２３）によって異常コネクションを検出し、パケット制御部（３０）によって異常コネクションにおけるパケットの送受信を制御する。
2016175131.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上のサーバとクライアントとの間に確立されているＴＣＰコネクションの数を、前記サーバ毎に算出するコネクション数算出部と、
前記サーバ毎のＴＣＰコネクションの数が所定の閾値以上であるか否かを判定する判定部と、
前記判定部によって前記ＴＣＰコネクションの数が前記閾値以上であると判定された前記サーバに対してサービス不能攻撃を行う異常コネクションを検出する異常コネクション検出部と、
を有することを特徴とするコネクション制御装置。
【請求項２】
前記コネクション数算出部は、
前記ＴＣＰコネクションのパケットのヘッダ情報に含まれる宛先ＩＰアドレス毎に、前記ＴＣＰコネクションの数を集計することを特徴とする請求項１に記載のコネクション制御装置。
【請求項３】
前記異常コネクション検出部は、
前記ＴＣＰコネクションのパケットのヘッダ情報に含まれる送信元ＩＰアドレス毎に集計した前記ＴＣＰコネクションの数が所定の閾値以上である場合に、該ＴＣＰコネクションを前記異常コネクションとして検出することを特徴とする請求項１に記載のコネクション制御装置。
【請求項４】
前記異常コネクション検出部は、
前記ＴＣＰコネクションで送受信されるパケットのパケットサイズから算出された実際のスループットの、前記ＴＣＰコネクションのＴＣＰウィンドウサイズおよびラウンドトリップタイムから算出された理論的スループットに対する割合が、所定の閾値以下である場合に、該ＴＣＰコネクションを前記異常コネクションとして検出することを特徴とする請求項１に記載のコネクション制御装置。
【請求項５】
前記異常コネクション検出部は、
前記ＴＣＰコネクションが前記サーバによってクローズされ、かつ前記クライアントによってクローズされていない場合に、該ＴＣＰコネクションを異常コネクションとして検出することを特徴とする請求項１に記載のコネクション制御装置。
【請求項６】
前記異常コネクション検出部は、
前記ＴＣＰコネクションのＴＣＰウィンドウサイズが所定の閾値より小さい場合、また、前記ＴＣＰコネクションのパケットのパケットサイズの前記ＴＣＰウィンドウサイズに対する割合が所定の閾値以下である場合に、該ＴＣＰコネクションを異常コネクションとして検出することを特徴とする請求項１に記載のコネクション制御装置。
【請求項７】
前記異常コネクション検出部は、
前記ＴＣＰコネクションにおいてプロトコル違反となるパケットの送受信が行われている場合に、該ＴＣＰコネクションを異常コネクションとして検出することを特徴とする請求項１に記載のコネクション制御装置。
【請求項８】
前記サーバと、前記異常コネクション検出部によって検出された異常コネクションを確立している前記クライアントとのパケットの送受信を制御するパケット制御部をさらに有することを特徴とする請求項１に記載のコネクション制御装置。
【請求項９】
前記パケット制御部は、
前記異常コネクションの前記クライアントに対し、ＴＣＰコネクションをリセットするパケットを送信することでパケットの送受信を制御することを特徴とする請求項８に記載のコネクション制御装置。
【請求項１０】
前記パケット制御部は、
前記異常コネクションのパケットを廃棄するフィルタを設定することでパケットの送受信を制御することを特徴とする請求項８に記載のコネクション制御装置。
【請求項１１】
前記パケット制御部は、
前記異常コネクションのパケットを、予め用意したサーバへリダイレクトすることでパケットの送受信を制御することを特徴とする請求項８に記載のコネクション制御装置。
【請求項１２】
コネクション制御装置で実行されるコネクション制御方法であって、
ネットワーク上のサーバとクライアントとの間に確立されているＴＣＰコネクションの数を、前記サーバ毎に算出するコネクション数算出工程と、
前記サーバ毎のＴＣＰコネクションの数が所定の閾値以上であるか否かを判定する判定工程と、
前記判定工程によって前記ＴＣＰコネクションの数が前記閾値以上であると判定された前記サーバに対してサービス不能攻撃を行う異常コネクションを検出する異常コネクション検出工程と、
を含んだことを特徴とするコネクション制御方法。
【請求項１３】
コンピュータを請求項１から１１のいずれか１項に記載のコネクション制御装置として機能させるためのコネクション制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コネクション制御装置、コネクション制御方法およびコネクション制御プログラムに関する。
【背景技術】
【０００２】
従来、サービス不能攻撃によるネットワークへの攻撃の対策として、パケットを分析してパケットカウンタに基づいて異常を判定することが行われている。しかし、サービス不能攻撃には、大量パケットによる攻撃だけでなく、少量パケットながらサーバのＴＣＰ（Transmission  Control  Protocol）コネクションを占有する攻撃方法が存在しており、このようなコネクション占有型攻撃は、パケット数に基づく対策では防ぐことができないという問題があった。【０００３】
この問題に対し、既存のＷＡＦ（Web  Application  Firewall）によって対策が行われている。例えば、コネクション占有型の異常トラフィック対策において、コネクション継続時間のタイムアウトに基づく方式が提案されている（例えば、非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Junhan  Park,  Keisuke  Iwai,  Hidema  Tanaka  and  Takakazu  Kurokawa,  “Analysis  of  Slow  Read  DoS  Attack  and  Countermeasures  on  Web  servers”,  International  Journal  of  Cyber-Security  and  Digital  Forensics  (IJCSDF)  4(2):  339-353
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、既存のＷＡＦによるコネクション占有型の異常トラフィックの対策では、数種類の攻撃しか検知できないという問題がある。また、コネクション継続時間のタイムアウトに基づく方式では、正常な長期間セッション等の正常なトラフィックも巻き添えになってしまうという問題がある。さらに、コネクションタイムアウト時間より短い間隔で次々に新しい攻撃コネクションで埋められることで、サービス不能状態が継続してしまうという問題がある。【０００６】
そこで、本発明の目的は、正常なトラフィックに影響を与えることなく、コネクション占有型攻撃を防ぐことにある。
【課題を解決するための手段】
【０００７】
本発明のコネクション制御装置は、ネットワーク上のサーバとクライアントとの間に確立されているＴＣＰコネクションの数を、前記サーバ毎に算出するコネクション数算出部と、前記サーバ毎のＴＣＰコネクションの数が所定の閾値以上であるか否かを判定する判定部と、前記判定部によって前記ＴＣＰコネクションの数が前記閾値以上であると判定された前記サーバに対してサービス不能攻撃を行う異常コネクションを検出する異常コネクション検出部と、を有することを特徴とする。【０００８】
また、本発明のコネクション制御方法は、コネクション制御装置で実行されるコネクション制御方法であって、ネットワーク上のサーバとクライアントとの間に確立されているＴＣＰコネクションの数を、前記サーバ毎に算出するコネクション数算出工程と、前記サーバ毎のＴＣＰコネクションの数が前記閾値以上であるか否かを判定する判定工程と、前記判定工程によって前記ＴＣＰコネクションの数が所定の閾値以上であると判定された前記サーバに対してサービス不能攻撃を行う異常コネクションを検出する異常コネクション検出工程と、を含んだことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、正常なトラフィックに影響を与えることなく、コネクション占有型攻撃を防ぐことができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施形態に係るコネクション制御装置を含むネットワークの構成の一例を示す図である。
【図２】図２は、第１の実施形態に係るコネクション制御装置の構成の一例を示す図である。
【図３】図３は、第１の実施形態に係るパケットのヘッダ情報の一例を示す図である。
【図４】図４は、第１の実施形態に係るＴＣＰコネクションの一例を示す図である。
【図５】図５は、第１の実施形態に係る宛先とコネクション数の一例を示す図である。
【図６】図６は、第１の実施形態に係る送信元とコネクション数の一例を示す図である。
【図７】図７は、第１の実施形態に係る実際のスループットの理論的スループットに対する割合の一例を示す図である。
【図８】図８は、第１の実施形態に係るコネクション制御装置の処理の一例を示すフローチャートである。
【図９】図９は、第１の実施形態に係るコネクション制御装置の検出処理の一例を示すフローチャートである。
【図１０】図１０は、第１の実施形態に係るコネクション制御装置の検出処理の一例を示すフローチャートである。
【図１１】図１１は、第１の実施形態に係るコネクション制御装置の検出処理の一例を示すフローチャートである。
【図１２】図１２は、第１の実施形態に係るコネクション制御装置の検出処理の一例を示すフローチャートである。
【図１３】図１３は、第１の実施形態に係るコネクション制御装置の検出処理の一例を示すフローチャートである。
【図１４】図１４は、プログラムが実行されることにより、コネクション制御装置が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願に係るコネクション制御装置およびコネクション制御方法の実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本願に係るコネクション制御装置およびコネクション制御方法が限定されるものではない。
【００１２】
［第１の実施形態］
以下の実施形態では、第１の実施形態の構成および処理について説明し、最後に第１の実施形態の効果を説明する。
【００１３】
［第１の実施形態の構成］
まず、図１を用いて、第１の実施形態に係るコネクション制御装置を含むネットワークの構成について説明する。図１は、第１の実施形態に係るコネクション制御装置を含むネットワークの構成の一例を示す図である。
【００１４】
図１に示すように、ネットワークは、例えば、コネクション制御装置１、サーバ２、サーバ３、スイッチ４、クライアント５およびクライアント６を含む。また、クライアント５および６は、サーバ２および３との間にＴＣＰコネクションを確立し、パケットの送受信を行うことができる。例えば、クライアント５からサーバ２宛に発出されたパケットは、スイッチ４およびコネクション制御装置１を経由してサーバ２に流れる。また、サーバ２からクライアント５宛に発出されたパケットは、コネクション制御装置１およびスイッチ４を経由してクライアント５へ流れる。
【００１５】
なお、図１に示すネットワークは、あくまで一例であり、コネクション制御装置１またはスイッチ４に接続されるサーバの数は複数であってもよいし、サーバ２およびサーバ３との間でＴＣＰコネクションを確立し、パケットの送受信が可能なクライアントは、実際のインターネット等の環境を考えると、無数に存在すると考えられる。また、図１では、コネクション制御装置１をインラインとしたが、ミラーリングしたポートに設置してもよい。
【００１６】
また、図１に示すように、コネクション制御装置１は、インタフェース１０、パケット情報分析部２０およびパケット制御部３０を有する。まず、パケット情報分析部２０は、パケットの分析等を行う。そして、パケット情報分析部２０による分析結果に基づいて、パケット制御部３０はパケットの送受信の制御を行う。さらに、インタフェース１０は、スイッチ４やサーバ２と接続され、パケット制御部３０等の制御によりパケットの送受信を行う。
【００１７】
次に、図２を用いて、コネクション制御装置１の構成について説明する。図２は、第１の実施形態に係るコネクション制御装置の構成の一例を示す図である。前述の通り、コネクション制御装置１は、インタフェース１０、パケット情報分析部２０およびパケット制御部３０を有する。以降、特にパケット情報分析部２０およびパケット制御部３０について詳細に説明する。
【００１８】
パケット情報分析部２０は、コネクション数算出部２１、判定部２２、異常コネクション検出部２３およびスコア算出部２４を有する。ここで、コネクション数算出部２１は、ネットワーク上のサーバとクライアントとの間に確立されているＴＣＰコネクションの数を、サーバ毎に算出する。また、判定部２２は、サーバ毎のＴＣＰコネクションの数が所定の閾値以上であるか否かを判定する。そして、異常コネクション検出部２３は、判定部２２によってＴＣＰコネクションの数が所定の閾値以上であると判定されたサーバに対してサービス不能攻撃を行う異常コネクションを検出する。
【００１９】
コネクション数算出部２１は、ＴＣＰヘッダ分析機能２１１およびサーバ毎コネクション数算出機能２１２を有する。これにより、コネクション数算出部２１は、ＴＣＰコネクションのパケットのヘッダ情報に含まれる宛先ＩＰアドレス毎に、ＴＣＰコネクションの数を集計する。まず、ＴＣＰヘッダ分析機能２１１は、インタフェース１０が受信したパケットに含まれるＴＣＰヘッダおよびＩＰヘッダから、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号等のヘッダ情報を抽出する。そして、サーバ毎コネクション数算出機能２１２は、ＴＣＰヘッダ分析機能２１１によって抽出された情報から、サーバ毎のユニークなコネクション数を算出する。
【００２０】
図３〜５を用いて、サーバ毎のユニークなコネクション数を算出する方法を説明する。まず、図３に示すように、ＴＣＰヘッダ分析機能２１１は、パケットに含まれるＴＣＰヘッダおよびＩＰヘッダから、各パケットのヘッダ情報を抽出する。図３は、第１の実施形態に係るパケットのヘッダ情報の一例を示す図である。例えば、抽出されるヘッダ情報の項目としては、図３に示すように、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号が挙げられる。なお、図３は、説明のために簡略化した例であり、実際にＴＣＰヘッダ分析機能２１１がヘッダ情報の抽出対象とするパケットの数は、図３に示すものに限られず、非常に大きな数になる場合もある。
【００２１】
例えば、図３の番号１の行は、あるパケットの送信元ＩＰアドレスが「10.0.1.1」、宛先ＩＰアドレスが、「10.0.0.1」、送信元ポート番号が「51001」、宛先ポート番号が「21」であることを示している。また、番号６の行は、あるパケットの送信元ＩＰアドレスが「10.0.1.2」、宛先ＩＰアドレスが、「10.0.0.1」、送信元ポート番号が「51001」、宛先ポート番号が「80」であることを示している。番号１の行と番号６の行を比較すると、送信元ＩＰアドレスと宛先ポート番号が異なっているため、異なるＴＣＰコネクションのパケットであることが分かる。
【００２２】
ここで、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号が同一のパケットは、同一のＴＣＰコネクションによるものであると考えることができる。そこで、サーバ毎コネクション数算出機能２１２は、ＴＣＰヘッダ分析機能２１１が抽出したパケットのヘッダ情報を、図４に示すようにコネクション毎に集約する。図４は、第１の実施形態に係るＴＣＰコネクションの一例を示す図である。
【００２３】
例えば、図３の番号７〜１６のパケットは、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号が同一であるため、１つのＴＣＰコネクションのパケットである。一方、番号１のパケットと番号２のパケットは、送信元ＩＰアドレス、宛先ＩＰアドレス、宛先ポート番号が同一であるが、送信元ポート番号が異なっているため、それぞれ異なるＴＣＰコネクションのパケットであることが分かる。
【００２４】
そして、サーバ毎コネクション数算出機能２１２は、図５に示すように、パケットの送信先となるサーバ、すなわち宛先ＩＰアドレス毎にコネクション数を集計することで、サーバ毎のユニークなコネクション数を算出する。図５は、第１の実施形態に係る宛先とコネクション数の一例を示す図である。この場合、宛先ＩＰアドレスが「10.0.0.1」であるサーバのユニークなコネクション数が６、宛先ＩＰアドレスが「10.0.0.2」であるサーバのユニークなコネクション数が２である。
【００２５】
ここで、判定部２２は、コネクション数算出部２１で算出されたサーバ毎のユニークなコネクション数から、サーバ毎に異常コネクションの検出およびパケットの制御を行うか否かを判定する。例えば、判定部２２は、コネクション数が所定の閾値以上であるサーバについて、異常コネクションの検出およびパケットの制御を行うと判定するようにしてもよい。この場合、閾値を５に設定すると、図５に示す宛先ＩＰアドレスが「10.0.0.1」であるサーバについては異常コネクションの検出およびパケットの制御を行い、宛先ＩＰアドレスが「10.0.0.2」であるサーバについては異常コネクションの検出およびパケットの制御を行わないと判定することができる。
【００２６】
なお、上記の例では、クライアントを送信元、サーバを宛先とするパケットを用いる例について説明したが、サーバを送信元、クライアントを宛先とするパケット、または、クライアントを送信元、サーバを宛先とするパケットと、サーバを送信元、クライアントを宛先とするパケットの両方を用いることとしてもよい。両方を用いることとした場合、クライアントを送信元、サーバを宛先とするパケットと、サーバを送信元、クライアントを宛先とするパケットのＩＰアドレス、ポート番号は、送信元、宛先が反転したＩＰアドレスおよびポート番号が同一のパケットは、同一のＴＣＰコネクションによるものであると考えることができる。また、コネクション数については、パケットのヘッダ情報から算出する以外に、サーバのプロセス状態やコネクションの統計状態等を取得するためのコマンド等サーバから取得可能な情報を用いることもできる。
【００２７】
異常コネクション検出部２３は、パケット受信時刻分析機能２３１、送信元ＩＰアドレス毎集計機能２３２、スループット分析機能２３３、パケットサイズ分析機能２３４、ＴＣＰウィンドウサイズ分析機能２３５、ＴＣＰコネクション正常分析機能２３６およびプロトコル違反判別機能２３７を有する。そして、異常コネクション検出部２３は、各機能のいずれか、または複数機能の組み合わせによって、コネクション占有型攻撃を行う異常コネクションを検出する。
【００２８】
まず、異常コネクション検出部２３の各機能について説明する。パケット受信時刻分析機能２３１は、インタフェース１０がパケットを受信した時刻を取得する。送信元ＩＰアドレス毎集計機能２３２は、パケットの送信元ＩＰアドレスを基に、送信元ＩＰアドレス毎のパケットの数を集計する。スループット分析機能２３３は、理論的スループットおよび実際のスループットを算出する。パケットサイズ分析機能２３４は、パケットのサイズを取得する。ＴＣＰウィンドウサイズ分析機能２３５は、ＴＣＰコネクションのウィンドウサイズを取得する。ＴＣＰコネクション正常分析機能２３６は、ＴＣＰコネクションがＨａｌｆ  Ｃｌｏｓｅの状態、すなわち、サーバから接続を終了する信号を送ったが、サーバに接続を終了する信号を返信していない状態か否かを判別する。プロトコル違反判別機能２３７は、ＴＣＰコネクションがプロトコル違反であるか否かを判別する。
【００２９】
異常コネクション検出部２３が異常コネクションを検出し、スコア算出部２４が異常スコアを付与する方法の例を説明する。なお、異常コネクション検出部２３は、下記の方法のいずれか１つを採用することとしてもよいし、複数の方法を組み合わせてもよい。また、異常コネクションを検出するための方法は、下記の方法に限られるものではなく、既知のあらゆる方法を用いることができる。
【００３０】
（方法１）
方法１においては、異常コネクション検出部２３は、ＴＣＰコネクションのパケットのヘッダ情報に含まれる送信元ＩＰアドレス毎に集計したＴＣＰコネクションの数が所定の閾値以上である場合に、該ＴＣＰコネクションを異常コネクションとして検出する。まず、パケット受信時刻分析機能２３１は、パケットがインタフェース１０で受信された時刻を取得する。次に、送信元ＩＰアドレス毎集計機能２３２は、パケット受信時刻分析機能２３１が取得した時刻が一定時間以上前であるパケットを送信した送信元ＩＰアドレス毎にコネクション数を集計し、コネクション数の順にソートする。
【００３１】
例えば、図４に基づいて集計を行った場合の例を図６に示す。図６は、第１の実施形態に係る送信元とコネクション数の一例を示す図である。図６は、送信元ＩＰアドレスが「10.0.1.1」であるコネクション数が５、送信元ＩＰアドレスが「10.0.1.2」であるコネクション数が３であることを示している。
【００３２】
方法１を採用した場合、スコア算出部２４は、コネクション数、もしくはコネクション数の順位等に基づいて各送信元ＩＰアドレスに対して異常スコアを算出し付与する。例えば、コネクション数が所定の閾値以上である場合にスコア算出部２４は異常スコアを付与する。なお、説明のため、図６ではコネクション数を少なめに設定しているが、実際にコネクション占有型攻撃を行うクライアントからは、数十〜数百のＴＣＰコネクションが確立される場合がある。一方、正常なクライアントからのコネクション数は、せいぜい数個程度である場合が多い。
【００３３】
（方法２）
方法２においては、異常コネクション検出部２３は、ＴＣＰコネクションで送受信されるパケットのパケットサイズから算出された実際のスループットの、ＴＣＰコネクションのＴＣＰウィンドウサイズおよびラウンドトリップタイムから算出された理論的スループットに対する割合が、所定の閾値以下である場合に、該ＴＣＰコネクションを異常コネクションとして検出する。まず、パケット受信時刻分析機能２３１は、パケットがインタフェース１０で受信された時刻を取得する。そして、ＴＣＰウィンドウサイズ分析機能２３５は、パケットのＴＣＰウィンドウサイズを取得する。ここで、スループット分析機能２３３は、パケットの受信時刻からラウンドトリップタイムを求め、式（１）により理論的スループットを算出する。
【００３４】
【数１】
2016175131.tif 000003
【００３５】
そして、パケットサイズ分析機能２３４は、パケットサイズを取得する。さらに、スループット分析機能２３３は、単位時間当たりの送受信されるパケットサイズを求めること等によって、実際のスループットを算出する。さらに、スループット分析機能２３３は、実際のスループットの理論的スループットに対する割合を算出する。その後、スコア算出部２４は、実際のスループットの理論的スループットに対する割合が所定の閾値以下であるＴＣＰコネクションの送信元ＩＰアドレスに対応するクライアントに対して異常スコアを付与する。
【００３６】
図７を用いて方法２の具体例について説明する。図７は、第１の実施形態に係る実際のスループットの理論的スループットに対する割合の一例を示す図である。図７に示すように、番号１〜４の各行は、送信元ＩＰアドレス、宛先ＩＰアドレス、送信元ポート番号および宛先ポート番号が異なるＴＣＰコネクションの、ＴＣＰウィンドウサイズ、ラウンドトリップタイム、理論的スループット、実際のスループットおよび実際のスループットの理論的スループットに対する割合を表している。
【００３７】
例えば、図７の番号１に示すＴＣＰコネクションは、送信元ＩＰアドレスが「10.0.1.1」、宛先ＩＰアドレスが「10.0.0.1」、送信元ポート番号が「51001」、宛先ポート番号が「21」であり、ＴＣＰウィンドウサイズが６４ＫＢ、ラウンドトリップタイムが０．０１秒であることを示している。そして、番号１に示すＴＣＰコネクションの理論的スループットが５１２００ｋｂｐｓ、実際のスループットが４１２５９ｋｂｐｓであるため、実際のスループットの理論的スループットに対する割合は、０．８１となる。
【００３８】
また、図７の番号３に示すＴＣＰコネクションは、送信元ＩＰアドレスが「10.0.1.2」、宛先ＩＰアドレスが「10.0.0.2」、送信元ポート番号が「52002」、宛先ポート番号が「80」であり、ＴＣＰウィンドウサイズが６４ＫＢ、ラウンドトリップタイムが０．００５秒であることを示している。そして、番号３に示すＴＣＰコネクションの理論的スループットが１０２４００ｋｂｐｓ、実際のスループットが１０５５ｋｂｐｓであるため、実際のスループットの理論的スループットに対する割合は、０．０１となる。
【００３９】
ここで、例えば、スコア算出部２４が異常スコアを付与するための閾値を０．１に設定した場合、図７の番号１および２に示すＴＣＰコネクションの、実際のスループットの理論的スループットに対する割合は０．１より大きいため、送信元ＩＰアドレスに異常スコアを付与しない。一方、図７の番号３および４に示すＴＣＰコネクションの、実際のスループットの理論的スループットに対する割合は０．１以下であるため、送信元ＩＰアドレスに異常スコアを付与する。なお、スコア算出部２４は、閾値を下回った場合、常に送信元ＩＰアドレスに異常スコアを付与するのではなく、ＴＣＰコネクションの継続時間に応じてスコアを算出し付与するようにしてもよい。
【００４０】
（方法３）
方法３においては、異常コネクション検出部２３は、ＴＣＰコネクションがサーバによってクローズされ、かつクライアントによってクローズされていない場合に、該ＴＣＰコネクションを異常コネクションとして検出する。具体的には、ＴＣＰコネクション正常分析機能２３６は、サーバから接続を終了する信号としてＦＩＮがセットされたＴＣＰフラグのパケットを送信したが、一定時間以上クライアントからＦＩＮおよびＡＣＫがセットされたＴＣＰフラグのパケットを受信せず、サーバ側だけがＴＣＰコネクションをクローズしようとしているＴＣＰコネクションをＨａｌｆ  Ｃｌｏｓｅの状態であると判定する。そして、スコア算出部２４は、Ｈａｌｆ  Ｃｌｏｓｅの状態であると判定されたＴＣＰコネクションの送信元ＩＰアドレスに異常スコアを付与する。
【００４１】
（方法４）
方法４においては、異常コネクション検出部２３は、ＴＣＰコネクションのＴＣＰウィンドウサイズが所定の閾値より小さい場合、また、ＴＣＰコネクションのパケットのパケットサイズのＴＣＰウィンドウサイズに対する割合が所定の閾値以下である場合に、該ＴＣＰコネクションを異常コネクションとして検出する。具体的には、ＴＣＰウィンドウサイズ分析機能２３５により求められたＴＣＰウィンドウサイズが、所定のサイズより小さい場合や、パケットサイズ分析機能２３４により求められた実際のパケットサイズが、ＴＣＰウィンドウサイズから乖離している場合、スコア算出部２４は、ＴＣＰコネクションの送信元ＩＰアドレスに異常スコアを付与する。
【００４２】
（方法５）
方法５においては、異常コネクション検出部２３は、ＴＣＰコネクションにおいてプロトコル違反となるパケットの送受信が行われている場合に、該ＴＣＰコネクションを異常コネクションとして検出する。具体的には、プロトコル違反判別機能２３７は、不完全なＨＴＴＰ  ＧＥＴヘッダ等の、プロトコル違反のＴＣＰコネクションを判別し、抽出する。そして、スコア算出部２４は、抽出されたＴＣＰコネクションの送信元ＩＰアドレスに異常スコアを付与する。
【００４３】
パケット制御部３０は、上記の方法によって異常スコアが付与されたＴＣＰコネクション、または異常スコアが所定の値以上となったＴＣＰコネクションの送信元ＩＰアドレスに対応するクライアントに対して、攻撃を防止するための制御を行う。
【００４４】
パケット制御部３０は、サーバと、異常コネクション検出部２３によって検出された異常コネクションを確立しているクライアントとのパケットの送受信を制御する。具体的には、パケット制御部３０は、異常コネクションのクライアントに対し、ＴＣＰコネクションをリセットするパケットを送信する。また、パケット制御部３０は、異常コネクションのパケットを廃棄するフィルタを設定する。また、異常コネクションのパケットを、予め用意したサーバへリダイレクトする。
【００４５】
パケット制御部３０は、リセットパケット送信機能３１、フィルタ機能３２およびリダイレクト機能３３を有する。パケット制御部３０は、各機能のいずれか、または複数機能の組み合わせによって制御を行う。まず、リセットパケット送信機能３１は、制御対象となるクライアントのＩＰアドレスに対して、プロキシとしてサーバの代わりに応答して、ＲＳＴがセットされたＴＣＰフラグのパケットを送信し、ＴＣＰコネクションをリセットする。
【００４６】
また、フィルタ機能３２は、制御対象となるクライアントのＩＰアドレスをＩＰアドレス記録機能３２１によって記録し、記録したＩＰアドレスを送信元とするパケットを廃棄するフィルタをインタフェース１０に設定する。そして、解除機能３２２は、例えば、単位時間当たりのパケット数が一定時間一定値以下となった場合、上記のフィルタを解除する。
【００４７】
また、リダイレクト機能３３は、制御対象となるクライアントのＩＰアドレスをＩＰアドレス記録機能３３１によって記録し、記録したＩＰアドレスを送信元とするパケットを予め用意した別サイトのサーバに自動的にリダイレクトする。そして、同一の送信元ＩＰアドレスからのパケットを再度受信した場合は、人による判断を行い、正常な通信であると判断された場合は、解除機能３３２により制御対象から除外するようにしてもよい。
【００４８】
なお、サーバの総コネクション数が一定時間一定値を下回った場合、リセットパケット送信機能３１はリセットパケットの送信を停止し、解除機能３２２はフィルタを解除し、解除機能３３２はリダイレクトを解除するようにしてもよい。また、パケット情報分析部２０はＴＣＰコネクション毎のシーケンス番号を記憶しておき、パケット制御部３０による制御の解除が行われた場合に、引き続きパケットの送受信を行えるようにしてもよい。
【００４９】
［第１の実施形態の処理］
次に、図８等を用いて、コネクション制御装置１の処理について説明する。図８は、第１の実施形態に係るコネクション制御装置の処理の一例を示すフローチャートである。図８に示すように、まず、インタフェース１０は、パケットを受信する（ステップＳ１０１）。次に、パケット情報分析部２０のコネクション数算出部２１は、パケットのヘッダ情報を抽出する（ステップＳ１０２）。そして、コネクション数算出部２１は、例えば、宛先ＩＰアドレス毎にコネクション数を集計することで、サーバ毎のユニークなコネクション数を算出する（ステップＳ１０３）。
【００５０】
ここで、判定部２２は、サーバ毎に、コネクション数算出部２１が算出したサーバ毎のユニークなコネクション数が閾値以上であるか否かを判定する（ステップＳ１０４）。そして、コネクション数が閾値以上でない場合（ステップＳ１０４、Ｎｏ）、コネクション制御装置１は以降の処理は行わず、処理を終了する。一方、コネクション数が閾値以上である場合（ステップＳ１０４、Ｙｅｓ）、パケット情報分析部２０の異常コネクション検出部２３は、異常コネクションを検出する（ステップＳ１０５）。そして、検出された異常コネクションの送信元に対して、パケット制御部３０はパケットの制御を行う（ステップＳ１０６）。
【００５１】
パケット情報分析部２０の異常コネクション検出部２３が異常コネクションを検出する処理（ステップＳ１０５）は、前述の方法１〜５と同様である。以降、図９〜１３を用いて、異常コネクション検出部２３が異常コネクションを検出する処理の例を説明する。図９〜１３は、それぞれ、第１の実施形態に係るコネクション制御装置の検出処理の一例を示すフローチャートである。
【００５２】
（方法１）
方法１では、まず、図９に示すように、送信元ＩＰアドレス毎集計機能２３２が、送信元ＩＰアドレス毎のコネクション数を集計し、送信元ＩＰアドレスをコネクション数でソートする（ステップＳ２０１）。この時、異常コネクション検出部２３は、パケット受信時刻分析機能２３１によって取得した受信時刻が、所定の時刻より前であるパケットを対象としてもよい。そして、スコア算出部２４は、例えば、ソートした順位が所定の順位より上である送信元ＩＰアドレス（ステップＳ２０２、Ｙｅｓ）に異常スコアを付与する（ステップＳ２０３）。また、ソートした順位が所定の順位より上でない場合（ステップＳ２０２、Ｎｏ）は、スコア算出部２４は異常スコアを付与しない。
【００５３】
（方法２）
方法２では、まず、図１０に示すように、スループット分析機能２３３が、パケット受信時刻分析機能２３１が取得した受信時刻からラウンドトリップタイムを算出する（ステップＳ３０１）。次に、ＴＣＰウィンドウサイズ分析機能２３５は、ＴＣＰウィンドウサイズを取得する（ステップＳ３０２）。そして、スループット分析機能２３３は、ラウンドトリップタイムおよびＴＣＰウィンドウサイズから理論的スループットを算出する（ステップＳ３０３）。さらに、スループット分析機能２３３は、パケットサイズ分析機能２３４が取得したパケットサイズから、実際のスループットを算出する（ステップＳ３０４）。ここで、スコア算出部２４は、例えば、実際のスループットの理論的スループットに対する割合が、所定の閾値以下である場合（ステップＳ３０５、Ｙｅｓ）は、送信元ＩＰアドレスに異常スコアを付与する（ステップＳ３０６）。また、実際のスループットの理論的スループットに対する割合が、所定の閾値以下でない場合（ステップＳ３０５、Ｎｏ）は、スコア算出部２４は異常スコアを付与しない。
【００５４】
（方法３）
方法３では、まず、図１１に示すように、ＴＣＰコネクション正常分析機能２３６が、サーバからＦＩＮがセットされたＴＣＰフラグのパケットが送信済みであるか否かを判定する（ステップＳ４０１）。そして、送信済みであり（ステップＳ４０１、Ｙｅｓ）、かつ、一定時間パケットを受信していない（ステップＳ４０２、Ｙｅｓ）送信元ＩＰには、スコア算出部２４が異常スコアを付与する（ステップＳ４０３）。また、サーバからＦＩＮがセットされたＴＣＰフラグのパケットが送信済みでない場合（ステップＳ４０１、Ｎｏ）、および既にパケットを受信している場合や一定時間を経過していない場合（ステップＳ４０２、Ｎｏ）は、スコア算出部２４は異常スコアを付与しない。
【００５５】
（方法４）
方法４では、まず、図１２に示すように、ＴＣＰウィンドウサイズ分析機能２３５がＴＣＰウィンドウサイズを取得する（ステップＳ５０１）。そして、例えば、取得したＴＣＰウィンドウサイズが閾値以下である場合（ステップＳ５０２、Ｙｅｓ）は、スコア算出部２４は送信元ＩＰアドレスに異常スコアを付与する（ステップＳ５０３）。また、取得したＴＣＰウィンドウサイズが閾値以下でない場合（ステップＳ５０２、Ｎｏ）は、スコア算出部２４は異常スコアを付与しない。
【００５６】
（方法５）
方法５では、まず、プロトコル違反判別機能２３７によってプロトコル違反の有無が判定される（ステップＳ６０１）。そして、プロトコル違反があると判定された場合（ステップＳ６０１、Ｙｅｓ）は、スコア算出部２４は送信元ＩＰアドレスに異常スコアを付与する（ステップＳ６０２）。また、プロトコル違反がないと判定された場合（ステップＳ６０１、Ｎｏ）は、スコア算出部２４は異常スコアを付与しない。
【００５７】
［第１の実施形態の効果］
コネクション制御装置１は、コネクション数算出部２１によって、サーバとクライアントとの間に確立されているＴＣＰコネクションの数をサーバ毎に算出する。そして、コネクション制御装置１は、判定部２２によって、サーバ毎のＴＣＰコネクションの数が所定の閾値以上であるか否かを判定する。さらに、コネクション制御装置１は、異常コネクション検出部２３によって、判定部２２によってＴＣＰコネクションの数が所定の閾値以上であると判定されたサーバに対してサービス不能攻撃を行う異常コネクションを検出する。その後、パケット制御部３０によって、サーバと異常コネクションのクライアントとのパケットの送受信を制御する。
【００５８】
ここで、サーバ毎のＴＣＰコネクションの数がある程度少ない場合は、コネクション占有型攻撃が成立しないため、異常コネクションの検出およびパケットの制御を行う必要がないうえに、異常コネクションの検出およびパケットの制御が正常なトラフィックに影響を与える場合もある。これに対して、コネクション制御装置１は、コネクション数算出部２１および判定部２２によって、必要がある場合にのみ異常コネクションの検出およびパケットの制御を行っているため、正常なトラフィックに影響を与えることなく、コネクション占有型攻撃を防ぐことができる。
【００５９】
また、コネクション数算出部２１は、ＴＣＰコネクションのパケットのヘッダ情報に含まれる宛先ＩＰアドレス毎に、ＴＣＰコネクションの数を集計する。これによって、コネクション数算出部２１は、サーバからコネクション数等の情報を直接得られない場合であっても、必要な情報を手に入れることができる。
【００６０】
また、異常コネクション検出部２３は、ＴＣＰコネクションのパケットのヘッダ情報に含まれる送信元ＩＰアドレス毎に集計したＴＣＰコネクションの数が所定の閾値以上である場合に、該ＴＣＰコネクションを異常コネクションとして検出する。これによって、ＴＣＰコネクションの許容数を占有するために多数のＴＣＰコネクションを確立しているクライアントを検出することができる。
【００６１】
また、異常コネクション検出部２３は、ＴＣＰコネクションで送受信されるパケットのパケットサイズから算出された実際のスループットの、ＴＣＰコネクションのＴＣＰウィンドウサイズおよびラウンドトリップタイムから算出された理論的スループットに対する割合が、所定の閾値以下である場合に、該ＴＣＰコネクションを異常コネクションとして検出する。これによって、異常に低いスループットによって長時間かけて通信を行っているコネクションを検出することができる。
【００６２】
また、異常コネクション検出部２３は、ＴＣＰコネクションがサーバによってクローズされ、かつクライアントによってクローズされていない場合に、該ＴＣＰコネクションを異常コネクションとして検出する。これにより、Ｈａｌｆ  Ｃｌｏｓｅ状態となったコネクションが、使用されていないにもかかわらず、ＴＣＰコネクションの許容数を占有することを防止することができる。
【００６３】
また、異常コネクション検出部２３は、ＴＣＰコネクションのＴＣＰウィンドウサイズが所定の閾値より小さい場合、また、ＴＣＰコネクションのパケットのパケットサイズのＴＣＰウィンドウサイズに対する割合が所定の閾値以下である場合に、該ＴＣＰコネクションを異常コネクションとして検出する。これによって、パケットの送受信等を意図的に長い時間をかけて行うことでコネクションを占有する攻撃を検知し防止することができる。
【００６４】
また、異常コネクション検出部２３は、ＴＣＰコネクションにおいてプロトコル違反となるパケットの送受信が行われている場合に、該ＴＣＰコネクションを異常コネクションとして検出する。これにより、サーバに不完全なＨＴＴＰヘッダを送り続けることで、サーバを待機状態にさせ、プロセスを消費させ接続不能状態にする攻撃を検知し防止することができる。
【００６５】
パケット制御部３０は、異常コネクションのクライアントに対し、ＴＣＰコネクションをリセットするパケットを送信することでパケットの送受信を制御する。これにより、正常な通信を行っているクライアントに影響を与えることなく、攻撃を行っているクライアントとのコネクションをリセットすることができる。
【００６６】
また、パケット制御部３０は、異常コネクションのパケットを廃棄するフィルタを設定することでパケットの送受信を制御する。これにより、正常な通信を行っているクライアントに影響を与えることなく、攻撃を行っているクライアントとの通信を遮断することができる。
【００６７】
また、パケット制御部３０は、異常コネクションのパケットを、予め用意したサーバへリダイレクトすることでパケットの送受信を制御する。これにより、通信を行う別サーバにおいてコネクションが異常であるか否かを、さらに検討し、異常でないと判断された場合は正常なコネクションとして扱うようにすることができる。
【００６８】
第１の実施形態においては、制御部が含まれる構成とし、検出部が異常コネクションを検出した場合は、制御部によってパケット制御が行われることとした。しかし、本発明はこれに限られず、例えば、制御部が含まれない構成とし、検出部が検出した結果をブラックリスト生成に用いること等としてもよい。
【００６９】
［その他の実施形態］
異常コネクション検出部２３は、上記の方法１〜５のうちの複数の方法を組み合わせた方法を用いて異常コネクションを検知するようにしてもよい。例えば、異常コネクション検出部２３は、方法２および方法４を組み合わせた方法を採用することができる。
【００７０】
この場合、例えば、異常コネクション検出部２３は、まず、ＴＣＰコネクションのＴＣＰウィンドウサイズが所定の閾値より小さいか否か、また、ＴＣＰコネクションのパケットのパケットサイズのＴＣＰウィンドウサイズに対する割合が所定の閾値以下であるか否かを判定する。
【００７１】
ここで、異常コネクション検出部２３は、ＴＣＰウィンドウサイズが所定の閾値より小さい、またはパケットサイズのＴＣＰウィンドウサイズに対する割合が所定の閾値以下であると判定した場合、方法４の処理を行う。すなわち、異常コネクション検出部２３は、該ＴＣＰコネクションの実際のスループットの理論的スループットに対する割合を計算し、計算した割合が所定値以下である場合に、該ＴＣＰコネクションを異常コネクションとして検知する。
【００７２】
これにより、異常コネクション検出部２３における計算量を減らすことができる。また、異常コネクション検出部２３が正常なＴＣＰコネクションを異常なＴＣＰコネクションとして検出する誤検出の確率を小さくし、検出の精度を向上させることができる。
【００７３】
また、パケット制御部３０が攻撃を防止するために行う制御の方法は、フィルタの設定およびリダイレクトに限られず、任意の方法とすることができる。例えば、パケット制御部３０は、異常コネクションのクライアントに対し、Ｃｏｏｋｉｅを入れたＳＹＮ／ＡＣＫパケット、不当なＡＣＫ  Ｓｅｑｕｅｎｃｅナンバーを入れたＳＹＮ／ＡＣＫパケット、ＡＣＫパケット、ＲＳＴパケット等の不当なパケットを送信し、応答要求を行ってもよい。また、例えば、パケット制御部３０は、異常コネクションのクライアントに対し、ＨＴＴＰ  ＣｏｏｋｉｅやＪａｖａＳｃｒｉｐｔ（登録商標）による応答要求を行ってもよい。また、例えば、パケット制御部３０は、異常コネクションのクライアントに対し、マウス移動やＣＡＰＴＣＨＡ（Completely  Automated  Public  Turing  test  to  tell  Computers  and  Humans  Apart）による応答要求を行ってもよい。
【００７４】
そして、クライアントから応答要求に適合する応答が返ってきた場合、該クライアントについて、例えば人や装置等による判断を行い、正常であると判断された場合は、解除機能３３２により該クライアントを制御対象から除外するようにしてもよい。
【００７５】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵ（Central  Processing  Unit）および当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７６】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００７７】
［プログラム］
図１４は、プログラムが実行されることにより、コネクション制御装置１が実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【００７８】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【００７９】
ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、コネクション制御装置１の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、コネクション制御装置１における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤ（Solid  State  Drive）により代替されてもよい。
【００８０】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【００８１】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３およびプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３およびプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００８２】
１  コネクション制御装置
２、３  サーバ
４  スイッチ
５、６  クライアント
１０  インタフェース
２０  パケット情報分析部
２１  コネクション数算出部
２２  判定部
２３  異常コネクション検出部
２４  スコア算出部
３０  パケット制御部
３１  リセットパケット送信機能
３２  フィルタ機能
３３  リダイレクト機能
２１１  ＴＣＰヘッダ分析機能
２１２  サーバ毎コネクション数算出機能
２３１  パケット受信時刻分析機能
２３２  送信元ＩＰアドレス毎集計機能
２３３  スループット分析機能
２３４  パケットサイズ分析機能
２３５  ＴＣＰウィンドウサイズ分析機能
２３６  ＴＣＰコネクション正常分析機能
２３７  プロトコル違反判別機能
３２１、３３１  ＩＰアドレス記録機能
３２２、３３２  解除機能
【図１】
2016175131.tif 000004
【図２】
2016175131.tif 000005
【図３】
2016175131.tif 000006
【図４】
2016175131.tif 000007
【図５】
2016175131.tif 000008
【図６】
2016175131.tif 000009
【図７】
2016175131.tif 000010
【図８】
2016175131.tif 000011
【図９】
2016175131.tif 000012
【図１０】
2016175131.tif 000013
【図１１】
2016175131.tif 000014
【図１２】
2016175131.tif 000015
【図１３】
2016175131.tif 000016
【図１４】
2016175131.tif 000017
【国際調査報告】
2016175131.tif 000018
2016175131.tif 000019