(58)【調査した分野】(Int.Cl.,DB名)
請求項2に記載のパケット中継装置であって、予め複数種類の攻撃パケットの条件を設定し、前記判定結果に関する情報として、前記攻撃の種別を示す情報を含めて出力し、前記攻撃種別を示す情報とフロー識別情報に基づきフロー統計情報をカウントすることを特徴とするパケット中継装置。
請求項2に記載のパケット中継装置であって、前記属性として、パケットの廃棄要因の判定を行い、前記判定結果に関する情報として、前記廃棄要因を示す情報を含めて出力することを特徴とするパケット中継装置。
【発明を実施するための形態】
【0013】
以下、本発明の実施形態を図面に基づいて説明する。
図1は、本発明の一実施例におけるパケット中継装置を適用するネットワークの構成を示す図である。
フロー統計機能を備える本実施例のパケット中継装置100は、インターネット600とLAN700を接続している。また、本実施例のパケット中継装置100は、管理端末400と接続され、管理者が管理端末400でパケット中継装置100の設定等の管理を行う。パケット中継装置100は、インターネット600とLAN700間の通信を中継するとともに通信に関するフローの統計情報をカウントし、カウントしたフローの統計情報をアナライザ500へ送信し、アナライザ500でフローの統計情報の解析を行う。
【0014】
図2は、本発明の一実施例におけるパケット中継装置の構成を示す図である。
パケット中継装置100は、入力回線を接続する入力ポート110、パケットを受信するパケット受信部120、受信パケットの出力ポートの判定を含むパケット中継処理を行う受信側パケット処理部130、受信パケットに対して各種判定を行う受信側判定部140、受信側のフロー統計処理をする受信側統計処理部150、受信パケットを送信側パケット処理部180へ中継するパケット中継処理手段170、送信パケットの受信MACアドレスと送信MACアドレスの書き換えを含むパケット中継に関する処理を行う送信側パケット処理部180、送信パケットに対して各種判定を行う送信側判定部190、送信側のフロー統計処理をする送信側統計処理部200、パケットを送信するパケット送信部210、出力回線を接続する出力ポート220、パケット中継装置の管理者がパケット中継装置の管理を行う管理端末400の指示に基づいて受信側パケット処理部130、受信側判定部140、受信側統計処理部150、送信側パケット処理部180、送信側判定部190、送信側統計処理部200に対するテーブル設定の指示、テーブル読み出しの指示、パケット中継装置100でカウントしたフロー統計情報のアナライザ500への送信、通信プロトコル処理等を行う制御CPU160で構成する。
【0015】
受信側判定部140は、受信パケットの攻撃種別の判定と、受信パケットを中継するか廃棄するかの判定と、廃棄する場合には廃棄要因の判定を行う。送信側判定部190は、送信パケットの攻撃種別の判定と、送信パケットを転送するか廃棄するかの判定と、廃棄する場合には廃棄要因の判定を行う。
【0016】
なお受信側統計処理部150と送信側統計処理部200、受信側判定部140と送信側判定部190は、同様の構成である。制御CPU160は、生成したフロー統計情報をアナライザ500が接続された出力回線を接続する出力ポート221から出力し、アナライザ500は出力されたフロー統計情報の解析を行う。
【0017】
図3は、本発明の一実施例におけるパケットヘッダ情報の構成を示す図である。
本実施例において、パケット中継装置100の内部で扱うパケットヘッダ情報300は、受信パケットのパケットヘッダであるL2情報305、L3情報306、L4情報307、L7情報308、ペイロード309と、パケット受信部120で判定して付加した入力ポート情報301、出力ポート情報302、パケットのByte長303、受信側判定部140で判定して付加した判定結果304とで構成する。
【0018】
判定結果304は、送信側判定部190において、送信側判定部190の判定結果で上書きしてもよい。Byte長303は、ペイロード長、パケット長、フレーム長、Preamble、Inter Frame Gapを含めた回線においてパケットが占有するByte長を示す回線長から指定する。その他、Frame Check SequenceのByte長を含める、含めない等、任意の範囲でByte長を定義できる。出力ポート情報302は、受信側パケット処理部130で判定して付加する。出力ポート情報302は、受信側パケット処理部130で出力ポート情報302を判定する前は未定義のフィールドである。L2情報305はEthernetヘッダ、L3情報306はIPヘッダ、L4情報307はTCPヘッダ、UDPヘッダ、L7情報308はhttpヘッダが代表的な例であるが、その他のプロトコルヘッダであっても構わない。
【0019】
図4は、本発明の一実施例における受信側判定部の構成を示す図である。
受信側判定部140は、Logic攻撃判定部141、フィルタ判定部142、送信元詐称判定部143、フラッド攻撃判定部144、廃棄要因判定部145で構成する。
Logic攻撃判定部141には、システムの脆弱性を利用する攻撃と判定する条件(Byte長に関する条件を含む)であるLogic攻撃テーブルを予め本発明のパケット中継装置100の起動時に制御CPU160または管理者が登録しておく。Logic攻撃判定部は、Logic攻撃テーブル1410に一致した受信パケットをLogic攻撃と判定する。
フィルタ判定部142には、パケット中継装置100の管理者が定義したフィルタすべきフロー(パケットヘッダ情報300に関する条件で定まるパケットの集合)の条件を登録したフィルタテーブルを予め登録しておく。フィルタ判定部142は、フィルタリスト(フィルタテーブルとも称する)に一致した受信パケットをフィルタパケット(ユーザ(管理者)が登録した攻撃パケット)と判定する。
送信元詐称判定部143では、uRPF(unicast Reverse Path Forwarding)等の手段で受信パケットの送信元アドレスに関する情報が詐称であると判定した受信パケットを送信元詐称攻撃と判定する。
フラッド攻撃判定部144では、フローの帯域がパケット中継装置100の管理者が定義した監視帯域を超過した場合、またはフローのバースト量がパケット中継装置100の管理者が定義した許容バースト量を超過した場合、フラッド攻撃と判定する。
廃棄要因判定部145では、Logic攻撃判定部141、フィルタ判定部142、送信元詐称判定部143、フラッド攻撃判定部144で攻撃と判定するフィルタ条件以外の廃棄要因を含むか否かを判定する。廃棄要因判定部145では、廃棄要因として、IPヘッダ異常、TTL超過、Null廃棄(経路検索の結果、宛先ホストが存在しない)等の判定を行う。攻撃と判定するフィルタ条件および各廃棄要因に一致しない場合は、正常通信と判定し当該パケットを通過とする。
【0020】
複数の攻撃種別または廃棄要因に一致すると判定された受信パケットは、優先度判定部146にて、複数の攻撃種別または廃棄要因のうち、優先度を考慮していずれかを判定結果とする。例えば、IPヘッダ異常>Logic攻撃>フィルタ>送信元詐称>フラッド攻撃>Null廃棄>TTL超過の優先度である場合に、受信パケットがLogic攻撃、フィルタ、送信元詐称に一致した場合は、優先度判定部146において受信パケットはLogic攻撃に一致すると判定する。
【0021】
図5は、本発明の一実施例におけるLogic攻撃判定部の構成を示す図である。
Logic攻撃判定部141は、Logic攻撃と判定する条件を設定したLogic攻撃エントリ1 1411〜Logic攻撃エントリn 141nで構成するLogic攻撃テーブル1410で構成する。
Logic攻撃判定部141は、パケットヘッダ情報300を入力すると、パケットヘッダ情報300のうちLogic攻撃エントリとの一致判定に必要な情報と、Logic攻撃エントリ1 1411〜Logic攻撃エントリn 141nの条件を逐次比較する。入力されたパケットヘッダ情報と一致するLogic攻撃エントリがある場合は、そのパケットヘッダ情報を持つパケットの攻撃種別はLogic攻撃であると判定する。
【0022】
Logic攻撃エントリの条件は、条件値による比較だけではなく比較式、等号式による論理的な判定も含む。例えば、Land攻撃をLogic攻撃として設定する場合は、L3情報306の送信元IPアドレス=宛先IPアドレスという等号式による条件となる。Ping of death攻撃をLogic攻撃として設定する場合は、L3情報306のフラグメントオフセットとペイロード309のByte長の和が一定値より大きい、という比較式となる。他にも、Invalid TCP Flags攻撃をLogic攻撃として設定する場合は、TCPフラグの有り得ない組み合わせをLogic攻撃エントリの条件として設定する。
【0023】
入力したパケットヘッダ情報300が、Land攻撃のLogic攻撃エントリと一致した場合、パケットヘッダ情報300の攻撃種別はLogic攻撃(Land攻撃)となる。入力したパケットヘッダ情報300がPing of death攻撃のLogic攻撃エントリと一致した場合、パケットヘッダ情報300の攻撃種別はLogic攻撃(Ping of death攻撃)となる。入力されたパケットヘッダ情報300がTCP Invalid Flags攻撃のLogic攻撃エントリと一致する場合、パケットヘッダ情報300の攻撃種別はLogic攻撃(TCP Invalid Flags攻撃)となる。
【0024】
図6は、本発明の一実施例におけるフィルタパケット判定部の構成を示す図である。
フィルタパケット判定部142は、フィルタパケットの判定条件を設定したフィルタエントリ1 1421〜フィルタエントリn 142nで構成するフィルタテーブル1420を有する。フィルタパケット判定部142は、パケットヘッダ情報300を入力すると、パケットヘッダ情報300のうちフィルタエントリとの一致判定に必要な情報と、フィルタエントリ1 1421〜フィルタエントリn 142nの条件を逐次比較する。入力されたパケットヘッダ情報300と一致するフィルタエントリがある場合は、パケットヘッダ情報300はフィルタ対象の攻撃パケットであると判定する。フィルタエントリの条件としては、パケットヘッダ情報300のL2情報305、L3情報306、L4情報307、L7情報308が設定される。フィルタエントリの条件は、パケット中継装置100の管理者が管理端末400から指示し制御CPU160経由で設定する。
【0025】
図7は、本発明の一実施例における送信元詐称攻撃判定部および受信側パケット処理部の構成を示す図である。
送信元詐称攻撃判定部143は、送信元経路検索要求部1431と送信元詐称判定部1432を有する。受信側パケット処理部130は、IPアドレス1ないしnに対する出力ポートを設定した経路エントリ1(IP1)1301ないしn(IPn)130nで構成する経路テーブル1300で構成する。
【0026】
受信側パケット処理部130は、通常は、パケットヘッダ情報300のL3情報306に格納された宛先IPアドレスに対応する経路エントリを参照し、この宛先IPアドレスに対する出力ポートの情報を得る。受信側パケット処理部130における処理の後、受信側判定部140に入力されたパケットヘッダ情報300が攻撃判定のために送信元詐称攻撃判定部143に入力される。送信元詐称攻撃判定部143は、まず、送信元経路検索要求部1431において、入力されたパケットヘッダ情報300の入力ポート情報301とL3情報306の送信元IPアドレスを抽出する。送信元経路検索要求部1431は、抽出した送信元IPアドレスを、受信側パケット処理部130に出力する。受信側パケット処理部120は、この送信元IPアドレスに対する経路エントリを参照し、出力ポートの情報を得る。受信パケット処理部120は、得られた出力ポート情報を送信元詐称攻撃判定部143に入力する。送信元詐称攻撃判定部143の送信元詐称判定部1432は、パケットヘッダ情報300の入力ポート情報と受信パケット処理部120に確認して得られた出力ポート情報を比較する。一致していない場合は送信元が詐称されていると判断し、パケットヘッダ情報300の攻撃種別は送信元詐称攻撃と判定する。
【0027】
図8は、本発明の一実施例におけるフラッド攻撃判定部の構成を示す図である。
パケット中継装置100の管理者は、予め、監視対象として定義したフロー毎に監視帯域を設定する。フラッド攻撃判定部144は、定義されたフロー毎の帯域を監視し、監視帯域を超過したフローのパケットヘッダ情報300の攻撃種別にフラッド攻撃と判定する。
【0028】
フラッド攻撃判定部144は、パケット中継装置の管理者の指示で定義したフロー毎の条件を設定するフローエントリ1 14401〜フローエントリn 1440nで構成するフローテーブル1440、各フローエントリに対応する監視帯域と各フローの帯域が監視帯域を超過したか否かを判定するための情報を含む帯域エントリ1 14411〜帯域エントリn 1441nで構成する帯域テーブル1441、帯域判定部1442を有する。
【0029】
フラッド攻撃判定部144は、パケットヘッダ情報300が入力されると、パケットヘッダ情報300のうちフローエントリとの一致判定に必要な情報とフローエントリ1 14401〜フローエントリn 1440nの条件を逐次比較する。入力されたパケットヘッダ情報がフローエントリnと一致した場合、当該パケットヘッダ情報300はフローエントリnに属し、フローエントリnに対応する帯域エントリn 1440nを参照する。帯域エントリn 1440nから、監視帯域と各フローの帯域が監視帯域を超過するか否かを判定するための情報を読み出し、帯域判定部1442でパケットヘッダ情報300のフローが監視帯域を超過したか否かを判定する。監視帯域を超過した場合は、パケットヘッダ情報300のパケットは、フラッド攻撃と判定する。
【0030】
図9は、本発明の一実施例における受信側統計処理部の構成を示す図である。
受信側統計処理部150は、統計テーブル1500と、統計処理判定テーブル1501、カウンタテーブル1502を有する。統計テーブル1500は、カウント対象のフローの条件を設定したn個の統計エントリ1 15001〜統計エントリn 1500nからなるテーブルである。また、統計処理判定テーブル1501は、統計エントリ毎に統計エントリ登録処理・統計カウント処理を設定するn個の統計処理判定エントリ1 15011〜1501nを有するテーブルである。さらに、カウンタテーブル1502は、統計エントリ毎にカウンタを備えるn個のカウンタエントリ1 15021〜カウンタエントリn 1502nで構成するテーブルである。受信側統計処理部150は、さらに、タイマ1503、タイムアウト判定部1504で構成する。
【0031】
統計処理判定エントリj、カウンタエントリjは統計エントリjに対応する(j:1〜n)。受信側統計処理部150にパケットヘッダ情報300が入力されると、パケットヘッダ情報のうち統計エントリとの一致判定に必要な情報と、統計エントリ1 15001〜統計エントリn 1500nの条件を逐次比較する。一致した統計エントリjがある場合は対応する統計処理判定エントリjを参照し、参照した統計処理判定エントリjに設定された指示に基づき、処理を行う。統計処理判定エントリjに登録指示が設定されている場合は、制御CPU160に統計エントリ登録処理と当該パケットヘッダ情報300の通知を行う。統計処理判定エントリjに判定結果登録指示が設定されている場合は判定結果を含めたカウント対象条件を統計エントリとして登録する。統計処理判定エントリjにカウント指示が設定されている場合は、カウンタエントリjのカウンタを加算処理する。
統計処理の詳細は、以降で説明する。タイマ1503は現在時刻情報を示し、タイムアウト判定部1504における判定に用いたり、カウンタテーブル1502に書き込む情報の一部として用いる。
【0032】
図10は、本発明の一実施例における統計テーブルの構成を示す図である。
統計テーブル1500は、統計エントリ1 15001〜統計エントリn 1500nで構成する。統計エントリ15001は、判定結果150011、L2情報150016、L3情報306のSIP(送信元IPアドレス)150012、L3情報306のDIP(宛先IPアドレス)150013 、L4情報307のSPORT(送信元ポート番号)150014、L4情報307のDPORT(宛先ポート番号)150015で構成する。カウント対象とするパケットヘッダ情報の条件を設定する統計エントリ15001に、受信側判定部140や送信側判定部190でパケットヘッダ情報に追加した判定結果15011を含めることが、本発明の特徴である。なお、カウント対象条件として、判定結果の他、入力ポート情報301、出力ポート情報302、L2情報305、L3情報306、L4情報307、L7情報308を設定する構成としても構わない。なお、
図10の統計テーブル1500の例で、d.c.(don’t care)は、任意の値を示す。
【0033】
図10の統計テーブル1500の例では、統計エントリ15001と統計エントリ15002は、L2情報1、SIP1、DIP1、SPORT1、DPORT1については同一フローに関する統計エントリであるが、判定結果150011が異なる。統計エントリ15001は、判定結果150011が送信元詐称であり、送信元詐称攻撃判定部143で送信元詐称攻撃のパケットと判定されたパケットのフロー統計をカウントする統計エントリである。統計エントリ15002は、判定結果が正常通信であり、正常通信のパケットのフロー統計をカウントする統計エントリである。
このように、本実施例では、L2情報、SIP、DIP、SPORT,DPORTが同じで、従来は区別してカウントしていなかったフローであっても送信元詐称攻撃と正常通信のフロー統計を区別してカウントすることができる。従来技術では、パケットヘッダ情報に判定結果が含まれておらず、また、統計エントリも判定結果を含まないので、送信元詐称攻撃と正常通信のフロー統計を区別してカウントすることができなかった。
【0034】
また
図10の統計テーブル1500の例では、判定結果が帯域過大であるフローに関連する統計エントリとして統計エントリ15003、統計エントリ15004がある。また、統計エントリ15004と統計エントリ15005はL2情報2、SIP3、DIP2、SPORT2、DPORT2については同一フローに関する統計エントリである。統計エントリ15004は判定結果が帯域過大であり、フラッド攻撃判定部144で帯域過大のパケットと判定されたパケットのフロー統計をカウントする統計エントリである。一方統計エントリ15005は判定結果が正常通信であり、フラッド攻撃ではない正常通信のパケットのフロー統計をカウントする統計エントリである。このように、本実施例では、同一フローであってもフラッド攻撃と正常通信のフロー統計を区別してカウントすることができる。
【0035】
更に、統計エントリ15003は統計エントリ15004と統計エントリ15005のフローに対し送信元IPアドレスのみがSIP2で異なるフローであり、SIP2のフローは正常通信がなく判定結果が帯域過大の統計エントリのみがカウントされている。この場合、SIP2のフローの判定結果は常に帯域過大であるのに対し、SIP3のフローの判定結果は帯域過大である場合と帯域過大でない場合とがある。帯域過大であるカウント量(パケット数、Byte数等)と帯域過大でないカウント量の比率をフロー毎に比較すると、帯域過大であるカウント量の比率が高いフローはDDoS攻撃である可能性が高いフローとアナライザ500が分析することができる。
【0036】
また
図10の統計テーブル1500の例では、判定結果がNull廃棄であるフローに関連する統計エントリとして統計エントリ15006、統計エントリ15007、統計エントリ15008がある。統計エントリ15006と統計エントリ15007と統計エントリ15008は、L2情報4、SIP4、DIP4、SPORT4に関しては同一であり、DPORTだけがDPORT4、DPORT5、DPORT6で異なるフローである。このようなフローは、マルウェアの感染拡大活動において次の感染先としてポートが開放している端末を探索するスキャン活動で観測することができる。そのため、統計エントリ15006、統計エントリ15007、統計エントリ15008のようにNull廃棄かつDPORTだけが異なる統計エントリのカウントを検知した場合には、当該の統計エントリのSIPはマルウェア感染の可能性があるとアナライザ500で分析して、マルウェア対策ツールの適用、または通信監視の強化対象とする等の対応を管理者が行う契機とすることができる。
【0037】
また
図10の統計テーブル1500の例では、判定結果がTTL超過であるL2情報7、SIP7、DIP7、SPORT7、DPORT7のフローに関連する統計エントリとして統計エントリ15009がある。TTL超過はtracerouteのようなネットワーク管理ツールでも用いられる。そのため、TTL超過を攻撃と判定することはできないが、TTL超過の判定結果を明示的にカウント対象条件として設定することができる。判定結果がTTL超過であるフローのフロー統計と、判定結果が廃棄パケットであるフローのフロー統計に基づきアナライザ500で攻撃性の有無を分析できる。
【0038】
また
図10の統計テーブル1500の例では、1500Aのように、判定結果150011にd.c.を設定しておくことで、L2情報8、SIP8、DIP8、SPORT8、DPORT8のフローは判定結果によらず統計エントリ1500Aでカウントすることができる。判定結果毎に統計エントリを登録すると統計エントリの消費量が増え、統計カウントの対象とできるフロー数が減少してしまうので、分析の優先度の低いフローに関しては判定結果をカウント対象条件に含めない設定とすることで、統計エントリを効率的に使用することができる。
【0039】
また
図10の統計テーブル1500の例では、統計エントリを登録するための統計エントリとして、統計エントリ1500n-2、統計エントリ1500n-1、統計エントリ1500nがある。登録用の統計エントリは、パケット中継装置100の管理者が管理端末400から初期設定する。管理者は、運用中に、登録用の統計エントリを管理端末400から追加または変更することもできる。統計カウント用のエントリは、後述の通りパケット中継装置100が自律的に登録する。
【0040】
統計カウント用のエントリが一定期間を超過してカウントされなくなった場合、またはパケットヘッダ情報300のL4情報307において、L4情報がTCPプロトコルである場合にはTCPにおいて通信終了を示すFINフラグが1となった場合に、制御CPU160は当該のフローの通信が終了したと判定する。制御CPU160は当該のフローに対応する統計エントリと、統計エントリに対応する統計処理判定エントリを削除し、統計エントリに対応するカウンタエントリを0に設定するクリア処理を行う。
【0041】
SIP7のフローが通信開始した時点では統計エントリ15009は登録されていない。SIP7かつTTL超過のパケットが入力されると、受信側または送信側統計処理部は入力されたパケットが統計エントリ1500n-2に一致するフローであると判断する。受信側または送信側統計処理部は、統計エントリ1500n-2に対し、後述の登録指示と判定結果登録指示の設定を行う。後述の設定例では、SIP7かつ判定結果がTTL超過のみのフローに対する統計エントリ15009を登録し、SIP7かつ判定結果がTTL超過以外の統計エントリの登録を抑止することができる。
【0042】
また、SIP8のフローが通信開始した時点では統計エントリ1500Aは登録されていない。SIP8のパケットが入力されると、受信側または送信側統計処理部は、入力されたパケットが統計エントリ1500n-1に一致するフローであると判断する。受信側統計処理部または送信側統計処理部は、統計エントリ1500n-1に対し、後述の登録指示の設定を行うことで、SIP8について判定結果は任意のフローに対する統計エントリ1500Aを登録することができる。
【0043】
SIP7またはSIP8以外のフローが通信開始した場合も、通信開始時点では統計エントリ15001〜統計エントリ15008は登録されていない。SIP7またはSIP8以外のパケットを入力すると統計エントリ1500nに一致する。統計エントリ1500nに対し、後述の登録指示と判定結果登録指示の設定を行うことで、統計エントリ15001〜統計エントリ15008を設定に基づき登録することができる。
【0044】
図11は、統計処理判定テーブルの構成例を示す図である。
統計処理判定テーブル1501は、統計処理判定エントリ1 15011〜統計処理判定エントリn 1501nで構成する。統計処理判定エントリは、登録指示フラグ150111、判定結果登録フラグ150112、カウント指示フラグ15011で構成する。
受信側統計処理部150において、入力されたパケットのパケットヘッダ情報が、統計処理判定エントリに対応する統計エントリに登録された条件と一致し、さらに登録指示フラグ150111が1である場合には、当該の統計エントリは登録用のエントリとなる。受信側統計処理部150は、制御CPU160に対しパケットヘッダ情報300に相当するフローが一致する統計エントリの登録を指示する。登録する統計エントリの登録アドレスは、統計テーブル1500において統計エントリが未登録のアドレスのうち最若番アドレスとする。登録指示フラグ150111が0である場合には、統計エントリの登録処理は行わない。
【0045】
判定結果登録フラグ150112は、登録指示フラグが1である場合に有効となる。統計処理判定エントリに対応する統計エントリにパケットヘッダ情報300が一致した場合に、判定結果登録フラグ150112が1である場合には、エントリ登録時に当該のパケットヘッダ情報300に対する判定結果150011を含めてエントリ登録する。
カウント指示フラグは、登録指示フラグが0である場合に有効となる。統計処理判定エントリに対応する統計エントリにパケットヘッダ情報300が一致した場合に、カウント指示フラグが1である場合には、当該の統計エントリは統計カウント用のエントリとなり、統計処理判定エントリに対応するカウンタテーブル1502のカウンタエントリ15021のカウンタを加算処理する。
例えば、統計エントリ15001〜統計エントリ1500Aは統計カウント用のエントリであるから、登録指示フラグは0、判定結果登録指示フラグは0、カウント指示フラグは1に設定する。統計エントリ1500n-2、統計エントリ1500n-1は判定結果を含めた登録用のエントリであるから、登録指示フラグは1、判定結果登録指示フラグは1、カウント指示フラグは0に設定する。統計エントリ1500nは判定結果を含めない登録用のエントリであるから、登録指示フラグは1、判定結果登録指示フラグは0、カウント指示フラグは0に設定する。
【0046】
図12は、カウンタテーブルの構成例を示す図である。
カウンタテーブル1502は、カウンタエントリ1 15021〜カウンタエントリn 1502nで構成する。カウンタエントリは、パケットカウンタ150211、Byteカウンタ150212、前回統計採取時刻150213、タイムアウト時間150214で構成する。
【0047】
統計エントリにパケットヘッダ情報300が一致した場合に、対応する統計処理判定エントリのカウント指示フラグが1である場合には、当該の統計エントリは統計カウント用のエントリとなり、統計処理判定エントリに対応するカウンタテーブル1502のカウンタエントリ15021のパケットカウンタ150211に1を加算処理し、Byteカウンタ150212にパケットヘッダ情報300のByte長303を加算処理し、前回統計採取時刻150213にタイマ1503が示す時刻情報を書き込みする。タイマ1503が示す現在時刻情報と前回統計採取時刻150213の差がタイムアウト時間150214より大である場合には、通信終了と判定する。
【0048】
以上に述べた処理のうち、統計エントリの登録と削除に関する処理の流れを、
図17、
図18、
図19、
図20のフローチャートを用いて説明する。なお、基本的に受信側統計処理部150での統計エントリの登録と削除を例に説明するが、送信側統計処理部200での統計エントリの登録と削除の処理の流れも同様である。
【0049】
図17は、本発明の一実施例における統計エントリ登録処理のフローチャートである。
パケット中継装置100は、受信側統計処理部150でパケット受信(1701)すると、統計テーブル1500を受信パケットで検索(1702)する。検索結果、一致エントリの有無を判定(1703)し、一致エントリが無かった場合は受信パケットに対する統計エントリは登録不要(1712)であり、統計エントリ登録の処理を終了する。
一致エントリが有る場合は統計テ−ブル1500の一致エントリに対応する統計処理判定テーブル1501の統計判定処理エントリを読み出し(1704)する。読み出した統計処理判定エントリの登録指示フラグが1であるか否かを判定(1705)し、登録指示フラグが1でない場合は、受信パケットに対する統計エントリは登録不要(1712)であり、統計エントリ登録の処理を終了する。
登録指示フラグが1である場合は、制御CPU160にエントリ登録要求を送信する。この際、受信パケットヘッダと判定結果を合わせて送信(1706)する。
【0050】
制御CPU160がエントリ登録要求を受信すると、統計エントリ登録を行うための統計テーブル1500の空きエントリを検索(1707)する。この際、統計テーブル1500に空きエントリが複数ある場合は、統計テーブル1500のアドレスのうち最も若番アドレスの空きエントリを登録用空きエントリとして検索する。検索の結果、空きエントリの有無を判定(1708)し、空きエントリが無かった場合は、統計テーブル1500に空きエントリ無しで登録不可(1713)であり、統計エントリ登録の処理を終了する。
空きエントリが有った場合は、統計処理判定テーブル1501のエントリ登録として、統計テーブル1500の登録用空きエントリに対応する登録処理判定テーブル1501の統計処理判定エントリに、登録フラグ=0の統計処理判定エントリを登録(1709)して、統計エントリ登録の処理を終了する。
次に、統計テーブル1500のエントリ登録として、統計テーブル1500の登録用空きエントリに受信パケットヘッダと判定結果を書き込み、統計エントリを登録(1710)して登録終了(1711)する。
【0051】
図18は、本発明の一実施例におけるパケット受信を契機とする統計エントリ削除処理のフローチャートである。
パケット中継装置100は、受信側統計処理部150でパケット受信(1801)すると、受信パケットはTCPパケットかつTCPフラグのFINフラグ(通信終了を示すフラグ)=1であるか否かを判定(1802)する。受信パケットがTCPパケットかつTCPフラグのFINフラグ(通信終了を示すフラグ)=1という条件を満たさない場合は、通信終了していないため削除不要(1814)であり、統計エントリ削除の処理を終了する。
受信パケットがTCPパケットかつTCPフラグのFINフラグ(通信終了を示すフラグ)=1という条件を満たす場合は、受信パケットの統計採取処理(1803)をする。
受信パケットの統計採取処理(1803)を終了すると、制御CPU160にエントリ削除要求を送信する。この際、受信パケットヘッダを送信(1804)する。
次に、統計エントリの削除回数を示す変数iを0に設定(1805)する。
次に、制御CPU160が統計テーブル1500の削除エントリの検索として、受信パケットヘッダに一致する統計エントリを検索(1806)する。検索結果、一致エントリ、つまり削除対象とする削除エントリが統計テーブル1500に存在するか否かを判定(1807)する。削除エントリが無かった場合は、i=0でないか否かを判定(1815)し、i=0であった場合は削除エントリ無しで非削除終了(1817)であり、統計エントリ削除の処理を終了する。i=0でなかった場合は、削除エントリ有りで削除終了(1816)する。
1807の削除エントリの有無の判定で、削除エントリが有った場合は、制御CPU160が統計テーブル1500の削除エントリを削除(1808)する。
次に、統計テーブル1500の削除エントリに対応する統計処理判定テーブル1501の統計処理判定エントリを読み出し(1809)する。
次に、読み出した統計処理判定エントリの統計値を制御CPU160に送信(1810)する。
次に、制御CPU160が受信した統計値をアナライザ500へ送信(1811)する。
次に、制御CPU160が統計処理判定テーブル1501のエントリ削除として、統計テーブル1500の削除エントリに対応する統計処理判定テーブル1501の統計処理判定エントリを削除(1812)する。
次に、iに1を加算処理(1813)し、1806の処理をする。
【0052】
図19(a)(b)は、本発明の一実施例におけるタイムアウトを契機とする統計エントリ削除処理のフローチャートである。
パケット中継装置100は、タイムアウト契機の場合は、統計処理判定エントリ毎に一定の周期で、統計処理判定エントリ毎の通信終了の有無をタイムアウト判定する。タイムアウト時間150214は、統計処理判定エントリ毎に設定可能である。本実施例では、特定のフローに関する統計エントリを判定結果毎に備えるため、特定の判定結果に関する統計処理判定エントリでタイムアウトとなった場合でも、そのフローに対する別の判定結果に関する統計処理判定エントリはタイムアウトとならず通信が継続している可能性がある。判定結果によらずフロー毎の統計として管理するには、判定結果毎に備える統計エントリ毎のエントリ削除ではなく、特定のフローについての判定結果が異なる複数の統計エントリを一括でエントリ削除することが望ましい。そのため、ある統計処理判定エントリでタイムアウトと判定した場合に、即時にその統計判定処理エントリを削除するのではなく、フローが一致する他の統計処理判定エントリのタイムアウトを判定し、フローが一致する他の統計処理判定エントリの全てがタイムアウトと判定した場合に、当該の統計処理判定エントリ、およびこれらに対応する全ての統計エントリを削除する。
【0053】
次に、タイムアウトを契機とする統計エントリ削除処理の詳細を説明する。
まず、パケット中継装置100は、統計処理判定エントリのエントリ番号を示す変数iに0を設定(1901)する。
次に、タイマ1503が示す現在の時刻情報が、統計処理判定エントリiに関する通信終了の判定に関わるタイムアウトをチェックすべき時刻であるか否かを判定(1902)する。統計処理判定エントリ0がタイムアウトをチェックすべき時刻でない場合には、iに1を加算処理(1927)し、iが統計処理判定エントリ番号の最大値nに達したか否かを判定(1928)する。iが統計処理判定エントリ番号の最大値nに達した場合は、全ての統計処理判定エントリはタイムアウトのチェック時刻ではないため、削除不要(1929)であり、統計エントリ削除の処理を終了する。iが統計処理判定エントリ番号の最大値nに達していない場合は、再び1902の判定処理をする。統計処理判定エントリiがタイムアウトをチェックすべき時刻でない場合には、再び1927の加算処理をし、1928の判定処理をする。
統計処理判定エントリiがタイムアウトをチェックすべき時刻である場合には、統計処理判定テーブル1501の統計処理判定エントリiを読み出し(1903)する。
【0054】
次に、タイマ1503が示す現在時刻情報と前回統計採取時刻150213の差が統計処理判定エントリiのタイムアウト時間より大であるか判定(1904)する。タイマ1503が示す現在時刻情報と前回統計採取時刻150213の差が統計処理判定エントリiのタイムアウト時間より大でない場合は、通信終了しておらずエントリ削除不要(1929)と判定する。
タイマ1503が示す現在時刻情報と前回統計採取時刻150213の差が統計処理判定エントリiのタイムアウト時間より大である場合は、統計テーブル1500の統計エントリiを読み出し(1905)する。
【0055】
次に、統計テーブル1500に存在する、統計エントリiに設定したパケットヘッダ情報と一致する統計エントリ数に関する変数jを0に設定し、統計エントリjのアドレスADR(j)に関し、便宜上ADR(0)=-1に設定(1906)する。
次に、統計エントリiのパケットヘッダ情報の設定値で、統計テーブル1500のADR(j)+1以降のアドレスを検索(1907)する。1906の処理でj=0に設定した場合は、ADR(0)=-0であるため、ADR(0)+1=0アドレス以降、つまり統計テーブル1500の全アドレスを検索対象とする。
検索結果、一致エントリがあった場合は、ADR(j)=一致エントリのアドレスに設定(1909)する。1906の処理でj=0に設定した場合は、ADR(0)= 一致エントリのアドレスに設定する。
次に、jに1を加算処理(1910)する。
【0056】
次に、ADR(j)にADR(j-1)を代入する。1906の処理でj=0に設定した場合は、1910の加算処理の結果j=1とし、ADR(1)にADR(0)、つまり前回の1907での検索結果の一致エントリのアドレスを代入する。そして、再び1907の処理をする。
1908の判定結果、一致エントリ無しの場合は、統計エントリiのフローに一致する全ての一致エントリのアドレスADR(j)が判明し、j=0でないか否か判定(1912)する。j=0であった場合は、統計エントリiのパケットヘッダ情報で統計テーブル1500を検索しても統計エントリiを含め一致する統計エントリiが存在しないという矛盾が生じるため、異常終了(1930)と判定し、統計エントリ削除の処理を終了する。
j=0でなかった場合は、全ての一致エントリに関するタイムアウトを判定するための変数kを0に設定(1913)する。
次に、タイマ1503が示す現在時刻情報と統計処理判定エントリkの前回統計採取時刻150213の差が統計処理判定エントリiのタイムアウト時間より大であるか判定(1914)し、大でない場合は通信終了しておらずエントリ削除不要(1931)と判定し、統計エントリ削除の処理を終了する。
タイマ1503が示す現在時刻情報と統計処理判定エントリkの前回統計採取時刻150213の差が統計処理判定エントリiのタイムアウト時間より大である場合は、kに1を加算処理(1915)する。
【0057】
次に、kがj+1に等しいか否か判定(1916)し、等しくない場合は全ての一致エントリのタイムアウト判定を完了していないため、再び1914の判定処理をする。
kがj+1に等しい場合は、全ての一致エントリのタイムアウト判定を完了し、全ての一致エントリがタイムアウトと判定されたことになるため、全ての一致エントリの削除処理をするため、エントリ削除に関する変数mに0を設定(1917)する。
次に、制御CPU160に統計エントリm(アドレスADR(m))の削除要求を送信(1918)する。
次に、制御CPU160が統計テーブル1500の統計エントリmを削除(1919)する。
次に、統計処理判定テーブル1501の統計処理判定エントリmを読み出し(1920)する。
次に、読み出した統計処理判定エントリmの統計値を制御CPU160に送信(1921)する。
次に、制御CPU160が受信した統計エントリmの統計値をアナライザ500へ送信(1922)する。
次に、制御CPU160が統計処理判定テーブル1501の統計処理判定エントリmを削除(1923)する。
次に、mに1を加算処理(1924)する。
次に、m=j+1であるか否か判定(1925)する。
m=j+1でない場合は、全ての一致エントリの削除を完了していないため、再び1918の処理をする。
m=j+1である場合は、全ての一致エントリの削除を完了したため、削除終了(1926)と判定し、統計エントリ削除の処理を終了する。
【0058】
図20は、本発明の一実施例におけるタイムアウトを契機とする統計エントリ削除処理のフローチャートである。
図20に示す統計エントリ削除処理は、
図19に示した統計エントリ削除処理の簡易版である。簡易版フローチャートでは、統計処理判定エントリ毎に一定の周期で、通信終了の有無をタイムアウト判定する。判定の結果、タイムアウトとなった場合にはその統計処理判定エントリを削除する。削除した統計処理エントリと同じフローに対する別の判定結果に関する統計処理判定エントリではタイムアウトとならず通信が継続している可能性はあるが、
図20の削除処理ではフロー毎の統計エントリの管理はせず判定結果毎の統計エントリの管理とすることで、統計エントリの削除処理を簡易化する。
【0059】
フローチャートを用いて
図20のタイムアウト契機の統計エントリ削除処理の詳細を説明する。
まず、統計処理判定エントリのエントリ番号を示す変数iに0を設定(2001)する。
次に、タイマ1503が示す現在の時刻情報が、統計処理判定エントリiに関する通信終了の判定に関わるタイムアウトをチェックすべき時刻であるか否かを判定(2002)する。統計処理判定エントリ0がタイムアウトをチェックすべき時刻でない場合には、iに1を加算処理(2012)し、iが統計処理判定エントリ番号の最大値nに達したか否かを判定(2013)する。iが統計処理判定エントリ番号の最大値nに達した場合は、全ての統計処理判定エントリのタイムアウトのチェック時刻ではないため、削除不要(2014)であり、統計エントリ削除の処理を終了する。iが統計処理判定エントリ番号の最大値nに達していない場合は、再び2002の判定処理をする。統計処理判定エントリiがタイムアウトをチェックすべき時刻でない場合には、再び2012の加算処理をし、2013の判定処理をする。
統計処理判定エントリiがタイムアウトをチェックすべき時刻である場合には、統計処理判定テーブル1501の統計処理判定エントリiを読み出し(2003)する。
次に、タイマ1503が示す現在時刻情報と前回統計採取時刻150213の差が統計処理判定エントリiのタイムアウト時間より大であるか判定(2004)する。タイマ1503が示す現在時刻情報と前回統計採取時刻150213の差が統計処理判定エントリiのタイムアウト時間より大でない場合は、通信終了しておらずエントリ削除不要(2014)と判定する。
【0060】
タイマ1503が示す現在時刻情報と前回統計採取時刻150213の差が統計処理判定エントリiのタイムアウト時間より大である場合は、制御CPU160にエントリ削除要求、つまり統計テーブル1500の統計エントリ削除の要求を送信(2005)する。
次に、制御CPU160が統計テーブル1500の統計エントリiを削除(2006)する。
次に、統計処理判定テーブル1501の統計処理判定エントリiを読み出し(2007)する。
次に、読み出した統計処理判定エントリiの統計値を制御CPU160に送信(2008)する。
次に、制御CPU160が受信した統計値をアナライザ500へ送信(2009)する。
次に、制御CPU160が統計処理判定エントリiを削除(2010)する。
次に、削除終了(2011)と判定し、統計エントリ削除の処理を終了する。
【0061】
以上説明した本発明のパケット中継装置100によれば、以下のフロー統計の攻撃分析上の課題を解決できる。
【0062】
アナライザに対する負荷を抑えるため、パケット中継装置100の判定結果が攻撃となったフローだけを統計カウントの対象としたい場合を考える。パケットヘッダ情報300のみに基づいて攻撃であるか否かを判定することはできないため、パケットヘッダ情報300に基づいてカウントする従来のフロー統計技術では、パケット中継装置100の判定結果が攻撃となったフローだけを統計エントリとして登録することができなかった。そのため、統計カウントの対象とする必要のないフローも統計エントリとして登録してしまうので、統計テーブル、統計処理判定テーブル、カウンタテーブルの資源を消費してしまい非効率的であるという課題があった。本実施例のパケット中継装置100によれば、パケット中継装置100の判定結果が攻撃となったフローだけを統計エントリとして登録できるので、上述の課題を解決できる。
【0063】
また、攻撃通信と正常通信が同時に行われている場合に、パケット中継装置100のフロー統計エントリが枯渇しそうな状態になると、攻撃通信の統計を優先的にカウント対象として分析する必要があるが、パケットヘッダ情報に基づいてカウントする従来のフロー統計技術では攻撃通信に関する統計と正常通信の統計を区別できないので、攻撃通信を優先的に統計カウントできないという課題がある。本実施例のパケット中継装置100によれば、攻撃通信に関する統計と正常通信の統計を判定結果によって区別して登録することができるので、例えば統計テーブル1500において攻撃通信に関する統計エントリ用のアドレス空間を正常通信に関する統計エントリ用のアドレス空間よりも広くなるように初期設定で確保することで、攻撃通信を正常通信よりも優先してカウント対象とすることができる。または、統計テーブル1500の未使用のアドレス空間が一定以下となった場合には制御CPU160において正常通信の登録を受け付けない制御としたり、正常通信用の統計エントリの登録指示フラグを0に書き換えることにより、攻撃通信を正常通信よりも優先してカウント対象とすることができる。
【0064】
また、通信の送信元情報を詐称して攻撃を行う送信元詐称攻撃に対し、パケットヘッダ情報300に基づいてカウントする従来のフロー統計技術では、詐称された攻撃に関する統計と正常な通信の統計を区別してカウントすることができないので、詐称された攻撃に関するフロー統計を提供できないという課題があった。特に詐称されたパケットでは、送信元IPアドレスは攻撃の標的のIPアドレスを示し、宛先IPアドレスは攻撃に利用するIPアドレスを示すので、詐称された攻撃に関するフロー統計を提供することで攻撃の詳細な分析が可能となる。本実施例のパケット中継装置100によれば、判定結果が送信元詐称攻撃であるフロー統計を提供できるので、上述の攻撃の詳細な分析が可能となる。
【0065】
また、多数の攻撃元から標的に対し大量のパケットを送信したり、持続的に長期間通信を行うことで標的のサービス継続を妨害するフラッド攻撃型のDDoS攻撃では、帯域が過大であるという条件でフロー統計をカウントして分析する必要がある。パケットヘッダ情報300に基づいてカウントする従来のフロー統計技術では、帯域によらずフロー統計をカウントするので、統計エントリ毎のByteカウンタと統計を採取した時間情報からフロー毎の帯域またはバースト量をアナライザ500にて演算し、その後で帯域またはバースト量が過大であるフローに対する分析を行う必要があった。本来、アナライザ500にて演算する必要のない帯域またはバースト量の少ないフローに対する演算負荷がかかるという課題があった。本実施例のパケット中継装置100によれば、パケット中継装置100のフラッド攻撃判定部144で判定結果が帯域またはバースト量が過大であるフロー統計だけを登録してカウント対象とすることができるので、アナライザ500でフロー毎の帯域またはバースト量を演算する必要がなく、アナライザ500の演算負荷を低減できる。
【0066】
また、正常通信は5tupleのカウント対象条件でカウントすれば十分だが、攻撃通信は詳細に分析するためより多くのカウント対象条件でカウントしたい場合に、パケットヘッダ情報に基づいてカウントする従来のフロー統計技術では、攻撃の有無等の判定結果に基づいてカウント対象条件の数を増減することはできなかった。本実施例のパケット中継装置100によれば、
図13の統計テーブル1500の構成図に示すように、判定結果150010が正常通信の統計エントリ15002ではSIP150011、DIP150012、PRT(L4プロトコル番号)150015、SPORT150013、DPORT150014の5tupleをカウント対象条件とし、判定結果150010が送信元詐称の攻撃通信の統計エントリではSIP150011、DIP150012、PRT150015、SPORT150013、DPORT150014に加え、L2情報150016、SIP・DIP・PRT以外のL3情報150017、SPORT・DPORT以外のL4情報150018をカウント対象条件とすることができる。これにより、攻撃通信の統計エントリはより詳細なカウント対象条件でカウントして詳細な統計分析を可能とする。カウント対象条件が増えると登録する統計エントリ数が増えてしまうので、正常通信の統計エントリは必要最小限の5tupleのカウント対象条件に留めることで、統計エントリの消費エントリ数を必要最小限に抑えることができる。
【0067】
次に、本発明のパケット中継装置100を用いた冗長構成のC&Cサーバ(command and control server)(非特許文献3)の検知への適用例を説明する。
【0068】
図14は、本発明の一実施例の冗長C&Cサーバ検出シナリオにおける装置の接続関係を示す図である。
図14に示す例では、本実施例のパケット中継装置100を経由してマルウェア感染端末200がC&Cサーバ1 900に接続する構成を示している。
C&Cサーバ1のIPアドレスDIP1は、外部から入手した情報として既知であるものとし、パケット中継装置100のフィルタテーブル1420のフィルタエントリ1421のDIPにDIP1としてパケット中継装置100の管理者が初期設定で登録する。なお、DIP1はC&Cサーバ1というセキュリティ上の特性が既知の宛先IPアドレスであるため、DIP1と通信した端末を自動的に遮断するためDIP1をカウント対象条件として生成した統計エントリのSIPをフィルタエントリとして追加する、といったシナリオを事前に立てることができる。そのため、パケットヘッダ情報300がフィルタエントリ1421に一致した場合の判定結果はフィルタ(C&C)とし、C&Cサーバ通信というフィルタ要因が判定可能となるようにフィルタの判定結果の要因をコード化する。
【0069】
統計テーブル1500は
図16に示すように、登録用の統計エントリ150026をパケット中継装置100の管理者が初期設定で設定しておく。統計エントリ150026は、判定結果150011がフィルタ(C&C)である任意のパケットヘッダ情報300が一致するカウント対象条件とする。マルウェアの感染端末200は感染端末が示す典型的な挙動として、自身が感染したことをC&Cサーバ1 900に伝達し、C&Cサーバ1 900からの命令の発行を促すコールバック通信をC&Cサーバ1 900に対し実行する。すると、コールバック通信はDIP=DIP1となるのでフィルタエントリ1421に一致し、本実施例のパケット中継装置の受信側/送信側判定部における判定結果はフィルタ(C&C)となる。従って、当該通信はフィルタされると共に、登録用の統計エントリ150026に一致するので、制御CPU160は統計カウント用の統計エントリ150027を登録する。このとき、感染端末のIPアドレスをSIP1とし、統計カウント用の統計エントリ150027のSIP150011には、SIP1を設定する。登録用の統計エントリ150026に基づいて登録した統計カウント用の統計エントリ150027のカウンタにより、C&Cサーバ1 900に対しどのIPアドレスからどのようなプロトコルでどのような通信が行われようとしたかをアナライザに出力して分析することができる。
【0070】
更に、登録用の統計エントリ150026に基づく登録処理を制御CPU160が実行する際に、当該パケットヘッダ情報300の判定結果がフィルタ(C&C)である場合には、制御CPU160は当該パケットヘッダ情報300のSIP1をSIPとする登録用エントリ150028を統計テーブル1500に登録する。これは、SIP1はC&Cサーバ通信を行おうとしたことからマルウェア感染済と判定したため、SIP1を送信元とする通信を監視するための統計エントリを登録するための登録用エントリである。非特許文献3に記載のような冗長構成のC&Cサーバの場合には、C&Cサーバ1 900との通信がフィルタにより遮断された場合、マルウェアに感染した感染端末800は
図15に示すように、冗長化された代替のC&Cサーバ2 1000とのコールバック通信を試みる。すると、当該のコールバック通信は登録用の統計エントリ150028に一致するので、制御CPU160は統計カウント用の統計エントリ150029を登録する。統計エントリ150029のDIPは、C&Cサーバ2 1000のIPアドレスDIP2である。フィルタ(C&C)によって遮断後の感染端末800の通信の宛先IPアドレスが全て冗長化された代替のC&Cサーバであるとは限らないが被疑対象となるため、DIP2のIPアドレスをもつホストとの通信をアナライザで分析し、その結果C&Cサーバであるとパケット中継装置100の管理者が判定した場合は、管理者はフィルタテーブル1420にDIP2を宛先IPアドレスとするフィルタエントリを登録し、当該のフィルタエントリの判定結果をフィルタ(C&C)として設定する。