(57)【要約】      （修正有）【課題】ネットワークからのアクセス要求を規制するシステム及び方法を提供する。【解決手段】システム１００において、ロードバランサ１０１はアクセス要求を解析してＵＤＰメッセージを生成し、アグリゲータ１０２に送る。アグリゲータは、予め定義されたデータフィールドの組み合わせ及び予め定義された時間の長さを基に、ＵＤＰメッセージを累計して統計データを生成し、サマライザ１０３からの要求に応答してサマライザに送る。サマライザは、予め決められた要求時間間隔に基づいてアグリゲータに統計データを要求し、アグリゲータから受けた統計データ及び予め定義されたルールに基づいてアクセス要求のブラックリストを生成し、ロードバランサからの要求に応答してロードバランサに送る。ロードバランサは、現在のブラックリストに基づいて、アクセス要求に対する処理動作を確定する。【選択図】図１
2019134484.tif 000002
【特許請求の範囲】
【請求項１】
ロードバランサ、アグリゲータおよびサマライザを備えたアクセス要求を規制するシステムにおいて、
前記ロードバランサは、ネットワークからの各々のアクセス要求を受信し、受信した当該アクセス要求を解析してＵＤＰメッセージにするとともに、当該ＵＤＰメッセージを前記アグリゲータに送信するように配置され、
前記アグリゲータは、前記ロードバランサから受信した複数のＵＤＰメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、前記サマライザからの要求に応答して当該サマライザに累計された統計データを送信するように配置され、
前記サマライザは、予め決められた要求時間間隔に基づいて前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に応答して前記ブラックリストを前記ロードバランサに送信するように配置されており、前記ブラックリストは、１つまたは複数の特定のアクセス要求のうちの各々に対して実行されるべき処理動作を指定しており、かつ
前記ロードバランサは、さらに現在のブラックリストに基づいて、受信した各アクセス要求に対する処理動作を確定するように配置されており、
前記統計データは前記予め定義された時間の長さ以内に累計された、前記予め定義されたデータフィールドの組み合わせを含むＵＤＰメッセージの数を含む、
アクセス要求を規制するシステム。
【請求項２】
前記アグリゲータは、互いに独立して稼働する複数のアグリゲーションユニットを含み、前記ロードバランサは、各ＵＤＰメッセージを前記複数のアグリゲーションユニットのうちの１つのアグリゲーションユニットに送信し、前記複数のアグリゲーションユニットのうちの各アグリゲーションユニットはそれぞれ前記累計を行い、
前記サマライザは、前記複数のアグリゲーションユニットからそれぞれ統計データを受信するとともに、取りまとめられた統計データを生成し、また、
前記ブラックリストは、前記取りまとめられた統計データおよび前記予め定義されたルールに基づいて生成される、請求項１に記載のシステム。
【請求項３】
前記ロードバランサは予め定義されたホワイトリストをさらに含み、前記ホワイトリストは通過させるべきアクセス要求に関する１つまたは複数の記録を含み、また、
前記ロードバランサは受信した各々のアクセス要求に対し、
当該アクセス要求が前記ホワイトリストにおける１つの記録にマッチングしている、または前記ブラックリストにおけるいずれの記録にもマッチングしていない場合には、当該アクセス要求を通過させる操作と、
当該アクセス要求が前記ホワイトリストにおけるいずれの記録にもマッチングせず、かつ前記ブラックリストにおける１つの記録にマッチングしている場合には、前記ブラックリスト内のマッチングしている記録に指定された処理動作に基づいて当該アクセス要求を操作する操作とに基づいて、当該アクセス要求に対する処理動作を確定する、請求項１に記載のシステム。
【請求項４】
前記ロードバランサにおける前記予め定義されたホワイトリストは前記ブラックリストと共に前記サマライザから得られる、請求項３に記載のシステム。
【請求項５】
前記ブラックリストに定められた前記処理動作は遮断、リダイレクトおよび遅延のうちの１つを含む、請求項１に記載のシステム。
【請求項６】
アクセス要求を規制する方法であって、
ロードバランサによってネットワークからの各々のアクセス要求を受信し、受信したアクセス要求を解析してＵＤＰメッセージにするとともに、当該ＵＤＰメッセージをアグリゲータに送信するステップと、
前記ロードバランサが現在のブラックリストに基づいて、受信した当該アクセス要求に対する処理動作を確定するステップと、を含み、前記ブラックリストは１つまたは複数の特定のアクセス要求のうちの各々に対して実行されるべき処理動作を指定している方法において、
前記アグリゲータは、前記ロードバランサから送信されたＵＤＰメッセージを受信し、受信した複数のＵＤＰメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、サマライザからの要求に応答して累計された統計データを当該サマライザに送信し、
前記サマライザは、予め決められた要求時間間隔に基づいて前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に応答して前記ブラックリストを前記ロードバランサに送信し、
前記統計データは前記予め定義された時間の長さ以内に累計された、前記予め定義されたデータフィールドの組み合わせを含むＵＤＰメッセージの数を含む、方法。
【請求項７】
前記アグリゲータは、互いに独立して稼働する複数のアグリゲーションユニットを含み、前記ロードバランサは、各ＵＤＰメッセージを前記複数のアグリゲーションユニットのうちの１つのアグリゲーションユニットに送信し、前記複数のアグリゲーションユニットのうちの各アグリゲーションユニットはそれぞれ前記累計を行い、
前記サマライザは、前記複数のアグリゲーションユニットからそれぞれ統計データを受信するとともに、取りまとめられた統計データを生成し、また、
前記ブラックリストは、前記取りまとめられた統計データおよび前記予め定義されたルールに基づいて生成される、請求項６に記載の方法。
【請求項８】
前記ロードバランサは予め定義されたホワイトリストをさらに含み、前記ホワイトリストは通過させるべきアクセス要求に関する１つまたは複数の記録を含み、また、
前記ロードバランサは受信された各々のアクセス要求に対し、
当該アクセス要求が前記ホワイトリストにおける１つの記録にマッチングしている、または前記ブラックリストにおけるいずれの記録にもマッチングしていない場合には、当該アクセス要求を通過さる操作と、
当該アクセス要求が前記ホワイトリストにおけるいずれの記録にもマッチングせず、かつ前記ブラックリストにおける１つの記録にマッチングしている場合には、前記ブラックリスト内のマッチングしている記録に指定された処理動作に基づいて当該アクセス要求を操作する操作とに基づいて当該アクセス要求に対する処理動作を確定する、請求項６に記載の方法。
【請求項９】
前記ロードバランサにおける前記予め定義されたホワイトリストは前記ブラックリストと共に前記サマライザから得られる、請求項８に記載の方法。
【請求項１０】
前記ブラックリストに定められた前記処理動作は遮断、リダイレクトおよび遅延のうちの１つを含む、請求項６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワークからのアクセス要求を規制するシステムおよびそれに相応する方法に係わる。
【背景技術】
【０００２】
従来のロードバランサ（load balancer）は、例えばlinuxにおけるHaProxyの構成を採用し、ネットワークからの各ＨＴＴＰ要求に含まれるcookies又はＵＲＬ解釈を読み取ると共に、それらの情報に基づいてヘッダを書き換え、それと同時にＨＴＴＰ要求をバックエンドサーバ群に送信し、これによってバックエンドサーバ群における各サーバが占用するトラフィック、資源はバランス状態に達する。しかし、従来のロードバランサは、ネットワークのトラフィックに対して自動的にフィルタリングチェックを行うことができず、そのため、アタックトラフィックを限定したり廃棄したりすることができない。
【０００３】
従来の技術として、トラフィック洗浄技術に基づきＴＣＰパケットを検出することによってＩＣＭＰ／ＴＣＰ／ＵＤＰフラッディング攻撃に対する防護を実現する方法が開示されており、これはＴＣＰ／ＵＤＰパケットを再送することによって実現される。この従来の技術はＴＣＰ／ＵＤＰ層のパケットのみに有効であり、暗号解読を必要とする開放型システム間相互接続基準参照モデル（ＯＳＩ）の第７層であるアプリケーション層のＨＴＴＰフラッディング攻撃を予防することができない。
【０００４】
一つのアイデアとしてＵＲＬに対するアクセスを分析し、単位時間あたりのアクセス量、例えばＱＰＳに基づいてアクセス要求を規制する方法である。大規模サイトのＵＲＩに対するアクセスの分析は通常大量のメモリを要する。一般に、データフィールドＩＰアドレス、ユーザ標識（ＵＳＥＲＩＤ）、統一資源位置指定子（ＵＲＬ）などいかなる組み合わせに対しても、当該組み合わせに関連付けられた各々のアクセスのタイムスタンプ（time stamp）を記録する必要がある。ＱＰＳを計算するために、各タイムポイントのフィルタリングまたはソーティングをしなければならず、時間的に無駄が多くかつ大量のメモリを費やしてしまう。
【０００５】
従来の技術においては、ＱＰＳを計算するために、各タイムポイントのフィルタリングまたはソーティングをしなければならず、時間的に無駄が多くかつ大量のメモリを費やしてしまう。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上記課題を少なくとも部分的に解決するシステムおよび方法を提供することを目的とする。本発明は、とくにネットワークのＤＯＳ攻撃（サービス拒否攻撃）およびＤＤＯＳ攻撃（分散型サービス拒否攻撃）を解決するのに好適である。当該技術は、とくにＨＴＴＰフラッディング（http flooding）攻撃に対する防備に好適である。本発明では、ユーザのトラフィックに対する累計および分析によってパターンマッチングに合致する攻撃トラフィックを見つけ出すとともにこれを規制または破棄し、これによってバックエンドサーバを保護する。
【課題を解決するための手段】
【０００７】
本発明の１つの態様によれば、一種一種のアクセス要求を規制するシステムを提供する。当該システムはロードバランサ、アグリゲータおよびサマライザを備えている。前記ロードバランサはネットワークからの各々のアクセス要求を受信し、受信した当該アクセス要求を解析してＵＤＰメッセージにするとともに、当該ＵＤＰメッセージを前記アグリゲータに送信するように配置されている。前記アグリゲータは、前記ロードバランサから受信した複数のＵＤＰメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、前記サマライザからの要求に応答して当該サマライザに累計した統計データを送信するように配置されている。前記サマライザは、予め決められた要求時間間隔に基づいて前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に応答して前記ブラックリストを前記ロードバランサに送信するように配置されている。ここで、前記ブラックリストは、１つまたは複数の特定のアクセス要求のうちの各々に対して実行されるべき処理動作を指定している。前記ロードバランサは、さらに現在のブラックリストに基づいて受信した各アクセス要求に対する処理動作を確定するように配置されている。
【０００８】
本発明の他の態様によれば、アクセス要求を規制するコンピュータの実現方法を提供する。前記方法は、ロードバランサによってネットワークからの各々のアクセス要求を受信し、受信したアクセス要求を解析してＵＤＰメッセージにするとともに、当該ＵＤＰメッセージをアグリゲータに送信するステップと、前記ロードバランサが現在のブラックリストに基づいて受信した当該アクセス要求に対する処理動作を確定するステップと、を含む。ここで、前記ブラックリストは、１つまたは複数の特定のアクセス要求のうちの各々に対して実行されるべき処理動作を指定する。前記アグリゲータは、前記ロードバランサによって送信されたＵＤＰメッセージを受信し、受信した複数のＵＤＰメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、サマライザからの要求に応答して累計された統計データを当該サマライザに送信する。前記サマライザは、予め決められた要求時間間隔に基づいて前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に応答して前記ブラックリストを前記ロードバランサに送信する。
【０００９】
本発明によれば、前記統計データは前記予め定義された時間の長さ以内で累計される、前記予め定義されたデータフィールドの組み合わせを含むＵＤＰメッセージの数を含む。
【００１０】
本発明によれば、前記ネットワークはインターネットであり、前記アクセス要求はインターネットからのＨＴＴＰ要求である。
【００１１】
本発明によれば、前記アグリゲータは、互いに独立して運転する複数のアグリゲーションユニットを含み、前記ロードバランサは、各ＵＤＰメッセージを前記複数のアグリゲーションユニットのうちの１つに送信し、前記複数のアグリゲーションユニットの各アグリゲーションユニットはそれぞれ前記累計を行う。前記サマライザは、前記複数のアグリゲーションユニットからそれぞれ統計データを受信し、取りまとめられた統計データを生成する。また、前記ブラックリストは、前記取りまとめられた統計データおよび前記予め定義されたルールに基づいて生成される。
【００１２】
本発明によれば、前記ロードバランサは予め定義されたホワイトリストをさらに含む。前記ホワイトリストは通過させるべきアクセス要求に関する１つまたは複数の記録を含む。また、前記ロードバランサは受信した各々のアクセス要求について、当該アクセス要求が前記ホワイトリストにおける１つの記録にマッチングし、または前記ブラックリストにおけるいずれの記録にもマッチングしない場合、当該アクセス要求を通過させるように操作して当該アクセス要求に対する処理動作を確定する。当該アクセス要求が前記ホワイトリストにおけるいずれの記録にもマッチングせず、かつ前記ブラックリストにおける１つの記録にマッチングした場合に、ブラックリストのマッチングした記録に指定された処理動作に基づいて当該アクセス要求を操作する。また、前記ロードバランサにおける前記予め定義されたホワイトリストは前記ブラックリストと共に前記サマライザから得ることができる。
【００１３】
本発明のシステムによれば、前記ブラックリストに定められた前記処理動作は遮断、リダイレクトおよび遅延のうちの１つを含む。
【図面の簡単な説明】
【００１４】
【図１】本発明の、アクセス要求を規制するためのシステムの構造図である。
【図２】本発明の、ロードバランサが受信したアクセス要求を処理するタイムシーケンス図である。
【図３】本発明の、サマライザの実施例の構成に係わるブロック図である。
【発明を実施するための形態】
【００１５】
以下において、図面を参照しながら本発明の実施例を詳しく説明する。
本発明は、統計データを用いてネットワークからのアクセス要求を規制するシステムおよび方法を提供した。
【００１６】
１つのアクセス要求、例えばＨＴＴＰ要求は少なくとも、当該ユーザがアクセスしようとする目的地ドメイン名（host）、ユーザが要求した統一資源識別子（uri）、ユーザ名（uid）、クライアントＩＰアドレス（cip）などのデータフィールド（data fields）を含む。
【００１７】
本発明によれば、本発明はネットワークからのアクセス要求を規制するシステムを提供する。当該システムはロードバランサ、アグリゲータおよびサマライザを備えている。
【００１８】
前記ロードバランサは、前記ネットワークからのアクセス要求を受信し、受信した各アクセス要求を解析してＵＤＰメッセージにするとともに、当該ＵＤＰメッセージをアグリゲータに送信する。
【００１９】
当該アグリゲータは、受信した複数のＵＤＰメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、サマライザからの要求に応答して当該サマライザに統計データを送信する。前記統計データは現在の予め定義された時間の長さ以内で累計された、前記予め定義されたデータフィールドの組み合わせを含むＵＤＰメッセージの数を含む。
【００２０】
前記サマライザは、予め決められた要求時間間隔に基づいてアクセス要求に関する統計データを前記アグリゲータに要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に基づいて当該ブラックリストを前記ロードバランサに送信する。前記ブラックリストは、１つまたは複数の特定のアクセス要求に対する処理動作を指定している。
【００２１】
前記ロードバランサは現在のブラックリストに基づいて、受信した各アクセス要求に対する処理動作を確定する。
【００２２】
以下において、具体的な実施例を参照しながら本発明の実施例におけるシステムを詳しく説明する。なお、具体的な実施例は本発明の主旨および具体的な実現方法を理解するためのものであり、本発明は特定の実施例に限定されない。
【００２３】
図１は本発明の実施例におけるシステム１００を示す。当該システム１００はロードバランサ１０１、アグリゲータ１０２およびサマライザ１０３の３つのモジュールを含む。
【００２４】
ロードバランサ１０１は、ネットワークからのアクセス要求、例えばインターネットからのＨＴＴＰ要求を受信し、受信した各アクセス要求を解析してＵＤＰメッセージにするとともに、当該ＵＤＰメッセージをアグリゲータ１０２に送信する。
【００２５】
ＵＤＰメッセージを処理するために使用される資源は少なく、かつ処理速度が速い。そのため、ロードバランサのオーバーヘッドを大幅に減らすことができる。また、ＵＤＰプロトコルは接続型プロトコルではないため、一定のメッセージロスが発生する。しかし、このようなロスは許容誤差の範囲内にあり、システムの頑健性（robustness）に与える影響は無視できる。
【００２６】
アグリゲータ１０２は複数のアグリゲーションユニットを含んでもよく、複数のアグリゲーションユニットは独立して水平に拡張することができる。即ち、各アグリゲーションユニットは独立して配置されて稼動しているため、相互間の影響および依存性を有していない。現在のアグリゲータの処理能力がニーズを満たすことができなければ、簡単にサーバ資源を増やして新しいアグリゲーションユニットを構成することができる。このように、ビッグトラフィックのニーズを満たすことができる。
【００２７】
ロードバランサ１０１は各々のＵＤＰメッセージを選択されたアグリゲーションユニットに送信する。各々のアグリゲーションユニットは受信したＵＤＰメッセージをそれぞれ累計して統計データを生成する。
【００２８】
本発明の一実施例によれば、ロードバランサ１０１はＵＤＰメッセージを１つ１つ順次複数のアグリゲーションユニットに送信する。例えば、１つ目のＵＤＰメッセージを１つ目のアグリゲーションユニットに送信し、２つ目のＵＤＰメッセージを２つ目のアグリゲーションユニットに送信するというように、生成されたＵＤＰメッセージを順次各々のアグリゲーションユニットに送信する。最後のアグリゲーションユニットにＵＤＰメッセージを送信した後に、再び１つ目のアグリゲーションユニットにＵＤＰメッセージを送信する。
【００２９】
各々のアグリゲーションユニットは予め定義されたルールまたは条件、例えば予め定義されたデータフィールドの組み合わせ、予め定義された時間間隔などに基づいて、受信したＵＤＰメッセージを分析するとともに累計する。ＵＤＰメッセージの各々がユーザのＨＴＴＰアクセス要求の情報、例えばユーザがアクセスしようとする目的地ドメイン名（host）、ユーザが要求した統一資源識別子（uri）、ユーザ名（uid）、クライアントＩＰアドレス（cip）などを含む。アグリゲーションユニットは同一の目的地ドメイン名（同じhost）、同一のソース（同じuid 、同じcip ）を有するアクセス要求の数をカウントするとともに、当該ソースからのアクセス要求の数を取得する。
【００３０】
決められたタイムセグメント（例えば直前の６０秒または直前の５分間）内に受信した、あるソースからのアクセス要求の数に基づいて、当該ソースからの単位時間あたりのアクセス要求の数を得ることができる。例えば、当該決められたタイムセグメント内に受信した当該ソースからのアクセス要求の合計数を当該タイムセグメントの時間の長さで除することによって当該ソースの１秒あたりの問い合わせ率（ＱＰＳ）の値を得ることができる。
【００３１】
その後、アグリゲーションユニットはサマライザ１０３の要求に基づいて当該アグリゲーションユニットで生成されたアクセス要求に関する最新の統計データを当該サマライザ１０３に送信する。
【００３２】
サマライザ１０３は予め決められた時間、例えば１０秒間ごとにアグリゲータまたはアグリゲータにおける各々のアグリゲーションユニットに「統計データ」を要求することができる。このような要求は例えばＨＴＴＰ形式であってもよい。
【００３３】
アグリゲータおける各々のアグリゲーションユニットはサマライザ１０３からの要求を受信した後に、当該アグリゲーションユニットで生成された、アクセスに関する最新の統計データから応答メッセージ、例えばＨＴＴＰ形式の応答メッセージを構成するとともに、最新の統計データを含む応答メッセージをサマライザ１０３に送信する。
【００３４】
サマライザ１０３は、各アグリゲーションユニットからの応答メッセージを受信した後に、特定の分類に基づいてそれらのメッセージに含まれる統計データを処理し、さらに取りまとめられた統計データを生成するとともに、予め定義されたルールに基づいてブラックリストを生成する。
【００３５】
本発明の一実施例によれば、ブラックリストにおける１つのブラックリスト記録は目的地ドメイン名（host）、ソースユーザ名（uid）、ソースクライアントＩＰ（cip）および処理動作（action）の４つのパラメータを含むことができる。
【００３６】
当該ブラックリスト記録の意味は下記のように理解することができる。即ち、当該目的地ドメイン名（host）に送信された要求に対し、当該要求に含まれるユーザ名とクライアントＩＰが当該記録における対応値（ソースユーザ名、ソースクライアントＩＰ）に合致していれば、当該記録内に指定された処理動作を実行する。当該処理動作は、例えば当該要求に対する遮断、リダイレクトまたは遅延であってもよい。
【００３７】
アクセス要求に含まれる目的地ドメイン名、ユーザ名、クライアントＩＰアドレスがブラックリストにおける１つの記録における目的地ドメイン名、ユーザ名、クライアントＩＰアドレスと完全に一致している場合には、当該アクセス要求が当該ブラックリストにマッチングしているとする。
【００３８】
具体的な目的地ドメイン名に対する、単位時間あたりの要求数の閾値および当該閾値を超えた場合の相応する処理動作をサマライザ１０３の構成ファイル１０３６に設定する。
【００３９】
サマライザ１０３は、同じデータフィールドの組み合わせを有するアクセス要求の取りまとめられた統計データに基づいて判断する。このようなアクセス要求の単位時間あたりのアクセス量（ＱＰＳ）の値が構成ファイル１０３６に設定されたその目的地ドメイン名に対応する単位時間あたりのアクセス量の閾値を超えた場合には、相応するブラックリスト記録を生成する。当該記録は当該要求の目的地ドメイン名、ユーザ名、クライアントＩＰおよび相応の処理動作を含む。生成されたブラックリスト記録はブラックリストに加えられて現在のブラックリストを生成する。
【００４０】
また、サマライザ１０３でホワイトリストを維持することもできる。当該ホワイトリストはブラックリストと同じ構造を有してもよいが、当該ホワイトリストは優先処理ストラテジーを実現することができる。即ち、ホワイトリストにマッチングするアクセス要求（即ち、当該アクセス要求が当該ホワイトリストにおける１つのホワイトリスト記録にマッチングしている）の場合には、当該アクセス要求をそのまま通過させる。即ち、当該アクセス要求をその目的地バックエンドサーバ（host）に誘導するとともに、当該バックエンドサーバが当該アクセス要求に直接応答する。
【００４１】
サマライザ１０３は現在のブラックリストと予め定義されたホワイトリストとを非同期的にロードバランサ１０１にローディングすることができる。本発明の一実施例によれば、サマライザ１０３のリスニングスレッドによってロードバランサ１０１にブラックリストを提供することができる。ロードバランサ１０１がサマライザ１０３に要求した場合に、リスニングスレッドはサマライザ１０３における現在のブラックリストを取得するとともに、当該ブラックリストをホワイトリストと共にロードバランサ１０１に送信する。
【００４２】
ロードバランサ１０１は、ブラックリストにおける各々の記録に指定された「処理動作」の実際の実行者である。
【００４３】
もちろん、ホワイトリストは必ずしもサマライザ１０３に維持する必要はなく、例えばロードバランサ１０１に保持してもよい。
【００４４】
アクセス要求がホワイトリストにマッチングしていれば、ロードバランサ１０１の処理ルールはホワイトリスト優先なので、当該アクセス要求がブラックリストにマッチングしているか否かを問わず、ロードバランサ１０１は当該アクセス要求を通過させる。当該アクセス要求がホワイトリストにマッチングしていないがブラックリストにマッチングしている場合には、ロードバランサ１０１はブラックリスト内のマッチングしている具体的な記録に基づいて相応の処理動作を実行する。当該アクセス要求がホワイトリストとブラックリストのいずれにもマッチングしていない場合には、当該アクセス要求を通過させる。
【００４５】
本発明によれば、ロードバランサ１０１はブラックリストおよびホワイトリストに基づいてネットワークからのアクセス要求の各々に対して下記の処理を行う。
当該アクセス要求がホワイトリストにマッチングしている、またはブラックリストにマッチングしていない場合には、当該アクセス要求を通過させるとともに、相応のＵＤＰメッセージを構築してアグリゲータに送信する（このように通過させたトラフィックこそが実際に相応のバックエンドサーバに送信されたトラフィックなので、アグリゲータはこのようなアクセス要求の「統計データ」を継続して計算する必要がある）。
当該アクセス要求がホワイトリストにマッチングしていないがブラックリストにマッチングしている場合には、ブラックリスト内のマッチングしている記録に指定された処理動作に基づいて当該アクセス要求を操作する。
【００４６】
図２は本発明のロードバランサによってネットワークからのアクセス要求を規制する方法を示す。
【００４７】
ステップＳ１１において、前記ロードバランサによって前記ネットワークからのアクセス要求を受信するとともに、受信した当該アクセス要求を解析してＵＤＰメッセージにする。
【００４８】
ステップＳ１２において、当該ＵＤＰメッセージをアグリゲータに送信する。
【００４９】
その後、前記ロードバランサは前記ロードバランサにおける現在のホワイトリストおよび現在のブラックリストに基づいて受信した当該アクセス要求に対する処理動作を確定する。ここで、前記ブラックリストは、一部のアクセス要求に対する処理動作を指定している。
【００５０】
ステップＳ１３において、ロードバランサは当該アクセス要求がホワイトリストにマッチングしているか否かを判断する。マッチングしている場合には、ステップＳ１４に移行して当該アクセス要求を通過させるとともに、相応のバックエンドサーバに送信して次の処理を行う。マッチングしていない場合には、ステップＳ１５に移行する。
【００５１】
ステップＳ１５において、ロードバランサは当該アクセス要求がブラックリストにマッチングしているか否かを判断する。マッチングしていない場合には、ステップＳ１４に移行して当該アクセス要求を通過させるとともに、相応のバックエンドサーバに送信して次の処理を行う。マッチングしている場合には、ステップＳ１６に移行する。
【００５２】
ステップＳ１６において、ロードバランサはブラックリスト内のマッチングしている記録に指定された処理動作に基づいて当該アクセス要求を処理する。
【００５３】
本発明によれば、前記アグリゲータは、前記ロードバランサから送信されたＵＤＰメッセージを受信し、受信したＵＤＰメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、サマライザの要求に基づいて当該サマライザに統計データを送信する。前記統計データは予め定義された時間の長さに等しい長さを有する現在のタイムセグメントで累計された、前記予め定義されたデータフィールドの組み合わせを含むＵＤＰメッセージの数を含む。
【００５４】
前記サマライザは、予め決められた要求時間間隔に従って前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に基づいてサマライザにおける現在のブラックリストを前記ロードバランサに送信する。
【００５５】
前述したように、アグリゲータは、複数のアグリゲーションユニットを含んでよい。以下において、各アグリゲーションユニットが累計して統計データを生成するプロセスを詳しく説明する。
【００５６】
アグリゲーションユニットはロードバランサから受信したＵＤＰメッセージに基づいて特定のデータフィールドの組み合わせに対する統計データを生成する。本発明の一実施例によれば、アグリゲーションユニットは、前記ロードバランサから送信されたＵＤＰメッセージを受信するための受信部であって、前記ＵＤＰメッセージはロードバランサによりネットワークからのアクセス要求を解析して生成されたものである、受信部と、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて、受信したＵＤＰメッセージを累計して統計データを生成する演算部と、サマライザの要求に基づいて当該サマライザに現在の統計データを送信する送信部と、を備えている。
【００５７】
ネットワークからの各々のＨＴＴＰ要求については、ロードバランサ１０１によって解析してＵＤＰメッセージにするともに、アグリゲータ１０２のアグリゲーションユニット群における１つのアグリゲーションユニットに送信することしかできない。アグリゲーションユニットの各々は、予め定義された条件、例えばＵＤＰメッセージにおけるユーザ名userid、ＩＰアドレスipおよび統一資源識別子uriの特定のデータフィールドの組み合わせ（即ちこれら特定のデータフィールドに含まれる特定の値の組み合わせ）、および指定された時間の長さに基づいてアクセス要求の回数の累計を行う。
【００５８】
受信したＵＤＰメッセージに対し、アグリゲーションユニットは当該ＵＤＰメッセージからuserid、ip、uriなどのデータフィールドを抽出し、これらのデータフィールドの指定された組み合わせ（複数の組み合わせが存在してもよい）を累計のためのデータフィールドの組み合わせとするとともに、設定された時間の長さ（短いタイムセグメントと長いタイムセグメントとを含んでもよい）に基づいて要求回数の累計を行う。
【００５９】
これらのデータフィールドの組み合わせは、userid＋ip＋uri、userid＋uri、ip＋uriのうちの一種類または複数種類である。もちろん、これらのデータフィールドの組み合わせは、他のデータフィールドを含む組み合わせであってもよい。
【００６０】
累計終了後に、アグリゲーションユニットは、例えばＪＳＯＮＳデータフォーマットを用いたウェブページの形式等の統計データを生成する。サマライザ１０３からの要求を受信した場合に、アグリゲーションユニットは、統計データをサマライザ１０３に送信する。
【００６１】
アグリゲーションユニットによってトラフィック統計を計算する場合の詳細なプロセスは下記のとおりである。
累計プロセスを起動させた後に、予め決められたデータフィールドの組み合わせを有する１つ目のＵＤＰメッセージを受信した時に、相応の変数を初期化する。当該「１つ目のＵＤＰメッセージ」を受信した現在時刻を有効計算開始時刻とする。アクセスの回数を１とし、開始時間を当該現在時間とし、持続時間を０とする。
total_count = 1;
start_time = time (NULL);
lasting_length = 0；
【００６２】
後続の累計計算において、lasting_lengthは計算開始時刻start_timeから現在時刻current_timeまで持続した時間の長さである。
【００６３】
その後受信した、当該データフィールドの組み合わせを有する各々のメッセージに対し、当該メッセージの受信時間と予め設定された時間の長さとの関係に基づいてアクセスのカウントが３つの状況に分けられる。
【００６４】
（１）当該メッセージの受信時間がstart_time（有効計算開始時刻）から起算して１つ目の予め設定されたタイムセグメントに入る場合には、アクセス回数（total_count）が１だけ増加し、持続時間が現在の時間とstart_timeとの差となる（予め設定された時間の長さを６０秒とした場合、１時間を、予め設定された時間の長さを有する６０のタイムセグメントに分けることができる。当該「１つ目の予め設定されたタイムセグメント」は、有効計算開始時刻から起算した１つ目の６０秒の時間である）。
【００６５】
（２）当該メッセージの受信時間が前記１つ目の予め設定されたタイムセグメントに次ぐ２つ目の予め設定されたタイムセグメントに入る場合には、start_time（有効計算開始時刻）が更新される。ここで、当該メッセージの受信時間を前記予め設定された時間の長さに等しい長さを有する新しいタイムセグメントの終点とするとともに、当該新しいタイムセグメントのスタート時刻（即ち当該メッセージの受信時間から前記予め設定された時間の長さを減じた時刻）を有効計算開始時刻とする。この場合、パラメータtotal_count（即ちアクセス回数）は下記の方法で更新される。すなわち、先に前記１つ目のタイムセグメントにおけるＱＰＳを計算し、当該新しいタイムセグメントと１つ目のタイムセグメントとが重なる部分の時間の長さにＱＰＳを乗じ、さらに１だけ増加させる。さらに、持続時間を前記予め設定された時間の長さに更新する。
【００６６】
（３）当該メッセージの受信時間が２つ目のタイムセグメントの後に入る場合には、現在の受信時間を有効計算開始時刻に設定し、アクセス回数を１にリセットし、持続時間を０とする。このような状況は初期化と同じであり、そのとき、トラフィックが新たに計算される。
【００６７】
予め設定された時間の長さが６０秒の場合を例にすると、相応のアルゴリズム疑似コードは下記のとおりとなる。
diff = current_time - start_time;
if (diff < 60 * X) {#受信時間が１つ目のタイムセグメントに入る場合
total_count ++; lasting_length = diff;} else if (diff > 2 * 60 * X) {#受信時間が２つ目のタイムセグメントの後に入る場合
total_count = 1;
start_time = current_time;
lasting_length = 0;} else {#受信時間が２つ目のタイムセグメントに入る場合
start_time = current_time - 60 * x;
total_count = total_count-total_count/60/X * (diff - 60 * X) + 1;
lasting_length = 60 * X;}
【００６８】
予め設定された時間の長さは短いタイムセグメントと長いタイムセグメントの二種類に設定することができる。DOSファーストアタックを予防する場合は短いタイムセグメントに設置する。DOSファーストアタックの場合は、短時間内に大量の接続要求がサーバを攻撃し、これにより使用できる全ての資源が枯渇し、最終的にコンピュータが合法的なユーザの要求を処理できなくなってしまう。DOSスローアタックを予防する場合は長いタイムセグメントに設定する。
【００６９】
以下において、サマライザ１０３のとりまとめ処理およびブラックリストの生成を詳しく説明する。
【００７０】
サマライザ１０３は、特定の分類に基づいてすべてのアグリゲーションユニットからの、要求回数に関する統計データを読み取り、これらの統計データを取りまとめ、予め定義されたストラテジーに基づいてブラックリストを生成するとともに、ブラックリストを非同期的にロードバランサ１０１にローディングする。
【００７１】
サマライザ１０３の構成および具体的な作動原理は図３に示すとおりである。
【００７２】
サマライザ１０３は受信部１０３１、生成部１０３２、リスニング部１０３３、構成ファイル１０３６およびデータベース１０３７を含む。
【００７３】
本発明の実施例によれば、受信部１０３１は各々のアグリゲーションユニットのために１つの受信スレッドを構築することができる。受信スレッドは一定の時間（例えば１分間）毎に各々のアグリゲーションユニットにおけるウェブページの出力から異なるデータフィールドの組み合わせに対する要求回数の統計データを読み取る。当該統計データは例えばJSONSGフォーマットのデータである。
【００７４】
サマライザ１０３の生成部１０３２は各々のアグリゲーションユニットから受信した統計データを予め決められたデータフィールドの組み合わせに基づいて取りまとめる。
【００７５】
これらの予め決められたデータフィールドの組み合わせはuserid+ip+uri、ip+uri、userid+uriなどであってもよい。
【００７６】
異なるデータフィールドの組み合わせに対する要求回数はそれぞれ対応するhashmaps内に記憶される。HashmapsはハッシュテーブルのMapインターフェースの実現に基づくものであり、コンピュータのプログラミングでは、記憶、検索などの機能に用いられる。
【００７７】
あるデータフィールドの組み合わせを有する要求の回数が構成ファイル内の予め定義されたデータフィールドの組み合わせに関するブラックリストの閾値を超えた場合には、例えば0.5QPS（１秒あたりの問い合わせ率）、useridまたはipがブラックリストに加えられて現在のブラックリストを生成する。
【００７８】
一実施例によれば、生成部１０３２における記憶スレッドはhashmaps内の取りまとめられたデータをデータベース１０３７に格納する。本発明の実施例によれば、記憶スレッドと受信スレッドの間で共有のhashmapsをロックしないために、ダブルhashmapsのメカニズムを採用する。
【００７９】
また、システムの監視端末２００はＨＴＴＰプロトコルによりデータベース１０３７のデータを直接取得することができる。即ち、当該データはサマライザ１０３を介さずにJSONSフォーマットで直接導き出すことができる。
【００８０】
サマライザ１０３のリスニング部１０３３はロードバランサ１０１にブラックリストを提供するために用いられる。ロードバランサ１０１が要求した場合に、リスニング部１０３３は現在のブラックリストを取得するとともに、当該現在のブラックリストをホワイトリストと共にロードバランサ１０１に送信する。
【００８１】
本発明の一実施例によれば、サマライザ１０３はメインサーバとサブサーバの２つのサーバが同時に作動するモードを採用することができる。メインサーバは通常の稼働機として作動でき、サブサーバはデータのバックアップ機として作動できる。メインサーバが故障したときに、サブサーバは自動的にメインサーバの全ての業務を引き継ぎ、それによってシステムの信頼性を高めることができる。
【００８２】
図面と特定の実施例を参照しながら本発明を説明した。しかし、図面と明細書における実施例は本発明の実例にすぎず、本発明を限定するためのものではない。本発明の範囲は特許請求の範囲によって限定される。
【図１】
2019134484.tif 000003
【図２】
2019134484.tif 000004
【図３】
2019134484.tif 000005
【手続補正書】
【提出日】令和1年5月10日(2019.5.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ロードバランサ、アグリゲータおよびサマライザを備えたアクセス要求を規制するシステムにおいて、
前記ロードバランサは、ネットワークからの各々のアクセス要求を受信し、受信した当該アクセス要求を解析してＵＤＰメッセージにするとともに、当該ＵＤＰメッセージを前記アグリゲータに送信するように配置され、
前記アグリゲータは、前記ロードバランサから受信した複数のＵＤＰメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、前記サマライザからの要求に応答して当該サマライザに累計された統計データを送信するように配置され、
前記サマライザは、予め決められた要求時間間隔に基づいて前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に応答して前記ブラックリストを前記ロードバランサに送信
するように配置されており、前記ブラックリストは、１つまたは複数の特定のアクセス要
求のうちの各々に対して実行されるべき処理動作を指定しており、かつ
前記ロードバランサは、さらに現在のブラックリストに基づいて、受信した各アクセス要求に対する処理動作を確定するように配置されており、
前記統計データは前記予め定義された時間の長さ以内に累計された、前記予め定義されたデータフィールドの組み合わせを含むＵＤＰメッセージの数を含み、および
前記アグリゲータは複数のアグリゲーションユニットを含み、前記アグリゲーションユニットは前記ＵＤＰメッセージからデータフィールドを抽出し、且つ該データフィールドの指定された組み合わせを累計のための前記予め定義されたデータフィールドの組み合わせとする、
アクセス要求を規制するシステム。
【請求項２】
前記アグリゲータは、互いに独立して稼働する複数のアグリゲーションユニットを含み、前記ロードバランサは、各ＵＤＰメッセージを前記複数のアグリゲーションユニットのうちの１つのアグリゲーションユニットに送信し、前記複数のアグリゲーションユニットのうちの各アグリゲーションユニットはそれぞれ前記累計を行い、
前記サマライザは、前記複数のアグリゲーションユニットからそれぞれ統計データを受信するとともに、取りまとめられた統計データを生成し、また、
前記ブラックリストは、前記取りまとめられた統計データおよび前記予め定義されたルールに基づいて生成される、請求項１に記載のシステム。
【請求項３】
前記ロードバランサは予め定義されたホワイトリストをさらに含み、前記ホワイトリストは通過させるべきアクセス要求に関する１つまたは複数の記録を含み、また、
前記ロードバランサは受信した各々のアクセス要求に対し、
当該アクセス要求が前記ホワイトリストにおける１つの記録にマッチングしている、または前記ブラックリストにおけるいずれの記録にもマッチングしていない場合には、当該
アクセス要求を通過させる操作と、
当該アクセス要求が前記ホワイトリストにおけるいずれの記録にもマッチングせず、かつ前記ブラックリストにおける１つの記録にマッチングしている場合には、前記ブラックリスト内のマッチングしている記録に指定された処理動作に基づいて当該アクセス要求を操作する操作とに基づいて、当該アクセス要求に対する処理動作を確定する、請求項１に記載のシステム。
【請求項４】
前記ロードバランサにおける前記予め定義されたホワイトリストは前記ブラックリストと共に前記サマライザから得られる、請求項３に記載のシステム。
【請求項５】
前記ブラックリストに定められた前記処理動作は遮断、リダイレクトおよび遅延のうちの１つを含む、請求項１に記載のシステム。
【請求項６】
アクセス要求を規制する方法であって、
ロードバランサによってネットワークからの各々のアクセス要求を受信し、受信したアクセス要求を解析してＵＤＰメッセージにするとともに、当該ＵＤＰメッセージをアグリゲータに送信するステップと、
前記ロードバランサが現在のブラックリストに基づいて、受信した当該アクセス要求に対する処理動作を確定するステップと、を含み、前記ブラックリストは１つまたは複数の特定のアクセス要求のうちの各々に対して実行されるべき処理動作を指定している方法において、
前記アグリゲータは、前記ロードバランサから送信されたＵＤＰメッセージを受信し、受信した複数のＵＤＰメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、サマライザからの要求に応答して累計された統計データを当該サマライザに送信し、
前記サマライザは、予め決められた要求時間間隔に基づいて前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に応答して前記ブラックリストを前記ロードバランサに送信し、
前記統計データは前記予め定義された時間の長さ以内に累計された、前記予め定義されたデータフィールドの組み合わせを含むＵＤＰメッセージの数を含み、および
前記アグリゲータは複数のアグリゲーションユニットを含み、前記アグリゲーションユニットは前記ＵＤＰメッセージからデータフィールドを抽出し、且つ該データフィールドの指定された組み合わせを累計のための前記予め定義されたデータフィールドの組み合わせとする、方法。
【請求項７】
前記アグリゲータは、互いに独立して稼働する複数のアグリゲーションユニットを含み、前記ロードバランサは、各ＵＤＰメッセージを前記複数のアグリゲーションユニットのうちの１つのアグリゲーションユニットに送信し、前記複数のアグリゲーションユニットのうちの各アグリゲーションユニットはそれぞれ前記累計を行い、
前記サマライザは、前記複数のアグリゲーションユニットからそれぞれ統計データを受信するとともに、取りまとめられた統計データを生成し、また、
前記ブラックリストは、前記取りまとめられた統計データおよび前記予め定義されたルールに基づいて生成される、請求項６に記載の方法。
【請求項８】
前記ロードバランサは予め定義されたホワイトリストをさらに含み、前記ホワイトリストは通過させるべきアクセス要求に関する１つまたは複数の記録を含み、また、
前記ロードバランサは受信された各々のアクセス要求に対し、
当該アクセス要求が前記ホワイトリストにおける１つの記録にマッチングしている、または前記ブラックリストにおけるいずれの記録にもマッチングしていない場合には、当該アクセス要求を通過さる操作と、
当該アクセス要求が前記ホワイトリストにおけるいずれの記録にもマッチングせず、かつ前記ブラックリストにおける１つの記録にマッチングしている場合には、前記ブラックリスト内のマッチングしている記録に指定された処理動作に基づいて当該アクセス要求を操作する操作とに基づいて当該アクセス要求に対する処理動作を確定する、請求項６に記載の方法。
【請求項９】
前記ロードバランサにおける前記予め定義されたホワイトリストは前記ブラックリストと共に前記サマライザから得られる、請求項８に記載の方法。
【請求項１０】
前記ブラックリストに定められた前記処理動作は遮断、リダイレクトおよび遅延のうちの１つを含む、請求項６に記載の方法。