(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2019-134484(P2019-134484A)
(43)【公開日】2019年8月8日
(54)【発明の名称】アクセス要求を規制するシステムおよび方法
(51)【国際特許分類】
H04L 12/66 20060101AFI20190712BHJP
【FI】
H04L12/66 B
【審査請求】有
【請求項の数】10
【出願形態】OL
【全頁数】17
(21)【出願番号】特願2019-75800(P2019-75800)
(22)【出願日】2019年4月11日
(62)【分割の表示】特願2017-554634(P2017-554634)の分割
【原出願日】2016年1月8日
(31)【優先権主張番号】201510011598.9
(32)【優先日】2015年1月9日
(33)【優先権主張国】CN
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
(71)【出願人】
【識別番号】517156872
【氏名又は名称】北京京東尚科信息技術有限公司
【氏名又は名称原語表記】Beijing Jingdong Shangke Information Technology Co., Ltd.
(71)【出願人】
【識別番号】517241916
【氏名又は名称】北京京東世紀貿易有限公司
【氏名又は名称原語表記】Beijing Jingdong Century Trading Co., Ltd.
(74)【代理人】
【識別番号】110002000
【氏名又は名称】特許業務法人栄光特許事務所
(72)【発明者】
【氏名】ウォン ジー
(72)【発明者】
【氏名】シャオ スーシン
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030GA15
5K030HD03
5K030JA10
5K030LC13
5K030MA04
5K030MB09
5K030MC08
(57)【要約】 (修正有)
【課題】ネットワークからのアクセス要求を規制するシステム及び方法を提供する。
【解決手段】システム100において、ロードバランサ101はアクセス要求を解析してUDPメッセージを生成し、アグリゲータ102に送る。アグリゲータは、予め定義されたデータフィールドの組み合わせ及び予め定義された時間の長さを基に、UDPメッセージを累計して統計データを生成し、サマライザ103からの要求に応答してサマライザに送る。サマライザは、予め決められた要求時間間隔に基づいてアグリゲータに統計データを要求し、アグリゲータから受けた統計データ及び予め定義されたルールに基づいてアクセス要求のブラックリストを生成し、ロードバランサからの要求に応答してロードバランサに送る。ロードバランサは、現在のブラックリストに基づいて、アクセス要求に対する処理動作を確定する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ロードバランサ、アグリゲータおよびサマライザを備えたアクセス要求を規制するシステムにおいて、
前記ロードバランサは、ネットワークからの各々のアクセス要求を受信し、受信した当該アクセス要求を解析してUDPメッセージにするとともに、当該UDPメッセージを前記アグリゲータに送信するように配置され、
前記アグリゲータは、前記ロードバランサから受信した複数のUDPメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、前記サマライザからの要求に応答して当該サマライザに累計された統計データを送信するように配置され、
前記サマライザは、予め決められた要求時間間隔に基づいて前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に応答して前記ブラックリストを前記ロードバランサに送信するように配置されており、前記ブラックリストは、1つまたは複数の特定のアクセス要求のうちの各々に対して実行されるべき処理動作を指定しており、かつ
前記ロードバランサは、さらに現在のブラックリストに基づいて、受信した各アクセス要求に対する処理動作を確定するように配置されており、
前記統計データは前記予め定義された時間の長さ以内に累計された、前記予め定義されたデータフィールドの組み合わせを含むUDPメッセージの数を含む、
アクセス要求を規制するシステム。
【請求項2】
前記アグリゲータは、互いに独立して稼働する複数のアグリゲーションユニットを含み、前記ロードバランサは、各UDPメッセージを前記複数のアグリゲーションユニットのうちの1つのアグリゲーションユニットに送信し、前記複数のアグリゲーションユニットのうちの各アグリゲーションユニットはそれぞれ前記累計を行い、
前記サマライザは、前記複数のアグリゲーションユニットからそれぞれ統計データを受信するとともに、取りまとめられた統計データを生成し、また、
前記ブラックリストは、前記取りまとめられた統計データおよび前記予め定義されたルールに基づいて生成される、請求項1に記載のシステム。
【請求項3】
前記ロードバランサは予め定義されたホワイトリストをさらに含み、前記ホワイトリストは通過させるべきアクセス要求に関する1つまたは複数の記録を含み、また、
前記ロードバランサは受信した各々のアクセス要求に対し、
当該アクセス要求が前記ホワイトリストにおける1つの記録にマッチングしている、または前記ブラックリストにおけるいずれの記録にもマッチングしていない場合には、当該アクセス要求を通過させる操作と、
当該アクセス要求が前記ホワイトリストにおけるいずれの記録にもマッチングせず、かつ前記ブラックリストにおける1つの記録にマッチングしている場合には、前記ブラックリスト内のマッチングしている記録に指定された処理動作に基づいて当該アクセス要求を操作する操作とに基づいて、当該アクセス要求に対する処理動作を確定する、請求項1に記載のシステム。
【請求項4】
前記ロードバランサにおける前記予め定義されたホワイトリストは前記ブラックリストと共に前記サマライザから得られる、請求項3に記載のシステム。
【請求項5】
前記ブラックリストに定められた前記処理動作は遮断、リダイレクトおよび遅延のうちの1つを含む、請求項1に記載のシステム。
【請求項6】
アクセス要求を規制する方法であって、
ロードバランサによってネットワークからの各々のアクセス要求を受信し、受信したアクセス要求を解析してUDPメッセージにするとともに、当該UDPメッセージをアグリゲータに送信するステップと、
前記ロードバランサが現在のブラックリストに基づいて、受信した当該アクセス要求に対する処理動作を確定するステップと、を含み、前記ブラックリストは1つまたは複数の特定のアクセス要求のうちの各々に対して実行されるべき処理動作を指定している方法において、
前記アグリゲータは、前記ロードバランサから送信されたUDPメッセージを受信し、受信した複数のUDPメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、サマライザからの要求に応答して累計された統計データを当該サマライザに送信し、
前記サマライザは、予め決められた要求時間間隔に基づいて前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に応答して前記ブラックリストを前記ロードバランサに送信し、
前記統計データは前記予め定義された時間の長さ以内に累計された、前記予め定義されたデータフィールドの組み合わせを含むUDPメッセージの数を含む、方法。
【請求項7】
前記アグリゲータは、互いに独立して稼働する複数のアグリゲーションユニットを含み、前記ロードバランサは、各UDPメッセージを前記複数のアグリゲーションユニットのうちの1つのアグリゲーションユニットに送信し、前記複数のアグリゲーションユニットのうちの各アグリゲーションユニットはそれぞれ前記累計を行い、
前記サマライザは、前記複数のアグリゲーションユニットからそれぞれ統計データを受信するとともに、取りまとめられた統計データを生成し、また、
前記ブラックリストは、前記取りまとめられた統計データおよび前記予め定義されたルールに基づいて生成される、請求項6に記載の方法。
【請求項8】
前記ロードバランサは予め定義されたホワイトリストをさらに含み、前記ホワイトリストは通過させるべきアクセス要求に関する1つまたは複数の記録を含み、また、
前記ロードバランサは受信された各々のアクセス要求に対し、
当該アクセス要求が前記ホワイトリストにおける1つの記録にマッチングしている、または前記ブラックリストにおけるいずれの記録にもマッチングしていない場合には、当該アクセス要求を通過さる操作と、
当該アクセス要求が前記ホワイトリストにおけるいずれの記録にもマッチングせず、かつ前記ブラックリストにおける1つの記録にマッチングしている場合には、前記ブラックリスト内のマッチングしている記録に指定された処理動作に基づいて当該アクセス要求を操作する操作とに基づいて当該アクセス要求に対する処理動作を確定する、請求項6に記載の方法。
【請求項9】
前記ロードバランサにおける前記予め定義されたホワイトリストは前記ブラックリストと共に前記サマライザから得られる、請求項8に記載の方法。
【請求項10】
前記ブラックリストに定められた前記処理動作は遮断、リダイレクトおよび遅延のうちの1つを含む、請求項6に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はネットワークからのアクセス要求を規制するシステムおよびそれに相応する方法に係わる。
【背景技術】
【0002】
従来のロードバランサ(load balancer)は、例えばlinuxにおけるHaProxyの構成を採用し、ネットワークからの各HTTP要求に含まれるcookies又はURL解釈を読み取ると共に、それらの情報に基づいてヘッダを書き換え、それと同時にHTTP要求をバックエンドサーバ群に送信し、これによってバックエンドサーバ群における各サーバが占用するトラフィック、資源はバランス状態に達する。しかし、従来のロードバランサは、ネットワークのトラフィックに対して自動的にフィルタリングチェックを行うことができず、そのため、アタックトラフィックを限定したり廃棄したりすることができない。
【0003】
従来の技術として、トラフィック洗浄技術に基づきTCPパケットを検出することによってICMP/TCP/UDPフラッディング攻撃に対する防護を実現する方法が開示されており、これはTCP/UDPパケットを再送することによって実現される。この従来の技術はTCP/UDP層のパケットのみに有効であり、暗号解読を必要とする開放型システム間相互接続基準参照モデル(OSI)の第7層であるアプリケーション層のHTTPフラッディング攻撃を予防することができない。
【0004】
一つのアイデアとしてURLに対するアクセスを分析し、単位時間あたりのアクセス量、例えばQPSに基づいてアクセス要求を規制する方法である。大規模サイトのURIに対するアクセスの分析は通常大量のメモリを要する。一般に、データフィールドIPアドレス、ユーザ標識(USERID)、統一資源位置指定子(URL)などいかなる組み合わせに対しても、当該組み合わせに関連付けられた各々のアクセスのタイムスタンプ(time stamp)を記録する必要がある。QPSを計算するために、各タイムポイントのフィルタリングまたはソーティングをしなければならず、時間的に無駄が多くかつ大量のメモリを費やしてしまう。
【0005】
従来の技術においては、QPSを計算するために、各タイムポイントのフィルタリングまたはソーティングをしなければならず、時間的に無駄が多くかつ大量のメモリを費やしてしまう。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、上記課題を少なくとも部分的に解決するシステムおよび方法を提供することを目的とする。本発明は、とくにネットワークのDOS攻撃(サービス拒否攻撃)およびDDOS攻撃(分散型サービス拒否攻撃)を解決するのに好適である。当該技術は、とくにHTTPフラッディング(http flooding)攻撃に対する防備に好適である。本発明では、ユーザのトラフィックに対する累計および分析によってパターンマッチングに合致する攻撃トラフィックを見つけ出すとともにこれを規制または破棄し、これによってバックエンドサーバを保護する。
【課題を解決するための手段】
【0007】
本発明の1つの態様によれば、一種一種のアクセス要求を規制するシステムを提供する。当該システムはロードバランサ、アグリゲータおよびサマライザを備えている。前記ロードバランサはネットワークからの各々のアクセス要求を受信し、受信した当該アクセス要求を解析してUDPメッセージにするとともに、当該UDPメッセージを前記アグリゲータに送信するように配置されている。前記アグリゲータは、前記ロードバランサから受信した複数のUDPメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、前記サマライザからの要求に応答して当該サマライザに累計した統計データを送信するように配置されている。前記サマライザは、予め決められた要求時間間隔に基づいて前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に応答して前記ブラックリストを前記ロードバランサに送信するように配置されている。ここで、前記ブラックリストは、1つまたは複数の特定のアクセス要求のうちの各々に対して実行されるべき処理動作を指定している。前記ロードバランサは、さらに現在のブラックリストに基づいて受信した各アクセス要求に対する処理動作を確定するように配置されている。
【0008】
本発明の他の態様によれば、アクセス要求を規制するコンピュータの実現方法を提供する。前記方法は、ロードバランサによってネットワークからの各々のアクセス要求を受信し、受信したアクセス要求を解析してUDPメッセージにするとともに、当該UDPメッセージをアグリゲータに送信するステップと、前記ロードバランサが現在のブラックリストに基づいて受信した当該アクセス要求に対する処理動作を確定するステップと、を含む。ここで、前記ブラックリストは、1つまたは複数の特定のアクセス要求のうちの各々に対して実行されるべき処理動作を指定する。前記アグリゲータは、前記ロードバランサによって送信されたUDPメッセージを受信し、受信した複数のUDPメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、サマライザからの要求に応答して累計された統計データを当該サマライザに送信する。前記サマライザは、予め決められた要求時間間隔に基づいて前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に応答して前記ブラックリストを前記ロードバランサに送信する。
【0009】
本発明によれば、前記統計データは前記予め定義された時間の長さ以内で累計される、前記予め定義されたデータフィールドの組み合わせを含むUDPメッセージの数を含む。
【0010】
本発明によれば、前記ネットワークはインターネットであり、前記アクセス要求はインターネットからのHTTP要求である。
【0011】
本発明によれば、前記アグリゲータは、互いに独立して運転する複数のアグリゲーションユニットを含み、前記ロードバランサは、各UDPメッセージを前記複数のアグリゲーションユニットのうちの1つに送信し、前記複数のアグリゲーションユニットの各アグリゲーションユニットはそれぞれ前記累計を行う。前記サマライザは、前記複数のアグリゲーションユニットからそれぞれ統計データを受信し、取りまとめられた統計データを生成する。また、前記ブラックリストは、前記取りまとめられた統計データおよび前記予め定義されたルールに基づいて生成される。
【0012】
本発明によれば、前記ロードバランサは予め定義されたホワイトリストをさらに含む。前記ホワイトリストは通過させるべきアクセス要求に関する1つまたは複数の記録を含む。また、前記ロードバランサは受信した各々のアクセス要求について、当該アクセス要求が前記ホワイトリストにおける1つの記録にマッチングし、または前記ブラックリストにおけるいずれの記録にもマッチングしない場合、当該アクセス要求を通過させるように操作して当該アクセス要求に対する処理動作を確定する。当該アクセス要求が前記ホワイトリストにおけるいずれの記録にもマッチングせず、かつ前記ブラックリストにおける1つの記録にマッチングした場合に、ブラックリストのマッチングした記録に指定された処理動作に基づいて当該アクセス要求を操作する。また、前記ロードバランサにおける前記予め定義されたホワイトリストは前記ブラックリストと共に前記サマライザから得ることができる。
【0013】
本発明のシステムによれば、前記ブラックリストに定められた前記処理動作は遮断、リダイレクトおよび遅延のうちの1つを含む。
【図面の簡単な説明】
【0014】
【
図1】本発明の、アクセス要求を規制するためのシステムの構造図である。
【
図2】本発明の、ロードバランサが受信したアクセス要求を処理するタイムシーケンス図である。
【
図3】本発明の、サマライザの実施例の構成に係わるブロック図である。
【発明を実施するための形態】
【0015】
以下において、図面を参照しながら本発明の実施例を詳しく説明する。
本発明は、統計データを用いてネットワークからのアクセス要求を規制するシステムおよび方法を提供した。
【0016】
1つのアクセス要求、例えばHTTP要求は少なくとも、当該ユーザがアクセスしようとする目的地ドメイン名(host)、ユーザが要求した統一資源識別子(uri)、ユーザ名(uid)、クライアントIPアドレス(cip)などのデータフィールド(data fields)を含む。
【0017】
本発明によれば、本発明はネットワークからのアクセス要求を規制するシステムを提供する。当該システムはロードバランサ、アグリゲータおよびサマライザを備えている。
【0018】
前記ロードバランサは、前記ネットワークからのアクセス要求を受信し、受信した各アクセス要求を解析してUDPメッセージにするとともに、当該UDPメッセージをアグリゲータに送信する。
【0019】
当該アグリゲータは、受信した複数のUDPメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、サマライザからの要求に応答して当該サマライザに統計データを送信する。前記統計データは現在の予め定義された時間の長さ以内で累計された、前記予め定義されたデータフィールドの組み合わせを含むUDPメッセージの数を含む。
【0020】
前記サマライザは、予め決められた要求時間間隔に基づいてアクセス要求に関する統計データを前記アグリゲータに要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に基づいて当該ブラックリストを前記ロードバランサに送信する。前記ブラックリストは、1つまたは複数の特定のアクセス要求に対する処理動作を指定している。
【0021】
前記ロードバランサは現在のブラックリストに基づいて、受信した各アクセス要求に対する処理動作を確定する。
【0022】
以下において、具体的な実施例を参照しながら本発明の実施例におけるシステムを詳しく説明する。なお、具体的な実施例は本発明の主旨および具体的な実現方法を理解するためのものであり、本発明は特定の実施例に限定されない。
【0023】
図1は本発明の実施例におけるシステム100を示す。当該システム100はロードバランサ101、アグリゲータ102およびサマライザ103の3つのモジュールを含む。
【0024】
ロードバランサ101は、ネットワークからのアクセス要求、例えばインターネットからのHTTP要求を受信し、受信した各アクセス要求を解析してUDPメッセージにするとともに、当該UDPメッセージをアグリゲータ102に送信する。
【0025】
UDPメッセージを処理するために使用される資源は少なく、かつ処理速度が速い。そのため、ロードバランサのオーバーヘッドを大幅に減らすことができる。また、UDPプロトコルは接続型プロトコルではないため、一定のメッセージロスが発生する。しかし、このようなロスは許容誤差の範囲内にあり、システムの頑健性(robustness)に与える影響は無視できる。
【0026】
アグリゲータ102は複数のアグリゲーションユニットを含んでもよく、複数のアグリゲーションユニットは独立して水平に拡張することができる。即ち、各アグリゲーションユニットは独立して配置されて稼動しているため、相互間の影響および依存性を有していない。現在のアグリゲータの処理能力がニーズを満たすことができなければ、簡単にサーバ資源を増やして新しいアグリゲーションユニットを構成することができる。このように、ビッグトラフィックのニーズを満たすことができる。
【0027】
ロードバランサ101は各々のUDPメッセージを選択されたアグリゲーションユニットに送信する。各々のアグリゲーションユニットは受信したUDPメッセージをそれぞれ累計して統計データを生成する。
【0028】
本発明の一実施例によれば、ロードバランサ101はUDPメッセージを1つ1つ順次複数のアグリゲーションユニットに送信する。例えば、1つ目のUDPメッセージを1つ目のアグリゲーションユニットに送信し、2つ目のUDPメッセージを2つ目のアグリゲーションユニットに送信するというように、生成されたUDPメッセージを順次各々のアグリゲーションユニットに送信する。最後のアグリゲーションユニットにUDPメッセージを送信した後に、再び1つ目のアグリゲーションユニットにUDPメッセージを送信する。
【0029】
各々のアグリゲーションユニットは予め定義されたルールまたは条件、例えば予め定義されたデータフィールドの組み合わせ、予め定義された時間間隔などに基づいて、受信したUDPメッセージを分析するとともに累計する。UDPメッセージの各々がユーザのHTTPアクセス要求の情報、例えばユーザがアクセスしようとする目的地ドメイン名(host)、ユーザが要求した統一資源識別子(uri)、ユーザ名(uid)、クライアントIPアドレス(cip)などを含む。アグリゲーションユニットは同一の目的地ドメイン名(同じhost)、同一のソース(同じuid 、同じcip )を有するアクセス要求の数をカウントするとともに、当該ソースからのアクセス要求の数を取得する。
【0030】
決められたタイムセグメント(例えば直前の60秒または直前の5分間)内に受信した、あるソースからのアクセス要求の数に基づいて、当該ソースからの単位時間あたりのアクセス要求の数を得ることができる。例えば、当該決められたタイムセグメント内に受信した当該ソースからのアクセス要求の合計数を当該タイムセグメントの時間の長さで除することによって当該ソースの1秒あたりの問い合わせ率(QPS)の値を得ることができる。
【0031】
その後、アグリゲーションユニットはサマライザ103の要求に基づいて当該アグリゲーションユニットで生成されたアクセス要求に関する最新の統計データを当該サマライザ103に送信する。
【0032】
サマライザ103は予め決められた時間、例えば10秒間ごとにアグリゲータまたはアグリゲータにおける各々のアグリゲーションユニットに「統計データ」を要求することができる。このような要求は例えばHTTP形式であってもよい。
【0033】
アグリゲータおける各々のアグリゲーションユニットはサマライザ103からの要求を受信した後に、当該アグリゲーションユニットで生成された、アクセスに関する最新の統計データから応答メッセージ、例えばHTTP形式の応答メッセージを構成するとともに、最新の統計データを含む応答メッセージをサマライザ103に送信する。
【0034】
サマライザ103は、各アグリゲーションユニットからの応答メッセージを受信した後に、特定の分類に基づいてそれらのメッセージに含まれる統計データを処理し、さらに取りまとめられた統計データを生成するとともに、予め定義されたルールに基づいてブラックリストを生成する。
【0035】
本発明の一実施例によれば、ブラックリストにおける1つのブラックリスト記録は目的地ドメイン名(host)、ソースユーザ名(uid)、ソースクライアントIP(cip)および処理動作(action)の4つのパラメータを含むことができる。
【0036】
当該ブラックリスト記録の意味は下記のように理解することができる。即ち、当該目的地ドメイン名(host)に送信された要求に対し、当該要求に含まれるユーザ名とクライアントIPが当該記録における対応値(ソースユーザ名、ソースクライアントIP)に合致していれば、当該記録内に指定された処理動作を実行する。当該処理動作は、例えば当該要求に対する遮断、リダイレクトまたは遅延であってもよい。
【0037】
アクセス要求に含まれる目的地ドメイン名、ユーザ名、クライアントIPアドレスがブラックリストにおける1つの記録における目的地ドメイン名、ユーザ名、クライアントIPアドレスと完全に一致している場合には、当該アクセス要求が当該ブラックリストにマッチングしているとする。
【0038】
具体的な目的地ドメイン名に対する、単位時間あたりの要求数の閾値および当該閾値を超えた場合の相応する処理動作をサマライザ103の構成ファイル1036に設定する。
【0039】
サマライザ103は、同じデータフィールドの組み合わせを有するアクセス要求の取りまとめられた統計データに基づいて判断する。このようなアクセス要求の単位時間あたりのアクセス量(QPS)の値が構成ファイル1036に設定されたその目的地ドメイン名に対応する単位時間あたりのアクセス量の閾値を超えた場合には、相応するブラックリスト記録を生成する。当該記録は当該要求の目的地ドメイン名、ユーザ名、クライアントIPおよび相応の処理動作を含む。生成されたブラックリスト記録はブラックリストに加えられて現在のブラックリストを生成する。
【0040】
また、サマライザ103でホワイトリストを維持することもできる。当該ホワイトリストはブラックリストと同じ構造を有してもよいが、当該ホワイトリストは優先処理ストラテジーを実現することができる。即ち、ホワイトリストにマッチングするアクセス要求(即ち、当該アクセス要求が当該ホワイトリストにおける1つのホワイトリスト記録にマッチングしている)の場合には、当該アクセス要求をそのまま通過させる。即ち、当該アクセス要求をその目的地バックエンドサーバ(host)に誘導するとともに、当該バックエンドサーバが当該アクセス要求に直接応答する。
【0041】
サマライザ103は現在のブラックリストと予め定義されたホワイトリストとを非同期的にロードバランサ101にローディングすることができる。本発明の一実施例によれば、サマライザ103のリスニングスレッドによってロードバランサ101にブラックリストを提供することができる。ロードバランサ101がサマライザ103に要求した場合に、リスニングスレッドはサマライザ103における現在のブラックリストを取得するとともに、当該ブラックリストをホワイトリストと共にロードバランサ101に送信する。
【0042】
ロードバランサ101は、ブラックリストにおける各々の記録に指定された「処理動作」の実際の実行者である。
【0043】
もちろん、ホワイトリストは必ずしもサマライザ103に維持する必要はなく、例えばロードバランサ101に保持してもよい。
【0044】
アクセス要求がホワイトリストにマッチングしていれば、ロードバランサ101の処理ルールはホワイトリスト優先なので、当該アクセス要求がブラックリストにマッチングしているか否かを問わず、ロードバランサ101は当該アクセス要求を通過させる。当該アクセス要求がホワイトリストにマッチングしていないがブラックリストにマッチングしている場合には、ロードバランサ101はブラックリスト内のマッチングしている具体的な記録に基づいて相応の処理動作を実行する。当該アクセス要求がホワイトリストとブラックリストのいずれにもマッチングしていない場合には、当該アクセス要求を通過させる。
【0045】
本発明によれば、ロードバランサ101はブラックリストおよびホワイトリストに基づいてネットワークからのアクセス要求の各々に対して下記の処理を行う。
当該アクセス要求がホワイトリストにマッチングしている、またはブラックリストにマッチングしていない場合には、当該アクセス要求を通過させるとともに、相応のUDPメッセージを構築してアグリゲータに送信する(このように通過させたトラフィックこそが実際に相応のバックエンドサーバに送信されたトラフィックなので、アグリゲータはこのようなアクセス要求の「統計データ」を継続して計算する必要がある)。
当該アクセス要求がホワイトリストにマッチングしていないがブラックリストにマッチングしている場合には、ブラックリスト内のマッチングしている記録に指定された処理動作に基づいて当該アクセス要求を操作する。
【0046】
図2は本発明のロードバランサによってネットワークからのアクセス要求を規制する方法を示す。
【0047】
ステップS11において、前記ロードバランサによって前記ネットワークからのアクセス要求を受信するとともに、受信した当該アクセス要求を解析してUDPメッセージにする。
【0048】
ステップS12において、当該UDPメッセージをアグリゲータに送信する。
【0049】
その後、前記ロードバランサは前記ロードバランサにおける現在のホワイトリストおよび現在のブラックリストに基づいて受信した当該アクセス要求に対する処理動作を確定する。ここで、前記ブラックリストは、一部のアクセス要求に対する処理動作を指定している。
【0050】
ステップS13において、ロードバランサは当該アクセス要求がホワイトリストにマッチングしているか否かを判断する。マッチングしている場合には、ステップS14に移行して当該アクセス要求を通過させるとともに、相応のバックエンドサーバに送信して次の処理を行う。マッチングしていない場合には、ステップS15に移行する。
【0051】
ステップS15において、ロードバランサは当該アクセス要求がブラックリストにマッチングしているか否かを判断する。マッチングしていない場合には、ステップS14に移行して当該アクセス要求を通過させるとともに、相応のバックエンドサーバに送信して次の処理を行う。マッチングしている場合には、ステップS16に移行する。
【0052】
ステップS16において、ロードバランサはブラックリスト内のマッチングしている記録に指定された処理動作に基づいて当該アクセス要求を処理する。
【0053】
本発明によれば、前記アグリゲータは、前記ロードバランサから送信されたUDPメッセージを受信し、受信したUDPメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、サマライザの要求に基づいて当該サマライザに統計データを送信する。前記統計データは予め定義された時間の長さに等しい長さを有する現在のタイムセグメントで累計された、前記予め定義されたデータフィールドの組み合わせを含むUDPメッセージの数を含む。
【0054】
前記サマライザは、予め決められた要求時間間隔に従って前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に基づいてサマライザにおける現在のブラックリストを前記ロードバランサに送信する。
【0055】
前述したように、アグリゲータは、複数のアグリゲーションユニットを含んでよい。以下において、各アグリゲーションユニットが累計して統計データを生成するプロセスを詳しく説明する。
【0056】
アグリゲーションユニットはロードバランサから受信したUDPメッセージに基づいて特定のデータフィールドの組み合わせに対する統計データを生成する。本発明の一実施例によれば、アグリゲーションユニットは、前記ロードバランサから送信されたUDPメッセージを受信するための受信部であって、前記UDPメッセージはロードバランサによりネットワークからのアクセス要求を解析して生成されたものである、受信部と、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて、受信したUDPメッセージを累計して統計データを生成する演算部と、サマライザの要求に基づいて当該サマライザに現在の統計データを送信する送信部と、を備えている。
【0057】
ネットワークからの各々のHTTP要求については、ロードバランサ101によって解析してUDPメッセージにするともに、アグリゲータ102のアグリゲーションユニット群における1つのアグリゲーションユニットに送信することしかできない。アグリゲーションユニットの各々は、予め定義された条件、例えばUDPメッセージにおけるユーザ名userid、IPアドレスipおよび統一資源識別子uriの特定のデータフィールドの組み合わせ(即ちこれら特定のデータフィールドに含まれる特定の値の組み合わせ)、および指定された時間の長さに基づいてアクセス要求の回数の累計を行う。
【0058】
受信したUDPメッセージに対し、アグリゲーションユニットは当該UDPメッセージからuserid、ip、uriなどのデータフィールドを抽出し、これらのデータフィールドの指定された組み合わせ(複数の組み合わせが存在してもよい)を累計のためのデータフィールドの組み合わせとするとともに、設定された時間の長さ(短いタイムセグメントと長いタイムセグメントとを含んでもよい)に基づいて要求回数の累計を行う。
【0059】
これらのデータフィールドの組み合わせは、userid+ip+uri、userid+uri、ip+uriのうちの一種類または複数種類である。もちろん、これらのデータフィールドの組み合わせは、他のデータフィールドを含む組み合わせであってもよい。
【0060】
累計終了後に、アグリゲーションユニットは、例えばJSONSデータフォーマットを用いたウェブページの形式等の統計データを生成する。サマライザ103からの要求を受信した場合に、アグリゲーションユニットは、統計データをサマライザ103に送信する。
【0061】
アグリゲーションユニットによってトラフィック統計を計算する場合の詳細なプロセスは下記のとおりである。
累計プロセスを起動させた後に、予め決められたデータフィールドの組み合わせを有する1つ目のUDPメッセージを受信した時に、相応の変数を初期化する。当該「1つ目のUDPメッセージ」を受信した現在時刻を有効計算開始時刻とする。アクセスの回数を1とし、開始時間を当該現在時間とし、持続時間を0とする。
total_count = 1;
start_time = time (NULL);
lasting_length = 0;
【0062】
後続の累計計算において、lasting_lengthは計算開始時刻start_timeから現在時刻current_timeまで持続した時間の長さである。
【0063】
その後受信した、当該データフィールドの組み合わせを有する各々のメッセージに対し、当該メッセージの受信時間と予め設定された時間の長さとの関係に基づいてアクセスのカウントが3つの状況に分けられる。
【0064】
(1)当該メッセージの受信時間がstart_time(有効計算開始時刻)から起算して1つ目の予め設定されたタイムセグメントに入る場合には、アクセス回数(total_count)が1だけ増加し、持続時間が現在の時間とstart_timeとの差となる(予め設定された時間の長さを60秒とした場合、1時間を、予め設定された時間の長さを有する60のタイムセグメントに分けることができる。当該「1つ目の予め設定されたタイムセグメント」は、有効計算開始時刻から起算した1つ目の60秒の時間である)。
【0065】
(2)当該メッセージの受信時間が前記1つ目の予め設定されたタイムセグメントに次ぐ2つ目の予め設定されたタイムセグメントに入る場合には、start_time(有効計算開始時刻)が更新される。ここで、当該メッセージの受信時間を前記予め設定された時間の長さに等しい長さを有する新しいタイムセグメントの終点とするとともに、当該新しいタイムセグメントのスタート時刻(即ち当該メッセージの受信時間から前記予め設定された時間の長さを減じた時刻)を有効計算開始時刻とする。この場合、パラメータtotal_count(即ちアクセス回数)は下記の方法で更新される。すなわち、先に前記1つ目のタイムセグメントにおけるQPSを計算し、当該新しいタイムセグメントと1つ目のタイムセグメントとが重なる部分の時間の長さにQPSを乗じ、さらに1だけ増加させる。さらに、持続時間を前記予め設定された時間の長さに更新する。
【0066】
(3)当該メッセージの受信時間が2つ目のタイムセグメントの後に入る場合には、現在の受信時間を有効計算開始時刻に設定し、アクセス回数を1にリセットし、持続時間を0とする。このような状況は初期化と同じであり、そのとき、トラフィックが新たに計算される。
【0067】
予め設定された時間の長さが60秒の場合を例にすると、相応のアルゴリズム疑似コードは下記のとおりとなる。
diff = current_time - start_time;
if (diff < 60 * X) {#受信時間が1つ目のタイムセグメントに入る場合
total_count ++; lasting_length = diff;} else if (diff > 2 * 60 * X) {#受信時間が2つ目のタイムセグメントの後に入る場合
total_count = 1;
start_time = current_time;
lasting_length = 0;} else {#受信時間が2つ目のタイムセグメントに入る場合
start_time = current_time - 60 * x;
total_count = total_count-total_count/60/X * (diff - 60 * X) + 1;
lasting_length = 60 * X;}
【0068】
予め設定された時間の長さは短いタイムセグメントと長いタイムセグメントの二種類に設定することができる。DOSファーストアタックを予防する場合は短いタイムセグメントに設置する。DOSファーストアタックの場合は、短時間内に大量の接続要求がサーバを攻撃し、これにより使用できる全ての資源が枯渇し、最終的にコンピュータが合法的なユーザの要求を処理できなくなってしまう。DOSスローアタックを予防する場合は長いタイムセグメントに設定する。
【0069】
以下において、サマライザ103のとりまとめ処理およびブラックリストの生成を詳しく説明する。
【0070】
サマライザ103は、特定の分類に基づいてすべてのアグリゲーションユニットからの、要求回数に関する統計データを読み取り、これらの統計データを取りまとめ、予め定義されたストラテジーに基づいてブラックリストを生成するとともに、ブラックリストを非同期的にロードバランサ101にローディングする。
【0071】
サマライザ103の構成および具体的な作動原理は
図3に示すとおりである。
【0072】
サマライザ103は受信部1031、生成部1032、リスニング部1033、構成ファイル1036およびデータベース1037を含む。
【0073】
本発明の実施例によれば、受信部1031は各々のアグリゲーションユニットのために1つの受信スレッドを構築することができる。受信スレッドは一定の時間(例えば1分間)毎に各々のアグリゲーションユニットにおけるウェブページの出力から異なるデータフィールドの組み合わせに対する要求回数の統計データを読み取る。当該統計データは例えばJSONSGフォーマットのデータである。
【0074】
サマライザ103の生成部1032は各々のアグリゲーションユニットから受信した統計データを予め決められたデータフィールドの組み合わせに基づいて取りまとめる。
【0075】
これらの予め決められたデータフィールドの組み合わせはuserid+ip+uri、ip+uri、userid+uriなどであってもよい。
【0076】
異なるデータフィールドの組み合わせに対する要求回数はそれぞれ対応するhashmaps内に記憶される。HashmapsはハッシュテーブルのMapインターフェースの実現に基づくものであり、コンピュータのプログラミングでは、記憶、検索などの機能に用いられる。
【0077】
あるデータフィールドの組み合わせを有する要求の回数が構成ファイル内の予め定義されたデータフィールドの組み合わせに関するブラックリストの閾値を超えた場合には、例えば0.5QPS(1秒あたりの問い合わせ率)、useridまたはipがブラックリストに加えられて現在のブラックリストを生成する。
【0078】
一実施例によれば、生成部1032における記憶スレッドはhashmaps内の取りまとめられたデータをデータベース1037に格納する。本発明の実施例によれば、記憶スレッドと受信スレッドの間で共有のhashmapsをロックしないために、ダブルhashmapsのメカニズムを採用する。
【0079】
また、システムの監視端末200はHTTPプロトコルによりデータベース1037のデータを直接取得することができる。即ち、当該データはサマライザ103を介さずにJSONSフォーマットで直接導き出すことができる。
【0080】
サマライザ103のリスニング部1033はロードバランサ101にブラックリストを提供するために用いられる。ロードバランサ101が要求した場合に、リスニング部1033は現在のブラックリストを取得するとともに、当該現在のブラックリストをホワイトリストと共にロードバランサ101に送信する。
【0081】
本発明の一実施例によれば、サマライザ103はメインサーバとサブサーバの2つのサーバが同時に作動するモードを採用することができる。メインサーバは通常の稼働機として作動でき、サブサーバはデータのバックアップ機として作動できる。メインサーバが故障したときに、サブサーバは自動的にメインサーバの全ての業務を引き継ぎ、それによってシステムの信頼性を高めることができる。
【0082】
図面と特定の実施例を参照しながら本発明を説明した。しかし、図面と明細書における実施例は本発明の実例にすぎず、本発明を限定するためのものではない。本発明の範囲は特許請求の範囲によって限定される。
【手続補正書】
【提出日】2019年5月10日
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ロードバランサ、アグリゲータおよびサマライザを備えたアクセス要求を規制するシステムにおいて、
前記ロードバランサは、ネットワークからの各々のアクセス要求を受信し、受信した当該アクセス要求を解析してUDPメッセージにするとともに、当該UDPメッセージを前記アグリゲータに送信するように配置され、
前記アグリゲータは、前記ロードバランサから受信した複数のUDPメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、前記サマライザからの要求に応答して当該サマライザに累計された統計データを送信するように配置され、
前記サマライザは、予め決められた要求時間間隔に基づいて前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に応答して前記ブラックリストを前記ロードバランサに送信
するように配置されており、前記ブラックリストは、1つまたは複数の特定のアクセス要
求のうちの各々に対して実行されるべき処理動作を指定しており、かつ
前記ロードバランサは、さらに現在のブラックリストに基づいて、受信した各アクセス要求に対する処理動作を確定するように配置されており、
前記統計データは前記予め定義された時間の長さ以内に累計された、前記予め定義されたデータフィールドの組み合わせを含むUDPメッセージの数を含み、および
前記アグリゲータは複数のアグリゲーションユニットを含み、前記アグリゲーションユニットは前記UDPメッセージからデータフィールドを抽出し、且つ該データフィールドの指定された組み合わせを累計のための前記予め定義されたデータフィールドの組み合わせとする、
アクセス要求を規制するシステム。
【請求項2】
前記アグリゲータは、互いに独立して稼働する複数のアグリゲーションユニットを含み、前記ロードバランサは、各UDPメッセージを前記複数のアグリゲーションユニットのうちの1つのアグリゲーションユニットに送信し、前記複数のアグリゲーションユニットのうちの各アグリゲーションユニットはそれぞれ前記累計を行い、
前記サマライザは、前記複数のアグリゲーションユニットからそれぞれ統計データを受信するとともに、取りまとめられた統計データを生成し、また、
前記ブラックリストは、前記取りまとめられた統計データおよび前記予め定義されたルールに基づいて生成される、請求項1に記載のシステム。
【請求項3】
前記ロードバランサは予め定義されたホワイトリストをさらに含み、前記ホワイトリストは通過させるべきアクセス要求に関する1つまたは複数の記録を含み、また、
前記ロードバランサは受信した各々のアクセス要求に対し、
当該アクセス要求が前記ホワイトリストにおける1つの記録にマッチングしている、または前記ブラックリストにおけるいずれの記録にもマッチングしていない場合には、当該
アクセス要求を通過させる操作と、
当該アクセス要求が前記ホワイトリストにおけるいずれの記録にもマッチングせず、かつ前記ブラックリストにおける1つの記録にマッチングしている場合には、前記ブラックリスト内のマッチングしている記録に指定された処理動作に基づいて当該アクセス要求を操作する操作とに基づいて、当該アクセス要求に対する処理動作を確定する、請求項1に記載のシステム。
【請求項4】
前記ロードバランサにおける前記予め定義されたホワイトリストは前記ブラックリストと共に前記サマライザから得られる、請求項3に記載のシステム。
【請求項5】
前記ブラックリストに定められた前記処理動作は遮断、リダイレクトおよび遅延のうちの1つを含む、請求項1に記載のシステム。
【請求項6】
アクセス要求を規制する方法であって、
ロードバランサによってネットワークからの各々のアクセス要求を受信し、受信したアクセス要求を解析してUDPメッセージにするとともに、当該UDPメッセージをアグリゲータに送信するステップと、
前記ロードバランサが現在のブラックリストに基づいて、受信した当該アクセス要求に対する処理動作を確定するステップと、を含み、前記ブラックリストは1つまたは複数の特定のアクセス要求のうちの各々に対して実行されるべき処理動作を指定している方法において、
前記アグリゲータは、前記ロードバランサから送信されたUDPメッセージを受信し、受信した複数のUDPメッセージを、予め定義されたデータフィールドの組み合わせおよび予め定義された時間の長さに基づいて累計して統計データを生成するとともに、サマライザからの要求に応答して累計された統計データを当該サマライザに送信し、
前記サマライザは、予め決められた要求時間間隔に基づいて前記アグリゲータに統計データを要求し、前記アグリゲータからの統計データを受信し、受信した統計データおよび予め定義されたルールに基づいてアクセス要求のブラックリストを生成するとともに、前記ロードバランサからの要求に応答して前記ブラックリストを前記ロードバランサに送信し、
前記統計データは前記予め定義された時間の長さ以内に累計された、前記予め定義されたデータフィールドの組み合わせを含むUDPメッセージの数を含み、および
前記アグリゲータは複数のアグリゲーションユニットを含み、前記アグリゲーションユニットは前記UDPメッセージからデータフィールドを抽出し、且つ該データフィールドの指定された組み合わせを累計のための前記予め定義されたデータフィールドの組み合わせとする、方法。
【請求項7】
前記アグリゲータは、互いに独立して稼働する複数のアグリゲーションユニットを含み、前記ロードバランサは、各UDPメッセージを前記複数のアグリゲーションユニットのうちの1つのアグリゲーションユニットに送信し、前記複数のアグリゲーションユニットのうちの各アグリゲーションユニットはそれぞれ前記累計を行い、
前記サマライザは、前記複数のアグリゲーションユニットからそれぞれ統計データを受信するとともに、取りまとめられた統計データを生成し、また、
前記ブラックリストは、前記取りまとめられた統計データおよび前記予め定義されたルールに基づいて生成される、請求項6に記載の方法。
【請求項8】
前記ロードバランサは予め定義されたホワイトリストをさらに含み、前記ホワイトリストは通過させるべきアクセス要求に関する1つまたは複数の記録を含み、また、
前記ロードバランサは受信された各々のアクセス要求に対し、
当該アクセス要求が前記ホワイトリストにおける1つの記録にマッチングしている、または前記ブラックリストにおけるいずれの記録にもマッチングしていない場合には、当該アクセス要求を通過さる操作と、
当該アクセス要求が前記ホワイトリストにおけるいずれの記録にもマッチングせず、かつ前記ブラックリストにおける1つの記録にマッチングしている場合には、前記ブラックリスト内のマッチングしている記録に指定された処理動作に基づいて当該アクセス要求を操作する操作とに基づいて当該アクセス要求に対する処理動作を確定する、請求項6に記載の方法。
【請求項9】
前記ロードバランサにおける前記予め定義されたホワイトリストは前記ブラックリストと共に前記サマライザから得られる、請求項8に記載の方法。
【請求項10】
前記ブラックリストに定められた前記処理動作は遮断、リダイレクトおよび遅延のうちの1つを含む、請求項6に記載の方法。