【実施例1】
【0012】
(システムの構成)
実施例1におけるネットワークを含むシステムの構成の例を
図1に示す。実施例1のシステムは、ネットワークに接続し通信を行う複数の端末10(端末10a、10b、10nのそれぞれを区別することなく代表的に端末を指し示す場合に端末10と記載し、他の符号も同じ記載とする)及びサーバ20と、ネットワークに配置されたルータ100と、ルータ100に接続する分析サーバ200を備える。
【0013】
ルータ100は、各ルータ100を通過する端末10及びサーバ20のネットワークトラフィックの統計をフロー毎に収集し、分析サーバ200に通知する。
図1の例ではルータ100cが分析サーバに接続されているため、ルータ100a、100bはルータ100cを経由して分析サーバ200に通知してもよい。また、ルータ100a、100bも図示を省略した回線を通じて分析サーバ200に通知してもよい。
【0014】
分析サーバ200はルータ100から通知された統計を蓄積して学習し、学習した値の範囲から外れた統計値を異常判定する。また、実施例1の構成では、分析サーバ200は管理端末としても動作し、管理者は分析サーバ200を介してルータ100や分析サーバ200のパラメータを設定することが可能である。ただし、分析サーバ200と管理端末は必ずしも同一の機器に実装される必要はなく、別々の装置として配置されてもよい。
【0015】
(分析サーバ200及びルータ100の構成)
分析サーバ200及びルータ100の構成の例を
図2に示す。分析サーバ200は、コレクタ処理部220と、異常検知部210と、入力部230を備える。コレクタ処理部220は、ルータ100から送信される統計パケットを受信し、統計情報を蓄積する。入力部230は、管理端末としての動作し、管理者が入力したルータ100と分析サーバ200への設定情報を受け付け、分析サーバ200内では異常検知部210への設定情報、ルータ100への設定情報を通知する。
【0016】
異常検知部210は、コレクタ処理部220により収集した統計情報を機械学習により解析し、正常な通信と攻撃の通信とを判定する。機械学習にはSupport Vector Machine(SVM)、あるいはクラスタ解析などを用いてもよいが、これらの機械学習の内容は実施例1の特徴ではなく、一般的に知られ実施されているため、詳しい説明を省略する。また、異常検知部210は、異常検知の分析手段を管理するための異常検知管理情報1001を保持する。
【0017】
異常検知管理情報1001の例を
図3に示す。異常検知管理情報1001は検知対象1011と検知条件1012の対応情報を持つ。検知対象1011には例えばリソース消費型DDoSといった攻撃の種別が格納される。検知条件1012には、機械学習や異常判定に使用する統計情報の項目や、重み付けのパラメータが格納される。
【0018】
管理者により、入力部230を介して検知対象1011に格納された種別のいずれかが指定され、異常検知部210は、指定された検知対象1011に対応する検知条件1012に従って、実行すべき異常検知の条件を設定する。
【0019】
図3の例では、検知対象1011のリソース消費型DDoSを検知するための検知条件1012として、後述するフローテーブルA、B、C(名称A、B、Cで識別されるフローテーブル)の異なり数及びパケット送信間隔(ルータ100でのパケットの受信間隔)が閾値以上のパケット数、統計の採取時間を機械学習の入力として使用することを示す。また、
図3の例では、理解しやすいように言葉の説明で表現したが、実際の異常検知管理情報1001は、それらの内容を表すプログラムであってもよいし、テーブルとして保持される値であって、それらの内容を表す特定の値であってもよい。
【0020】
なお、これらの統計情報はリソース消費型DDoSの検知に特に有効な統計情報の例であるが、他に機械学習の入力として、パケット数と、パケットサイズの合計と、TCPフラグのカウント数と、パケットサイズの分布と、パケットの送信間隔(受信間隔)の分布などの統計情報の中の1つまたは複数が検知条件1012として含まれてもよい。
【0021】
図2に示した分析サーバ200のコレクタ処理部220と、異常検知部210と、入力部230は、専用のハードウェアで実現されてもよいし、分析サーバ200のコンピュータとしてのプロセッサのプログラムを実行する処理により実現されてもよい。また、専用のハードウェアと、プロセッサのプログラムを実行する処理との組み合わせにより実現されてもよい。
【0022】
ルータ100は、制御部110と、受信パケット処理部120と、検索処理部160と、ルーティングテーブル170と、送信パケット処理部130と、トラフィック統計処理部140と、統計テーブル150を備える。パケットを中継する一般的なルータの処理を含み、受信パケット処理部120は、入力ポートを経由してパケットを受信し、検索処理部160へとパケットのヘッダ情報を出力する。
【0023】
検索処理部160は入力されたヘッダ情報を用いてルーティングテーブル170を検索し、ネクストホップと出力ポートを決定し、受信パケット処理部120へと通知する。受信パケット処理部120は、ネクストホップと出力ポート及びパケットを送信パケット処理部130へと出力する。
【0024】
送信パケット処理部130は、パケットのMedia Access Control(MAC)ヘッダと(Internet Protocol)IPヘッダのTime To Live(TTL)などの書き換えを行い、決定された出力ポートからパケットを送信する。以上が一般的なルータとしての動作であるが、これら以外に一般的なルータの処理を含んでもよい。
【0025】
制御部110は、ルーティングプロトコルに基づいて他のルータ100とルーティングテーブル170の経路情報を交換したり、分析サーバ200と通信して、管理者により入力された設定情報を受信したりする。そして、制御部110は、受信パケット処理部120、送信パケット処理部130、検索処理部160、トラフィック統計処理部140へ、管理者により設定される各種パラメータを変更する。
【0026】
トラフィック統計処理部140は、受信パケット処理部120からパケットのヘッダ情報を入力し、入力されたヘッダ情報に基づいてトラフィックの統計情報を生成する。統計テーブル150は、トラフィック統計処理部140が生成した統計情報を後述するフローテーブルの形式で保持する。
【0027】
トラフィック統計処理部140の例を
図4に示す。トラフィック統計処理部140は、ヘッダ情報蓄積部142と、統計テーブル管理部143と、統計パケット生成部141を備える。各部の処理を実行するための各種パラメータは、制御部110を介してあらかじめ設定される。
【0028】
ヘッダ情報蓄積部142は、パケットのヘッダ情報を受信パケット処理部120から受け取り、統計テーブル管理部143に出力する。統計テーブル管理部143は、後述するエントリ更新方法管理情報3001を備え、ヘッダ情報蓄積部142から入力されたヘッダ情報とエントリ更新方法管理情報3001に従って統計テーブル150を更新する。
【0029】
統計テーブル150のエントリが統計パケット生成の条件を満たした場合、統計テーブル管理部143は、統計パケット生成部141へ条件を満たしたエントリの統計情報を出力する。統計パケット生成部141は、入力されたエントリの統計情報を送信するためのフォーマットに変換し、ルータ100の送信パケット処理部130に出力する。
【0030】
なお、統計パケットの送信先である分析サーバ200のアドレス及び統計パケットを生成する条件は、管理者によって制御部110を介して事前に設定される。統計パケットを生成する条件の例として、統計情報に含まれる特定の項目に対する閾値や、統計情報を採取し始めてからの経過時間、統計情報が最後に更新されてからの経過時間などが設定されてもよい。
【0031】
統計テーブル150の例を
図5に示す。統計テーブル150は、トラフィックの統計情報をフロー毎に管理するためのフローテーブル5001を少なくとも1つ以上備え、統計テーブル150に備えられたフローテーブル5001は制御部110を介して管理者によってあらかじめ設定される。フローテーブル5001aにはA、フローテーブル5001bにはB、フローテーブル5001cにはC、フローテーブル5001nにはNというような名称(識別情報)が付けられる。
【0032】
フローテーブル5001の例を
図6A〜6Cに示す。フローテーブル5001は、5−tupple(5タプル)すなわち送信元IPアドレス(S−IP)、送信先IPアドレス(D−IP)、送信元ポート番号(S−PT)、送信先ポート番号(D−PT)、プロトコル番号(PCL)の5つから任意に選択された組み合わせをキー項目としたテーブルであり、その組み合わせは管理者によって設定される。
【0033】
例えば
図6A〜6Cに示すように、キー項目の組み合わせとして、フローテーブル5001には、フローテーブル5001a(S−IP、PCL)、フローテーブル5001b(S−IP、D−IP、PCL)、フローテーブルC5001c(S−IP、D−IP、PCL、S−PT、D−PT)などが定義される。
【0034】
キー項目の内容(値)が1つでも異なれば、すなわちフローテーブル5001bの送信元IPアドレスの値と送信先IPアドレスの値がそれぞれ同じ2つのフローであってもプロトコル番号が異なれば、異なるエントリとなる。統計テーブル管理部143は、ヘッダ情報蓄積部142から受信したヘッダ情報に基づいて、フローテーブル毎にエントリを検索し、一致するキー項目を持つエントリの統計情報を更新する。
【0035】
各フローテーブル5001a、5001b、5001cが保持する統計情報には、パケット数と、統計パケット生成の条件を満たすまでの採取時間と、異なり数と、送信間隔(受信間隔)が閾値以上のパケットの数などが含まれる。また、送信元から送信先への統計情報に加えて、送信先から送信元への統計情報が含まれてもよい。
【0036】
異なり数は、5−tuppleのうち、キー項目に含まれない項目のユニークな組み合わせの数である。例えば、フローテーブル5001aにおける異なり数とは、キー項目(送信元IPアドレスとプロトコル番号)に含まれない送信先IPアドレス、送信元ポート番号、送信先ポート番号のユニークな組み合せの数である。
【0037】
フローテーブル5001bにおける異なり数とは、キー項目(送信元IPアドレス、送信先IPアドレス、プロトコル番号)に含まれない送信元ポート番号と送信先ポート番号のユニークな組み合せの数である。フローテーブル5001cはキー項目として5−tuppleの5項目を含むため、異なり数はない。
【0038】
統計情報は、
図6A〜6Cの例に限定されるものではなく、この他の統計情報として、パケットサイズの合計と、TCPフラグのカウント数と、パケットサイズの分布と、パケットの送信間隔(受信間隔)の分布の中の1つまたは複数が含まれてもよい。また、フローの情報が置き換えられて破棄されるためのLeast Recently Used(LRU)の管理情報が含まれてもよい。
【0039】
なお、実施例1でフローテーブル5001は、いずれもセットアソシエイティブの形態をとる。セットアソシエイティブで構成されるテーブルのフォーマットの例を
図7に示す。セットアソシエイティブのテーブル6001は、1つのライン番号あたりにN個(Nは1以上の整数)のエントリ番号を保持する(N個の格納欄がある)。ここで、本実施例では
図7でエントリ番号を保持する例を説明するが、
図6A〜6Cに示したエントリの内容そのものを保持してもよい。
【0040】
図7の例ではライン番号あたり4つのエントリ番号を保持し、このようなテーブルは4−wayセットアソシエイティブのテーブルと呼ばれる。実施例1におけるセットアソシエイティブのテーブル6001は、フローテーブル5001aとフローテーブル5001bなどで区別されるフローテーブル5001のそれぞれに対して設けられる。
【0041】
キー項目の値が指定されてフローテーブル5001が更新される場合、セットアソシエイティブのテーブル6001においてエントリ番号を絞るため、まず、指定されたキー項目の値がハッシュ関数に入力され、ハッシュ値が算出される。ここでハッシュ関数は、一般的な、ハッシュ値の衝突をある程度許容するが計算処理の軽いCyclic Redundancy Check(CRC)、city−hash、farm−hashなどであってもよい。
【0042】
算出されたハッシュ値はライン番号として、ライン番号に対応する1〜4つのエントリ番号がテーブル6001から取得され、取得された1〜4つのエントリ番号にフローテーブル5001でそれぞれ対応するキー項目の値が取得される。取得されたキー項目の値いずれかと指定されたキー項目の値が一致し、同一値のキー項目のエントリがある場合、フローテーブル5001で該当エントリの統計情報が更新される。
【0043】
同一値のキー項目を持つエントリがなく、かつテーブル6001のエントリ番号の4つの格納欄に空きがある場合、エントリ番号が新たに付与されて、フローテーブル5001にエントリが登録されて、テーブル6001の空きに新たに付与されたエントリ番号が追加され、空きがない場合はエントリ番号の置換が行なわれる。
【0044】
なお、セットアソシエイティブの構成において、エントリ番号の置換には、LRUや疑似LRUが用いられることが一般的である。LRUでは、ライン毎の複数のエントリ番号のうち、最も未使用の時間の長いエントリ番号が、優先的に置換される処理である。
【0045】
また、LRUは処理時間が大きいために、セットアソシエイティブの構成で多くの場合は、処理を簡略化した疑似LRUが用いられる。この他にも、アクセスされた回数が小さいエントリから優先的に置換する方法も一般的である。
【0046】
しかし、LRU等の置換処理でフローテーブル5001やセットアソシエイティブのテーブル6001の更新を行った場合、リソース消費型DDoSのようなトラフィック量の小さいフローのエントリは置換対象となりやすく、異常検知に必要な統計情報が欠落してしまう可能性がある。そのため、統計テーブル管理部143は、エントリ更新方法管理情報3001を備える。
【0047】
エントリ更新方法管理情報3001aの例を
図8に示す。エントリ更新方法管理情報3001aは、検知対象3011の種別に対応した、エントリ置換のルール3021の情報と、エントリ置換時の統計パケットの生成条件3031の情報と、これらのルールを適用するフローテーブル3041としてフローテーブル5001a、5001b、5001cを識別する名称とを備える。なお、エントリ更新時の統計パケットの生成条件が備えられてもよい。
【0048】
統計テーブル管理部143は、管理者によってあらかじめ指定された検知対象3011種別に対応したルール3021と、生成条件3031と、適用するフローテーブル3041をエントリの更新に使用する。
図8のエントリ更新方法管理情報3001aに示すエントリ置換時の統計パケットの生成条件3031は、前述した統計パケットの生成条件とは異なり、エントリ置換時にのみ適用される。詳細は後述のエントリ更新のフローチャートで説明する。
【0049】
検知対象3011がリソース消費型DDoSに対するエントリ置換のルール3021の例として、パケット送信間隔(受信間隔)が閾値以上のパケット数が少ないものから優先的に置換するというルールが設定される。また、エントリ置換時の統計パケットの生成条件3031の例として、エントリ置換時にパケット送信間隔(受信間隔)が閾値以上のパケット数が一定以上というルールが設定される。そして、適用するフローテーブル3041の例として、フローテーブル5001の名称がA、B、Cであると設定される。
【0050】
これにより、リソース消費型DDoSの検知に必要な統計情報を優先的に残し、統計情報を欠落させることなく分析サーバ200に通知することが可能となる。なお、エントリ置換のルール3021及び統計パケットの生成条件3031の情報としては、
図8に示した例の他にも、統計情報に含まれる複数の項目及びその組み合せが設定されてもよい。
【0051】
また、検知対象3011の種別が管理者によって指定されていない場合(指定なしと設定されている場合)、統計テーブル管理部143は、疑似LRUのような一般的な処理を用いて、テーブル6001のエントリ番号の置換を行ってもよく、エントリ更新方法管理情報3001aの情報は、プログラムあるいはテーブルの値のいずれかであってもよい。
【0052】
(システムの動作シーケンス)
実施例1のシステムにおける動作シーケンスの例を
図9に示す。まず、管理者により分析サーバ200の入力部230を介して、分析サーバ200の異常検知管理情報1001に対して検知対象(の種別)が指定され、フローテーブル5001とエントリ更新方法管理情報3001の設定情報及び分析サーバ200のアドレスなどの設定情報が受け付けられて、ルータ100に対して送信される(ステップS501)。
【0053】
設定情報を受信したルータ100は、制御部110を介してトラフィック統計処理部140の統計パケット生成部141、統計テーブル管理部143に設定を行い、統計収集処理を開始する(ステップS502)。トラフィックの統計収集を継続し、統計収集処理中に、統計パケットの生成条件を満たした場合、ルータ100は、統計情報を含む統計パケットを分析サーバ200に送信する(ステップS503)。
【0054】
分析サーバ200は、統計パケットを受信すると、統計パケットに含まれる統計情報を蓄積する(ステップS504)。分析サーバ200は、管理者から与えられる学習指示を契機として、蓄積された統計情報を機械学習に入力し、正常か異常かを判定する判定器を作成する(ステップS505)。
【0055】
以降もルータ100は、トラフィックの統計収集を継続し、統計収集処理中に、統計パケットの生成条件を満たした場合、ルータ100は、統計情報を含む統計パケットを分析サーバ200に送信する(ステップS506)。分析サーバ200は、ルータ100から統計パケットを受信すると、統計パケットに含まれる統計情報を判定器へと入力して、正常か異常かの判定を行う(ステップS507)。
【0056】
(統計テーブル150のエントリ更新のフローチャート)
統計テーブル管理部143が統計テーブル150を更新するフローチャートの例を
図10に示す。統計テーブル管理部143は、ヘッダ情報蓄積部142からパケットのヘッダ情報を受け取ると、統計テーブル150のエントリ更新処理を開始する(ステップS701)。なお、受信パケット処理部120がパケットを受信すると、トラフィック統計処理部140へ受信されたパケットのヘッダ情報を出力し、トラフィック統計処理部140の中では、ヘッダ情報蓄積部142がヘッダ情報を受け取る。
【0057】
統計テーブル管理部143は、各フローテーブル5001のキー項目に対応する5−tuppleの情報をパケットのヘッダ情報から抽出し、ハッシュ関数に入力してライン番号を算出する(ステップS702)。そして、算出されたライン番号を基にセットアソシエイティブのテーブル6001のラインにアクセスしてエントリ番号を取得し、エントリ番号を基にフローテーブル5001にアクセスしてキー項目の情報が一致するエントリを検索する(ステップS703)。
【0058】
一致するエントリがあり、ステップS703の検索にて見つかった場合、統計テーブル管理部143は、見つかったエントリの統計情報を更新する(ステップS704)。一致するエントリがない場合、統計テーブル管理部143は、ステップS702で算出されたライン番号のラインに空きがあるかを判定し(ステップS705)、空きがあると判定した場合は空きへ新規のエントリ番号を追加して、追加されたエントリ番号のエントリをフローテーブル5001に追加し(ステップS706)、追加されたエントリの統計情報を更新する(ステップS704)。
【0059】
ステップS704においてエントリの統計情報を更新した後、統計テーブル管理部143は、更新されたエントリが、
図8では図示を省略したエントリ更新時の統計パケットの生成条件を満たすかを判定する(ステップS707)。生成条件を満たすと判定した場合、統計テーブル管理部143は、統計パケット生成部141にパケット生成を通知し(ステップS708)、エントリ更新処理を終了する(ステップS709)。
【0060】
なお、ステップS708に応じてパケットが生成されると、パケットの生成に用いられたエントリはフローテーブル5001から削除され、削除されたエントリのエントリ番号はセットアソシエイティブのテーブル6001から削除される。ステップS707において生成条件を満たさないと判定した場合、統計テーブル管理部143のエントリ更新処理はそのまま終了する(ステップS709)。
【0061】
ステップS705においてラインに空きがないと判定した場合、統計テーブル管理部143は、エントリ更新方法管理情報3001に設定された、エントリ置換のルール3021に基づいてエントリを置換し(ステップS710)、エントリの統計情報を更新する(ステップS711)。
【0062】
すなわち、セットアソシエイティブのテーブル6001において空きがないと判定されたラインの中からエントリ番号を、エントリ置換のルール3021に基づいて特定し、特定されたエントリ番号のエントリをフローテーブル5001から削除し、特定されたエントリ番号をセットアソシエイティブのテーブル6001から削除して、削除して空きとなった欄へ新たなエントリ番号とエントリを追加する。そして、追加されたエントリの統計情報を更新する。
【0063】
その後、統計テーブル管理部143は、置換されるエントリがエントリ置換時の統計パケット生成条件3031を満たすかを判定し(ステップS712)、条件を満たすと判定した場合、統計パケット生成部141にパケット生成を通知し(ステップS708)、エントリ更新処理を終了する(ステップS709)。この際に生成される統計パケットには、エントリ置換時の統計パケット生成条件3031を満たしたことを示すフラグ情報が付加される。
【0064】
なお、ステップS708に応じてパケットが生成されると、パケットの生成に用いられたエントリはフローテーブル5001から削除され、削除されたエントリのエントリ番号はセットアソシエイティブのテーブル6001から削除される。ステップS712において生成条件を満たさないと判定した場合、統計テーブル管理部143のエントリ更新処理はそのまま終了する(ステップS709)。
【0065】
ステップS710において統計テーブル管理部143は、置換対象となって削除されるエントリの統計パケットを生成するように、統計パケット生成部141へ通知してもよい。また、削除されるエントリの情報があらかじめ設定された条件に適合するかを判定し、条件に適合すると判定した場合に、統計パケット生成部141へ通知してもよい。
【0066】
(トラフィック統計処理部140と統計テーブル150の変形例)
以上の説明では、統計テーブル150のフローテーブル5001がセットアソシエイティブの形態として、フローテーブル5001のエントリへの処理を説明した。しかしながら、以上の説明の形態に限定されるものではなく、フローテーブル5001の他の形態として、キー項目からライン番号を求める際に複数のハッシュ関数を使用して複数のライン番号の候補を求め、その中から対象となるエントリを求めるようにしてもよい。
【0067】
また、
図2を用いて、トラフィック統計処理部140及び統計テーブル150がルータ100の内部に実装される例を説明したが、トラフィック統計処理部140及び統計テーブル150はルータ100の外部に配置される統計収集サーバ300に実装されてもよい。統計収集サーバ300を含む構成の例を
図11に示す。
【0068】
ルータ100の制御部110と、検索処理部160と、ルーティングテーブル170と、分析サーバ200は
図2を用いて説明したとおりであるが、ルータ100の受信パケット処理部120は、受信したパケットを複製して統計収集サーバ300へと送信する。また、送信パケット処理部130は、統計収集サーバ300から受信した統計パケットを分析サーバ200へ送信する。
【0069】
ここで、受信パケット処理部120は、受信したパケットのヘッダ情報を統計収集サーバ300へ送信してもよく、このために、受信したパケットのヘッダ情報をデータとする新たなパケットを作成して統計収集サーバ300へ送信してもよい。
【0070】
統計収集サーバ300のトラフィック統計処理部140と統計テーブル150は、
図2、4〜10を用いて説明したとおりであり、トラフィック統計処理部140は、統計収集サーバ300が受信したパケットのヘッダ情報を入力し、統計情報を統計収集サーバ300からルータ100へ通知する。
【0071】
なお、統計収集サーバ300は、分析サーバ200とも接続され、ルータ100からは複製されたパケットを受信し、設定情報と統計情報を分析サーバ200と直接に送受信してもよい。統計収集サーバ300はプロセッサ310とメモリ320を備えた一般的なコンピュータでもよく、メモリ320に統計テーブル150とプログラム330が格納され、プログラム330をプロセッサ310が実行することにより、トラフィック統計処理部140となってもよく、
図10を用いて説明した処理を実現するプログラムがプログラム330に含まれてもよい。そして、ルータ100はネットワークの一般的なスイッチあるいは一般的なルータに置き換えられてもよい。
【0072】
(リソース消費型DDoS以外の攻撃への応用)
以上の説明では、リソース消費型DDoSの検知における統計情報の欠落を課題とし、これを解決するための実施例を説明した。しかしながら、リソース消費型DDoSの検知に限定されるものではなく、リソース消費型DDoS以外の攻撃を検知することも可能であり、特にCommand and Control (C&C)サーバ通信やスキャン活動、フラッディングなどを検知対象とすることができる。
【0073】
ところで、複数の検知対象を同じ時間内で監視する場合、検知対象それぞれの動作が異なり、エントリ置換のルール3021の内容が異なるため、エントリ置換のルール3021の複数の内容が競合して、他の検知対象に必要なエントリを置換対象としてしまい、全ての検知対象に関する統計を欠落することなく採取できない場合がある。
【0074】
これを防ぐため、ルータ100の統計テーブル管理部143は、以下に示す競合管理情報7001を保持し、競合管理情報7001の情報に従ってエントリ置換のルール3021の内容が競合する検知対象に対し、検知対象毎にフローテーブル5001を作成する。これにより、検知対象3011の第1の種別に対するエントリ置換のルール3021の内容を第1のフローテーブル5001へ適用しても、検知対象3011の第2の種別のための第2のフローテーブル5001へ影響しない。
【0075】
検知対象を複数とした場合のエントリ更新方法管理情報3001bの例を
図12に示す。この例では、リソース消費型DDoSとC&Cサーバのエントリ置換のルール3021は同じ内容のルールであり競合しないが、フラッディングとはエントリ置換のルール3021が異なる内容のルールであり、そのルールの内容からフローテーブルのA、Bにおいて競合する可能性がある。
【0076】
このような競合の発生する可能性があるので、統計テーブル管理部143は、エントリ置換のルール3021が競合するかしないかを判定するために、競合管理情報7001を参照する。競合管理情報7001の例を
図13に示す。競合管理情報7001には、検知対象ごとに、他のどの検知対象と競合しないかの情報が登録されている。
図13の例では、リソース消費型DDoSとC&Cサーバ通信は競合しないが、フラッディングは競合する可能性があることを示す。
【0077】
管理者がエントリ更新方法管理情報3001bと競合管理情報7001を設定する契機で、あるいはエントリ更新方法管理情報3001bと競合管理情報7001が予め設定され、管理者がエントリ更新方法管理情報3001bの検知対象3011の種別を指定する契機で、統計テーブル管理部143は、競合管理情報7001を検索して競合を判定する。
【0078】
判定の結果、競合しないと判定した場合、統計テーブル管理部143は、検知対象3011の複数の種別に対して、共通のフローテーブル5001へエントリ置換のルール3021のそれぞれの内容のルールを適用し、共通のフローテーブル5001を用いて統計情報を処理する。
【0079】
判定の結果、競合する可能性があると判定した場合、統計テーブル管理部143は、競合する可能性があると判定された検知対象3011の種別に対応する、適用するフローテーブル3041の名称の一致を判定し、一致すると判定された名称のフローテーブル5001を一致する個数作成する。ここで、適用するフローテーブル3041の名称を予め設定された期間だけ識別できるように変更してもよい。
【0080】
例えば、検知対象3011のリソース消費型DDoSとフラッディングとが競合する可能性があると判定した場合、リソース消費型DDoSに対応する、適用するフローテーブル3041のA、BをそれぞれA1、B1に変更し、フラッディングに対応する、適用するフローテーブル3041のA、BをそれぞれA2、B2に変更し、名称がA1、B1、A2、B2となる4つのフローテーブル5001を作成してもよい。
【0081】
そして、統計テーブル管理部143は、それぞれのフローテーブル5001毎にエントリ置換のルール3021の内容のルールとエントリ置換時の統計パケット生成条件3031の内容の条件を適用する。なお、競合管理情報7001は、検索可能な情報の形態であれば、プログラムによる情報であってもよいし、テーブルとして値が保持されてもよい。
【0082】
以上で説明したように、統計情報を含むフローテーブルを欠落なく記憶できる容量のメモリが無く、フローテーブルを記憶するメモリの容量が小さい場合であっても、リソース消費型DDoSのようなフローの統計情報を収集することが可能となる。また、逆にフローテーブルを記憶するメモリの容量を削減することが可能となる。
【実施例2】
【0083】
(システムの構成)
実施例1では分析サーバ200で異常を検知する例を説明したが、実施例2では一般的なパケット解析装置でトラフィックを検閲する例を説明する。実施例2におけるネットワークを含むシステムの構成の例を
図14に示す。実施例1で説明した
図1の例との違いは、ルータ100cが新たにパケット解析装置400と接続している点である。このため、端末10とサーバ20及びルータ100a、100bは
図1を用いて説明したとおりであるが、ルータ100cと分析サーバ200は
図1を用いた説明とは異なる。
【0084】
パケット解析装置400は具体的には、フォレンジックサーバやDeep Packet Inspection(DPI)装置などの解析装置である。分析サーバ200がルータ100から通知される統計情報を用いて異常を検知するのに対し、パケット解析装置400はルータ100からミラーリングやポリシーベースルーティングなどで送信されたパケットを受信して検閲する。
【0085】
パケット解析装置400は分析サーバ200よりも詳細な情報を解析することが可能であるが、ルータ100cとパケット解析装置400との間の回線帯域の容量が限られるために、ルータ100を経由する多量のトラフィックをパケット解析装置400が受信して監視することはできない。
【0086】
実施例2の
図14に示す分析サーバ200は、トラフィックの統計情報を網羅的に解析して一次スクリーニングを実施し、パケット解析装置400へと送信するフローを選択し、パケット解析装置400へのトラフィックを絞り込む。これにより、ルータ100とパケット解析装置400との間の限られた回線帯域容量が効率的に使用され、検閲する価値のあるトラフィックが監視される。
【0087】
このように、リソース消費型DDoSをパケット解析装置400で監視するためには、分析サーバ200が、リソース消費型DDoSの疑いのあるトラフィックの統計情報をそのトラフィックの開始から短時間で検知し、パケット解析装置400へのパケット送信をルータ100cへ指示する必要がある。
【0088】
しかし、リソース消費型DDoSは通信が低レートであり、実施例1で説明した統計パケットの生成条件を満たすまでに時間がかかるため、リソース消費型DDoSが開始されてから、パケット解析装置400でパケットを受信して検閲が始まるまでに時間がかかる。そのため、実施例2では、トラフィック統計処理部140のフローテーブル及びエントリ更新方法管理情報に後述する情報が追加されて、リソース消費型DDoSの早期検知を図る。
【0089】
(フローテーブル5001dの構成)
実施例2におけるフローテーブル5001dの例を
図15に示す。実施例1の
図6を用いて説明したフローテーブル5001a〜5001cとの違いは、統計情報として、0か1の値をとる通知済フラグ5011の情報がエントリ毎に追加されている点である。通知済フラグ以外の統計情報と、エントリ番号と、キー項目は、既に説明したとおりである。
図15に示した例は、キー項目が
図6Aに相当するものであるが、
図6B、6Cに相当するキー項目であってもよい。
【0090】
通知済フラグ5011の値は、初期値が0であり、後述する早期検知パケットの生成条件が満たされた場合に1となる。いったん通知済フラグ5011が1になると、それ以後、1となったエントリに関する早期検知パケットは、早期検知パケットの生成条件が満たされても送信されない。
【0091】
(エントリ更新方法管理情報3001cの構成)
実施例2におけるエントリ更新方法管理情報3001cの例を
図16に示す。実施例1の
図8を用いて説明したエントリ更新方法管理情報3001aとの違いは、早期通知パケットの生成条件5012が追加されている点である。検知対象3011と、エントリ置換のルール3021と、エントリ置換時の統計パケット生成条件3031と、適用するフローテーブル3041は、既に説明したとおりである。
【0092】
検知対象3011がリソース消費型DDoSに対し、早期通知パケットの生成条件5012の内容となる条件として、例えば、パケットの送信間隔(受信間隔)が閾値以上のパケット数が一定数以上と設定される。ここで、パケット数を判定するために、送信間隔(受信間隔)の閾値とは関連のない一定数(閾値)と比較されてもよい。
【0093】
そして、この一定数(閾値)として、十分に小さい値が設定されることにより、リソース消費型DDoSのトラフィックの可能性を、そのトラフィックの開始から短時間で判定でき、パケット解析装置400へのパケットの転送をルータ100cへ指示することが可能となる。また、一定数(閾値)を十分に小さくすることで、False Negative Rateを小さくできる。なお、一定数(閾値)は、エントリ置換のルール3021のパケット数が少ないものより小さい値が望ましい。
【0094】
早期通知パケットの生成条件5012は、
図10に示したフローチャートのステップS707において使用される。実施例2では、統計テーブル管理部143が、ステップS707において、実施例1と同様に更新されたエントリが、エントリ更新時の統計パケットの生成条件を満たすかを判定することに加え、早期通知パケットの生成条件5012の内容の条件を満たすかを判定する。
【0095】
ステップS707において早期通知パケットの生成条件5012の内容の条件を満たすと判定した場合、統計テーブル管理部143は、フローテーブル5001dの判定されたエントリの通知済フラグ5011を1に変更して、統計パケット生成部141に早期通知パケットの生成を通知する。
【0096】
この通知に対して、統計パケット生成部141は、統計情報に加えて早期通知パケットであることを示すフラグと検知対象の情報を早期通知パケットに含める。なお、以上で説明した早期通知パケットの生成においては、早期通知パケットを生成した後も、通知に使用されたエントリはフローテーブル5001dから削除されない。これにより、異なり数などの統計情報を、分析サーバ200の方でも異常を検知するのに十分な量採取することが可能となる。
【0097】
(システムの動作シーケンスの説明)
実施例2のシステムにおける動作シーケンスの例を
図15に示す。
図15に示すようにパケット解析装置400の動作シーケンスが、
図9に示した動作シーケンスに加わる。なお、ステップS901〜S905の説明は、実施例1における
図9のステップS501〜505と同じ説明であるので、説明を省略する。
【0098】
ルータ100は、ステップS903でトラフィックの統計収集処理を開始した後、トラフィックの統計収集を継続し、早期通知パケットの生成条件5012を満たすと判定した場合、ルータ100は早期通知パケットを分析サーバ200に送信する(ステップS906)。
【0099】
分析サーバ200は早期通知パケットを受信すると、早期通知パケットに含まれるキー項目に一致するフローもしくはキー項目の一部を含むフローをパケット解析装置400へとミラーリングするよう、ルータ100へと設定指示を通知する(ステップS907)。ルータ100は設定指示を受信すると、設定指示で指定されるフローをパケット解析装置400へとミラーリングするよう、受信パケット処理部120及び送信パケット処理部130を制御する(ステップS908)。
【0100】
このミラーリングのために、受信パケット処理部120と送信パケット処理部130にミラーリングのための回路が設けられてもよいし、制御部110がルーティングテーブル170にミラーリングするルートを設定してもよい。パケット解析装置400は、ルータ100から送信されたパケットを受信すると、パケットを検閲し、異常か正常かの判定を行う(ステップS909)。
【0101】
以上で説明したように、リソース消費型DDoSの攻撃の始まりを早期に検知し、フローを絞り込んでパケット解析装置400で解析することが可能となり、ルータ100とパケット解析装置400の間の回線帯域容量を効率的に使用しつつ、トラフィックを漏れなく監視することが可能となる。