(57)【要約】【課題】正常アクセスのパケットのみを通過させ、不要な中継処理を省くことができるパケットフィルタ回路を提供する。【解決手段】パケットフィルタ回路部２００は、通過させたいパケットのヘッダ情報をエントリとして登録する通過設定テーブル２２０、通過設定テーブル２２０を参照して、パケットを通過させるか否かを判断する通過判定部２１０、通過不可と判断されたパケットがSYNパケットである場合、該SYNパケットに対するSYNACKパケットを代理応答するSYNACK代理応答部２３０、通過不可と判断されたパケットがACKパケットである場合、該ACKパケットのヘッダ情報を前記通過設定テーブルのエントリに追加する通過設定エントリ追加部２５０、通過設定エントリ追加部２５０がエントリを追加する際、前記ACKパケットの送信元に対してコネクション切断を通知するコネクション切断部２４０を有する。【選択図】  図１
2006345268.tif 000002
【特許請求の範囲】
【請求項１】
通過設定テーブルに登録されているヘッダ情報を元にパケットを通過させるパケットフィルタ回路であって、
前記通過設定テーブルを参照して、パケットを通過させるか否かを判断する通過判定手段と、
通過不可と判断されたパケットがSYNパケットである場合、該SYNパケットに対するSYNACKパケットを代理応答するSYNACK代理応答手段と、
通過不可と判断されたパケットがACKパケットである場合、該ACKパケットのヘッダ情報を前記通過設定テーブルのエントリに追加する通過設定エントリ追加手段と、
前記通過設定エントリ追加手段がエントリを追加する際、前記ACKパケットの送信元に対してコネクション切断を通知するコネクション切断手段と、
を備えるパケットフィルタ回路。
【請求項２】
パケット流量が所定の閾値未満であるか否かを監視するパケット流量監視手段を備え、
前記通過判定手段は、パケット流量が前記閾値未満の場合、全てのパケットを通過させる請求項１記載のパケットフィルタ回路。
【請求項３】
TCPフロー情報をキーとして所定の計算式に基づいて３２ビットの番号を算出する番号算出手段を備え、
前記SYNACK代理応答手段は、受信したSYNパケットのTCPフロー情報から前記番号算出手段で算出した番号をシーケンス番号として付与したSYNACKパケットを送信し、
前記通過設定エントリ追加手段は、受信したACKパケットのTCPフロー情報から前記番号算出手段で算出した番号に１を加えた値が、受信したACKパケットのTCPヘッダに含まれる確認応答番号と一致する場合のみ、前記ACKパケットを前記通過設定テーブルに登録する請求項１又は２記載のパケットフィルタ回路。
【請求項４】
通過設定テーブルに登録されているヘッダ情報を元にパケットを通過させるパケットフィルタ方法であって、
前記通過設定テーブルを参照して、パケットを通過させるか否かを判断する通過判定ステップと、
通過不可と判断されたパケットがSYNパケットである場合、該SYNパケットに対するSYNACKパケットを代理応答するSYNACK代理応答ステップと、
通過不可と判断されたパケットがACKパケットである場合、該ACKパケットのヘッダ情報を前記通過設定テーブルのエントリに追加する通過設定エントリ追加ステップと、
前記通過設定エントリ追加ステップにおいてエントリを追加する際、前記ACKパケットの送信元に対してコネクション切断を通知するコネクション切断ステップと、
を有するパケットフィルタ方法。
【請求項５】
前記通過判定ステップは、パケット流量が所定の閾値未満である場合、全てのパケットを通過させる請求項４記載のパケットフィルタ方法。
【請求項６】
前記SYNACK代理応答ステップは、受信したSYNパケットのTCPフロー情報をキーとして所定の計算式に基づいて算出した３２ビットの番号をシーケンス番号として付与したSYNACKパケットを送信し、
前記通過設定エントリ追加ステップは、受信したACKパケットのTCPフロー情報をキーとして所定の計算式に基づいて算出した３２ビットの番号に１を加えた値が、受信したACKパケットのTCPヘッダに含まれる確認応答番号と一致する場合のみ、前記ACKパケットを前記通過設定テーブルに登録する請求項４又は５記載のパケットフィルタ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通過設定テーブルに登録されているヘッダ情報を元にパケットを通過させるパケットフィルタ回路及びパケットフィルタ方法に関する。
【背景技術】
【０００２】
インターネットなどのオープンなネットワークは、誰もが自由に接続することが可能である。ネットワークを介した様々なサービスが提供されその利便性が増す一方で、悪意を持った第三者がサービスを提供する装置に大量のパケットを送信して、一般ユーザの利用を妨げる分散サービス拒否（Distributed Denial of Service：DDoS）攻撃が問題となっている。DDoS攻撃は、多種多様なパターンが確認されており、攻撃対象装置に対して許容量を超える接続要求を行い一般ユーザが新たな接続を確立できなくなるSynFlood攻撃や、不要なICMPパケットを意図的に攻撃対象装置に大量に送信することで帯域を占有するsmurf攻撃などがある。なかでもSynFlood攻撃は簡単な方法で効率よく攻撃対象装置を接続拒否状態に陥らせることができるため、現在最も多く横行しており、DoS攻撃の多くを占めるというカリフォルニア大学の調査報告もある（例えば、非特許文献１参照）。
【０００３】
SynFlood攻撃とは、TCPの3Way Handshakeを悪用する攻撃方法である。TCPによるコネクション確立は、(1)クライアント側から「確立要求（SYN）」を送信すると、(2)サーバ側が「確立要求の確認応答（ACK）と「確立要求（SYN）」を同時に送信し、(3)更にクライアント側からの「確認応答（ACK）」の送信、という手順を踏む。
【０００４】
SYNやACKはTCPのヘッダフォーマットのフラグで識別できる。SYNフラグがONになっていると、当該パケットは確立要求パケットとなる。ここで、悪意の第三者は送信元情報を詐称したSYNパケットを攻撃対象装置に送信する。攻撃対象装置はSYNACKを送信するが、詐称された装置は存在しないことが多いためACKパケットが返信されず、攻撃対象装置は待機状態となる。実装に依存するが、タイムアウトでプロセスを修了するまでの通常60秒ほどの待ち時間に大量の確立要求（SYN）パケットを送信することでプロセスを多発させ、リソースを不正に消費させて他装置との通信を困難にさせる。
【０００５】
しかし、SynFlood攻撃に用いられるパケットは、送信元アドレスが詐称されていることを除けば通常のTCP SYNパケットと相違がないため、攻撃対象装置において正常アクセスのSYNパケットと攻撃パケットを区別することは困難である。
【０００６】
従来、SynFlood攻撃を防御する仕組みとして、TCP Proxyという技術がある。主にファイアウォールに実装される技術で、正常アクセスのパケットと攻撃パケットを正しく区別する最も確実な方法である。TCP Proxyは、ファイアウォールにおいて、各TCPコネクション毎に状態を保持し、3WayHandshakeが完了した正常なTCPフローのパケットのみを送信先ホストに渡す方法である。ファイアウォールがSYNパケットを受信すると送信先ホストの代理でSYNACKパケットを返送し、そのACKを受信したパケットに限定してサーバへ実際のSYNパケットを届けることで攻撃を軽減させる。
【０００７】
図９は、従来技術であるTCP Proxyの動作を説明するシーケンスチャートである。図において、攻撃元ホストとは、悪意の第三者が大量のSYNパケットを送信するために使用するホストを示す。尚、図では攻撃元ホストは１つしか記載していないが、DDoS攻撃においては攻撃元ホストが複数存在することも想定される。
【０００８】
はじめに、攻撃元ホストより送信元IPアドレスを詐称したSYNパケットが防御対象に向けて送信される（ステップＳ５０１）。TCP Proxy機能部は、SYNパケットを受信すると、SYNACKパケットを送信する（ステップＳ５０２）。SYNACKパケットの確認応答番号は該SYNパケットのシーケンス番号＋１の値が入る。SYNACKのシーケンス番号は任意の値が挿入される。ここで攻撃元ホストが送信するSYNパケットは送信元IPアドレスが詐称されているため、SYNACKパケットは詐称されたIPアドレスを持つホストに送信される。詐称されたIPアドレスを持つホストは、存在しないか存在したとしても正常な3WayHandshakeの手順を踏んでいないためRSTパケットを送信してコネクションを切断するという処理を行うためACKパケットは返送されない。このようにTCP Proxyが攻撃パケットの防御壁になることで防御対象の負荷を低減することができる。
【０００９】
また、TCP Proxy機能部が、正常なホストからのSYNパケット送信（ステップＳ５０３）に対してSYNACKパケットを代理応答すると（ステップＳ５０４）、ACKパケットが返送される（ステップＳ５０５）。このように3WayHandshakeが完了した正常なTCPフローのパケットのみを防御対象に中継することで、正常なアクセスは正しく防御対象に届けることができる（ステップＳ５０６からステップＳ５０８）。
【００１０】
また、その他のSynFlood攻撃を防御する仕組みとして、攻撃対象における受信パケットの流量を監視し、予め決められた閾値を上回った場合、パケットバッファに蓄積するパケットを間引くという方法がある（例えば、特許文献１参照）。これはシステムダウンさせない仕組みとして有効である。
【特許文献１】特開２００４−２４８１９８号公報（第７頁−第１３頁、図１）
【非特許文献１】"Inferring Internet Denial-of-Service Activity", David Moore, M.Voelker and Stefan Savage,San Diego Supercomputer Center University of California,San Diego
【発明の開示】
【発明が解決しようとする課題】
【００１１】
今後、家電や携帯端末といった端末装置がオープンなネットワークに接続される機会が増えることが予想されるが、端末装置は低コスト化への要求が強いためSynFlood攻撃防御機能を搭載しても、コストアップとなる高価な高性能CPUや追加メモリを使わないようにすることが求められる。TCP Proxy機能を端末装置に搭載した場合、OSに取り込まれているTCP/IPプロトコルスタックとの間でTCPフローの中継処理が必要となる。このTCPフローを中継する際には、TCPフロー毎のセッションの情報（送信元ポート番号や宛先ポート番号、シーケンス番号、確認応答番号等）を保持する必要があり、SYNが到達する都度、記憶領域を確保しなければならず、メモリ量（即ち、回路規模）が増大する。
【００１２】
また、特許文献１に開示されたDos攻撃防御方法のように、受信パケット流量を監視して、予め決められた閾値を上回った場合にパケットバッファに蓄積するパケットを間引くという方式は、端末装置のシステムダウンを回避する方式としては有効である。しかし、セッション情報を確認することなくパケットを間引くため、正常アクセスにもかかわらずデータが間引かれてしまう。
【００１３】
本発明は、上記従来の事情に鑑みてなされたものであって、正常アクセスのパケットのみを通過させ、不要な中継処理を省くことができるパケットフィルタ回路及びパケットフィルタ方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明のパケットフィルタ回路は、通過設定テーブルに登録されているヘッダ情報を元にパケットを通過させるパケットフィルタ回路であって、前記通過設定テーブルを参照して、パケットを通過させるか否かを判断する通過判定手段と、通過不可と判断されたパケットがSYNパケットである場合、該SYNパケットに対するSYNACKパケットを代理応答するSYNACK代理応答手段と、通過不可と判断されたパケットがACKパケットである場合、該ACKパケットのヘッダ情報を前記通過設定テーブルのエントリに追加する通過設定エントリ追加手段と、前記通過設定エントリ追加手段がエントリを追加する際、前記ACKパケットの送信元に対してコネクション切断を通知するコネクション切断手段と、を備える。
【００１５】
上記構成によれば、代理応答したSYNACKパケットに対してACK応答を返送する送信元ホストからのパケットのみ通過させることにより、SYNパケットだけを送りつける攻撃元ホストからのパケットを廃棄することができるため、正常アクセスのパケットのみを通過させ、不正アクセス等に関わる不要な処理を省くことができる。また、TCPフロー毎のセッション情報を保持することなく、ACK応答を返送する送信元ホストにRST（リセット）を送り、再送されるSYNパケット以降のパケットを防御対象へ通過させる。したがって、フィルタの通過設定処理とコネクションの切断処理のみでTCPフローの中継処理を行わないため、TCP Proxyを端末装置に実装した場合にTCP ProxyがOSとの3WayHandshake中継処理のために必要とするTCPフロー毎の状態保存用記憶領域が不要となり、メモリを削減することができる。
【００１６】
また、本発明のパケットフィルタ回路は、パケット流量が所定の閾値未満であるか否かを監視するパケット流量監視手段を備え、前記通過判定手段が、パケット流量が前記閾値未満の場合、全てのパケットを通過させるものである。
【００１７】
上記構成によれば、防御対象のパケット処理能力を超えない場合は全てのパケットを通過させ、防御対象のパケット処理能力を超過するSynFlood攻撃等を受けた場合に、代理応答したSYNACKパケットに対してACK応答を返送する送信元ホストからのパケットを通過させ、再送されるSYNパケット以降のパケットを防御対象へ通過させる。従って、防御対象のパケット処理能力を超過するようなSynFlood攻撃を受けた際に、SYNパケットのみを送りつける攻撃元ホストからのパケットを廃棄することができ、SynFlood攻撃によるシステムダウンを防止できる。
【００１８】
また、本発明のパケットフィルタ回路は、TCPフロー情報をキーとして所定の計算式に基づいて３２ビットの番号を算出する番号算出手段を備え、前記SYNACK代理応答手段が、受信したSYNパケットのTCPフロー情報から前記番号算出手段で算出した番号をシーケンス番号として付与したSYNACKパケットを送信し、前記通過設定エントリ追加手段が、受信したACKパケットのTCPフロー情報から前記番号算出手段で算出した番号に１を加えた値が、受信したACKパケットのTCPヘッダに含まれる確認応答番号と一致する場合のみ、前記ACKパケットを前記通過設定テーブルに登録するものである。
【００１９】
上記構成によれば、TCPフロー情報をキーとして特定の計算式で算出した番号を初期シーケンス番号として付与したSYNACKパケットを代理応答し、同じ計算式でTCPフロー情報から番号を算出し、その値に１を加えた値がACKパケットの確認応答番号と一致するか否かを確認することで、ACKパケットの偽装の有無を確認できる。これにより、偽装ACKパケットが不正に通過設定テーブルに追加されることを防止できる。
【００２０】
また、本発明のパケットフィルタ方法は、通過設定テーブルに登録されているヘッダ情報を元にパケットを通過させるパケットフィルタ方法であって、前記通過設定テーブルを参照して、パケットを通過させるか否かを判断する通過判定ステップと、通過不可と判断されたパケットがSYNパケットである場合、該SYNパケットに対するSYNACKパケットを代理応答するSYNACK代理応答ステップと、通過不可と判断されたパケットがACKパケットである場合、該ACKパケットのヘッダ情報を前記通過設定テーブルのエントリに追加する通過設定エントリ追加ステップと、前記通過設定エントリ追加ステップにおいてエントリを追加する際、前記ACKパケットの送信元に対してコネクション切断を通知するコネクション切断ステップと、を有する。
【００２１】
また、本発明のパケットフィルタ方法は、前記通過判定ステップが、パケット流量が所定の閾値未満である場合、全てのパケットを通過させるものである。
【００２２】
さらに、本発明のパケットフィルタ方法は、前記SYNACK代理応答ステップが、受信したSYNパケットのTCPフロー情報をキーとして所定の計算式に基づいて算出した３２ビットの番号をシーケンス番号として付与したSYNACKパケットを送信し、前記通過設定エントリ追加ステップが、受信したACKパケットのTCPフロー情報をキーとして所定の計算式に基づいて算出した３２ビットの番号に１を加えた値が、受信したACKパケットのTCPヘッダに含まれる確認応答番号と一致する場合のみ、前記ACKパケットを前記通過設定テーブルに登録するものである。
【発明の効果】
【００２３】
本発明のパケットフィルタ回路によれば、代理応答したSYNACKパケットに対してACK応答を返送する送信元ホストからのパケットのみ通過させることにより、SYNパケットだけを送りつける攻撃元ホストからのパケットを廃棄することができるため、正常アクセスのパケットのみを通過させ、不正アクセス等に関わる不要な処理を省くことができる。
【発明を実施するための最良の形態】
【００２４】
以下、添付図面を参照しながら本発明の実施形態に係るパケットフィルタ回路について詳細に説明する。
【００２５】
［実施の形態１］
図１は、本発明の実施の形態１におけるパケット処理装置の構成を示す図である。パケット処理装置１００は、ネットワークからのパケットを受信するパケット受信部１１０、ネットワークへパケットを送信するパケット送信部１２０、通過設定テーブル（後述）に登録されている送信元からのパケットを通過させるパケットフィルタ回路部２００、防御対象３００を備える。ここで、パケット処理装置１００は、ネット家電や携帯端末等のネットワークに接続される端末装置を表している。
【００２６】
パケットフィルタ回路部２００は、更に、通過させたいパケットのヘッダ情報のうち少なくとも送信元情報を含むものをエントリとして登録する通過設定テーブル２２０、通過設定テーブル２２０を参照して、パケットを通過させるか否かを判断する通過判定部２１０、通過不可と判断されたパケットがSYNパケットである場合、該SYNパケットに対するSYNACKパケットを代理応答するSYNACK代理応答部２３０、通過不可と判断されたパケットがACKパケットである場合、該ACKパケットのヘッダ情報を前記通過設定テーブルのエントリに追加する通過設定エントリ追加部２５０、通過設定エントリ追加部２５０がエントリを追加する際、前記ACKパケットの送信元に対してコネクション切断を通知するコネクション切断部２４０を有する。
【００２７】
パケット処理装置１００のパケット受信部１１０がパケットを受信すると、パケットフィルタ回路部２００の通過判定部２１０は、パケットを通過させるか否かを判断する。防御対象３００は、ネットワーク機能を含め、パケット処理装置１００の主たる機能を実行する機能ブロックでパケット処理部となる。CPUやメモリ、OS、各種プロトコルスタック、アプリケーションソフトウェア等から成る。
【００２８】
通過判定部２１０は、パケットのヘッダ情報から少なくとも送信元情報を含むヘッダ情報を抽出し、通過設定テーブル２２０のエントリと一致比較を行い、エントリに一致する場合、通過指示信号を通過判定部２１０に通知する。
【００２９】
一方、一致するエントリがない場合、次の２種類の処理が行われる。まず、受信パケットがSYNパケットである場合、通過判定部２１０はSYNACK代理応答部２３０へヘッダ情報を通知し、SYNACK代理応答部２３０が当該SYNパケットに対応するSYNACKパケットを生成してネットワークに対して送信する。次に、受信パケットがACKパケットである場合、通過判定部２１０はヘッダ情報を通過設定エントリ追加部２５０に通知させ、通過設定エントリ追加部２５０がヘッダ情報から少なくとも送信元情報を含むヘッダ情報を抽出し、通過設定テーブル２２０に新しくエントリを追加すると同時に、コネクション切断部２４０にヘッダ情報を通知して、当該ACKパケットの送信元に対してRSTパケットを生成して送信する。
【００３０】
通過設定テーブル２２０に設定するヘッダ情報には送信元IPアドレス、送信元ポート番号、TCPシーケンス番号の少なくとも１つを含み、単独または複数の組合わせによってエントリを構成することが可能である。
【００３１】
ネットワークへのパケットの送信はパケット送信部１２０を介して行う。尚、パケット送信部１２０は、防御装置３００からの送信パケットを多重化して送信する仕組みとしてもよい。
【００３２】
図２は、本発明の実施の形態１におけるパケット処理装置の処理手順を示すフローチャートである。はじめに、パケット受信部１１０がパケットを受信すると（ステップＳ１０１）、パケットフィルタ回路部２００の通過判定部２１０は、通過設定テーブル２２０の検索を行って（ステップＳ１０２）、通過設定テーブル２２０に一致するエントリがあるか否かを解析する（ステップＳ１０３）。一致するエントリがある場合は受信パケットを通過させる（ステップＳ１０４）。一方、通過設定テーブル２２０に一致するエントリがない場合は次の処理手順で受信パケットの廃棄を行う。
【００３３】
通過判定部２１０は、受信したパケットがTCPのSYNパケットであるか否かを解析し（ステップＳ１０５）、SYNパケットである場合、通過判定部２１０はSYNACK代理応答部２３０へヘッダ情報を通知し、SYNACK代理応答部２３０は、受信したSYNパケットに対応するSYNACKパケットを生成してネットワークへ送信する（ステップＳ１０６）。
【００３４】
一方、受信したパケットがTCPのSYNパケットでない場合、通過判定部２１０は更に、受信したパケットがTCPのACKパケットであるか否かを解析する（ステップＳ１０７）。ACKパケットである場合、通過判定部２１０は受信したACKパケットの送信元情報を通過設定テーブル２２０に登録する（ステップＳ１０８）。尚、ここでは送信元情報を送信元IPアドレスのみとした例について説明している。通過判定部２１０は、同時に、コネクション切断部２４０にヘッダ情報を通知し、コネクション切断部２４０は、受信したACKパケットの送信元に対してRSTパケットを送信しコネクションを切断する（ステップＳ１０９）。
【００３５】
RSTパケットの送信後、及びステップＳ１０７の解析においてACKパケットでないと判定された場合、ステップＳ１０６でSYNACKパケットを送信した後に、通過判定部２１０は受信パケットを廃棄する（ステップＳ１１０）。以上の受信パケットの通過または廃棄を行った後、パケット処理が終了する（ステップＳ１１１）。
【００３６】
図３は、本発明の実施の形態１におけるパケット処理装置の動作例を示すシーケンスチャートである。攻撃元ホストとは悪意の第三者が大量のSYNパケットを送信するために使用するホストであり、図では便宜上攻撃元ホストを１つしか記載していないが複数存在することも想定される。攻撃元ホストより送信元IPアドレスを詐称したSYNパケットが防御対象に向けて送信されると（ステップＳ２０１）、パケットフィルタ回路部２００がSYNパケットに対するSYNACKパケットを代理応答する（ステップＳ２０２）。SYNACKパケットの確認応答番号は当該SYNパケットのシーケンス番号＋１の値が入る。SYNACKのシーケンス番号は任意の値を付与する。攻撃元ホストが送信するSYNパケットは送信元IPアドレスが詐称されているため、SYNACKパケットは詐称されたIPアドレスを持つホストに送信される。詐称されたIPアドレスを持つホストは、存在しないか存在したとしても正常な3WayHandshakeの手順を踏んでいないため、RSTパケットを送信してコネクションを切断し、そのためACKパケットは返送されない。このようにパケットフィルタ回路部２００が攻撃パケットからの防御壁になることで防御対象の負荷を低減することができる。
【００３７】
また、正常なホストからのSYNパケットに対して（ステップＳ２０３）、パケットフィルタ回路部２００がSYNACKパケットを代理応答すると（ステップＳ２０４）、ACKパケットが返送される（ステップＳ２０５）。3WayHandshakeが完了した正常なTCPフローのパケットの送信元は信頼できると判断することができる。
【００３８】
パケットフィルタ回路部２００は、当該ACKパケットのヘッダ情報から少なくとも送信元情報を含む情報を抽出し、通過設定テーブルのエントリに登録すると同時に、ACKパケットの送信元に対してRSTパケットを送信してコネクションを切断する（ステップＳ２０６）。正常なホストはコネクションが切断されると、新たなコネクションの再接続を試みる。例えば、LinuxカーネルVer2.4においてはSYNの再送回数はデフォルトで5回となっている。再接続を試みる正常ホストからのパケットは、通過設定テーブル２２０にエントリを登録しているのでパケットフィルタ回路部２００を通過して防御対象３００へ送られる（ステップＳ２０７）。そして、正常なホストと防御対象との間で3WayHandshakeが完了すると、コネクションを確立することができる（ステップＳ２０８からステップＳ２０９）。
【００３９】
図４は、本発明の実施の形態１におけるパケット処理装置の通過設定テーブルを概念的に示す図である。通過設定テーブルは、少なくとも送信元情報を含むヘッダ情報をエントリに登録する。図では、検索対象パラメータを送信元IPアドレスのみとした場合の例を示しているが、MACヘッダからTCPヘッダまでのヘッダ情報について単独または複数組み合わせてテーブルを構成することも可能である。その他のヘッダ情報としては、宛先MACアドレス、送信元MACアドレス、イーサタイプ、TOSフィールと、フラグメント情報、プロトコル番号、宛先IPアドレス、送信元ポート番号、宛先ポート番号、などを用いてよい。Actionはエントリにヒットしたときの処理を示している。ここでは通過を設定するテーブルであるためACTIONは“通過”としているが、単なる通過だけではなく、パケット処理装置内の各種内部処理ブロックを指定して送信するように設定することも可能である。
【００４０】
ところで、通過設定テーブル２２０のエントリ数は有限である。従って、追加情報で全てのエントリが消費された場合は、古いエントリから上書きするといった処理が必要となる。エントリの上書きのほか、エントリ毎にエージングタイマを持ち一定時間経過すると登録情報を削除するといった処理も可能である。また、防御対象３００からクリア信号を通知することでエントリ単体やテーブル全体の初期化を行うことも可能である。
【００４１】
［実施の形態２］
図５は、本発明の実施の形態２におけるパケット処理装置の構成を示す図である。図５に示すパケット処理装置１０１は、実施の形態１のパケット処理装置１００と比較して、パケットフィルタ回路部２０１内にパケット流量監視部２６０が付加された点が異なる。パケット処理装置１０１のその他の構成は、実施の形態１のパケット処理装置１００と同じであるため説明を省略する。
【００４２】
パケット流量監視部２６０は、パケット受信部１１０からパケットフィルタ回路部２０１へ送信されるパケット量を監視し、その流量が防御対象３００の処理能力の限界を超過しないように設定された所定の閾値未満であるか否かを判定する。
【００４３】
パケット流量が所定の閾値未満のとき、パケット流量監視部２６０は通過判定部２１０に通過指示信号を通知する。通過判定部２１０は、通過指示信号が入力されると、通過設定テーブルの検索をせずに全ての受信パケットを通過させる。パケット流量を監視する方法としては、単位時間当たりのパケット数、または単位時間当たりのデータ量（Byte数）を監視する方法や、防御対象３００が処理するためのパケットを一時的に蓄積するパケットバッファのパケット滞留量を監視する方法などを用いてよい。
【００４４】
また、パケット流量の閾値は、所定の値を予め設定しておいてもよいし、防御対象３００にCPU負荷を監視する機能を付与し、防御対象から動的に閾値を制御できるようにしてもよい。パケット流量監視部２６０が、防御対象３００のパケット処理能力を超過するパケットが流入したと判断した場合、通過判定部２１０は通過設定テーブル２２０の検索を行う。通過設定テーブルに一致したエントリがない場合は、SYNACK代理応答部２３０がSYNパケットに対するSYNACKパケットを代理応答し、ACKパケットが返送されたものに対して当該ACKパケットの送信元情報を持つパケットを通過させる。上記構成により、パケット処理装置１０１の処理限界を超えない場合は全てのパケットを通過させ、パケット処理装置１０１の処理限界を超過するSynFlood攻撃を受けた際、防御対象３００のシステムダウンを未然に防止することができる。
【００４５】
尚、通過設定テーブル２２０に登録された設定情報の初期化は、電源投入時に初期化する方法の他に、パケット流量監視部２６０が出力する通過指示信号を用いて初期化してもよい。また、防御対象３００のソフトウェアからの指示により初期化してもよい。
【００４６】
図６は、本発明の実施の形態２におけるパケット処理装置の処理手順を示すフローチャートである。はじめに、パケット受信部１１０がパケットを受信すると（ステップＳ３０１）、パケットフィルタ回路部２０１のパケット流量監視部２６０は、パケット受信部から送信されるパケットの流量が所定の閾値未満であるか否かを解析する（ステップＳ３０２）。パケット流量が閾値未満である場合は受信パケットを通過させる（ステップＳ３０３）。
【００４７】
パケット流量が閾値を超過する場合、次に、パケットフィルタ回路部２０１の通過判定部２１０は、通過設定テーブル２２０の検索を行って（ステップＳ３０４）、通過設定テーブル２２０に一致するエントリがあるか否かを解析する（ステップＳ３０５）。一致するエントリがある場合は受信パケットを通過させる（ステップＳ３０３）。一方、通過設定テーブル２２０に一致するエントリがない場合は次の処理手順で受信パケットの廃棄を行う。
【００４８】
通過判定部２１０は、受信したパケットがTCPのSYNパケットであるか否かを解析し（ステップＳ３０６）、SYNパケットである場合、通過判定部２１０はSYNACK代理応答部２３０へヘッダ情報を通知し、SYNACK代理応答部２３０は、受信したSYNパケットに対応するSYNACKパケットを生成してネットワークへ送信する（ステップＳ３０７）。
【００４９】
一方、受信したパケットがTCPのSYNパケットでない場合、通過判定部２１０は更に、受信したパケットがTCPのACKパケットであるか否かを解析する（ステップＳ３０８）。ACKパケットである場合、通過判定部２１０は受信したACKパケットの送信元情報を通過設定テーブル２２０に登録する（ステップＳ３０９）。尚、ここでは送信元情報を送信元IPアドレスのみとした例について説明している。通過判定部２１０は、同時に、コネクション切断部２４０にヘッダ情報を通知し、コネクション切断部２４０は、受信したACKパケットの送信元に対してRSTパケットを送信しコネクションを切断する（ステップＳ３１０）。
【００５０】
RSTパケットの送信後、及びステップＳ３０８の解析においてACKパケットでないと判定された場合、ステップＳ３０７でSYNACKパケットを送信した後に、通過判定部２１０は受信パケットを廃棄する（ステップＳ３１１）。以上の受信パケットの通過または廃棄を行った後、パケット処理が終了する（ステップＳ３１２）。
【００５１】
［実施の形態３］
図７は、本発明の実施の形態３におけるパケット処理装置の構成を示す図である。図７に示すパケット処理装置１０２は、実施の形態２のパケット処理装置１０１と比較して、パケットフィルタ回路部２０２のSYNACK代理応答部２３１及び通過設定エントリ追加部２５１の内部に、番号算出部２７０が付加された点が異なる。パケット処理装置１０２のその他の構成は、実施の形態２のパケット処理装置１０１と同じであるため説明を省略する。
【００５２】
番号算出部２７０は、受信したパケットのTCPフロー情報からSYNACKパケットに付与するシーケンス番号を算出する。ここでTCPフローの情報とは、送信元IPアドレス、宛先IPアドレス、送信元ポート番号、宛先ポート番号、TCP初期シーケンス番号を指す。算出式についてはハッシュ関数を用いる方法や、パラメータ値をバイト単位で分割して加算するというような簡易方法を用いてもよい。
【００５３】
番号算出部２７０は、SYNACK代理応答部２３１と通過設定エントリ追加部２５１において、同一の計算式によりTCPフロー情報をキーとして番号を算出する。SYNACK代理応答部２３１においては、受信したSYNパケットのTCPフロー情報から番号が算出され、SYNACKパケットのシーケンス番号として付与して送出される。通過設定エントリ追加部２５１においては、受信したACKパケットのTCPフロー情報から番号を算出し、ACKパケットのヘッダに含まれる確認応答番号と比較される。尚、TCP初期シーケンス番号はACKパケットのシーケンス番号−１となる。3WayHandshakeの一連の処理では同一のTCPフロー情報を持つSYNパケットとSYNACKパケットとACKパケットが送受信される。このため、ACKパケットのTCPフロー情報から番号算出部２７０により算出された番号に１を加えた値が、ACKパケットの確認応答番号に一致すれば正常な3WayHandshakeのパケットと認証することができる。偽造されたACKパケットであった場合、番号算出部２７０が算出した値＋１と、実際にACKパケットのTCPヘッダに含まれる確認応答番号は異なるものとなるので、これを不正なACKパケットとみなし、受信したACKパケットが廃棄される。
【００５４】
次に、図８は、本発明の実施の形態３におけるパケット処理装置の処理手順を示すフローチャートである。はじめに、パケット受信部１１０がパケットを受信すると（ステップＳ４０１）、パケットフィルタ回路部２０２のパケット流量監視部２６０は、パケット受信部から送られるパケットの流量が所定の閾値未満であるか否かを解析する（ステップＳ４０２）。パケット流量が閾値未満である場合は受信パケットを通過させる（ステップＳ４０３）。
【００５５】
パケット流量が閾値を超過する場合、次に、パケットフィルタ回路部２０２の通過判定部２１０は、通過設定テーブル２２０の検索を行って（ステップＳ４０４）、通過設定テーブル２２０に一致するエントリがあるか否かを解析する（ステップＳ４０５）。一致するエントリがある場合は受信パケットを通過させる（ステップＳ４０３）。一方、通過設定テーブル２２０に一致するエントリがない場合は次の処理手順で受信パケットの廃棄を行う。
【００５６】
通過判定部２１０は、受信したパケットがTCPのSYNパケットであるか否かを解析し（ステップＳ４０６）、SYNパケットである場合、SYNACK代理応答部２３１において、受信したSYNパケットのTCPフロー情報から特定の計算式によりSYNACKパケットに付与するシーケンス番号を算出する（ステップＳ４０７）。そして、算出したシーケンス番号をSYNACKのシーケンス番号として、SYNACK代理応答部２３１は、受信したSYNパケットに対応するSYNACKパケットを生成してネットワークへ送信する（ステップＳ４０８）。
【００５７】
一方、受信したパケットがTCPのSYNパケットでない場合、通過判定部２１０は更に、受信したパケットがTCPのACKパケットであるか否かを解析する（ステップＳ４０９）。ACKパケットである場合、通過設定エントリ追加部２５１において、受信したACKパケットのTCPフロー情報から特定の計算式により番号を算出する（ステップＳ４１０）。この特定の計算式は、ステップＳ４０７の計算と同一の計算式を用いる必要がある。
【００５８】
次に、通過設定エントリ追加部２５１は、算出した番号に１を加えた値と、実際のACKパケットのTCPヘッダに含まれる確認応答番号が一致しているか否かを確認し（ステップＳ４１１）、一致している場合、通過判定部２１０は受信したACKパケットの送信元情報を通過設定テーブル２２０に登録する（ステップＳ４１２）。尚、ここでは送信元情報を送信元IPアドレスのみとした例について説明している。通過判定部２１０は、同時に、コネクション切断部２４０にヘッダ情報を通知し、コネクション切断部２４０は、受信したACKパケットの送信元に対してRSTパケットを送信しコネクションを切断する（ステップＳ４１３）。
【００５９】
RSTパケットの送信後、及びステップＳ４１１において算出番号に１を加えた値と実際のACKパケットのTCPヘッダに含まれる確認応答番号が一致していない場合、またステップＳ４０９の解析においてACKパケットでないと判定された場合、更にステップＳ４０８でSYNACKパケットを送信した後に、通過判定部２１０は受信パケットを廃棄する（ステップＳ４１４）。受信パケットの通過または廃棄を行った後、パケット処理が終了する（ステップＳ４１５）。
【００６０】
尚、以上説明したパケットフィルタ回路及びパケットフィルタ方法は、ネットワークインターフェースを備えたネット家電や携帯端末など、オープンなネットワークに接続する端末装置やルータやファイアウォールなどの中継装置において有用である。また、従来よりもメモリ量を削減できるため、半導体チップに内蔵することにより、半導体チップ製造におけるコスト低減にも有用である。
【産業上の利用可能性】
【００６１】
本発明は、代理応答したSYNACKパケットに対してACK応答を返送する送信元ホストからのパケットのみ通過させることにより、SYNパケットだけを送りつける攻撃元ホストからのパケットを廃棄することができるため、正常アクセスのパケットのみを通過させ、不正アクセス等に関わる不要な処理を省くことができる効果を有し、通過設定テーブルに登録されているヘッダ情報を元にパケットを通過させるパケットフィルタ回路及びパケットフィルタ方法等に有用である。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施の形態１におけるパケット処理装置の構成を示す図
【図２】本発明の実施の形態１におけるパケット処理装置の処理手順を示すフローチャート
【図３】本発明の実施の形態１におけるパケット処理装置の動作例を示すシーケンスチャート
【図４】本発明の実施の形態１におけるパケット処理装置の通過設定テーブルを概念的に示す図
【図５】本発明の実施の形態２におけるパケット処理装置の構成を示す図
【図６】本発明の実施の形態２におけるパケット処理装置の処理手順を示すフローチャート
【図７】本発明の実施の形態３におけるパケット処理装置の構成を示す図
【図８】本発明の実施の形態３におけるパケット処理装置の処理手順を示すフローチャート
【図９】従来技術であるTCP Proxyの動作を説明するシーケンスチャート
【符号の説明】
【００６３】
１００、１０１、１０２  パケット処理装置
１１０  パケット受信部
１２０  パケット送信部
２００、２０１、２０２  フィルタ機能部
２１０  通過判定部
２２０  通過設定テーブル
２３０、２３１  ＳＹＮＡＣＫ代理応答部
２４０  コネクション切断部
２５０、２５１  通過設定エントリ追加部
２６０  パケット流量監視部
２７０  番号算出部
３００  防御対象
【図１】
2006345268.tif 000003
【図２】
2006345268.tif 000004
【図３】
2006345268.tif 000005
【図４】
2006345268.tif 000006
【図５】
2006345268.tif 000007
【図６】
2006345268.tif 000008
【図７】
2006345268.tif 000009
【図８】
2006345268.tif 000010
【図９】
2006345268.tif 000011