(57)【要約】      （修正有）【課題】サーバまたはサーバ・システムを圧倒しようと試みるサービス妨害攻撃および／またはその他のタイプのサイバー攻撃を軽減するためのシステムを提供する。【解決手段】アプリケーション・サーバをモニタするプロキシ・サーバが、マークアップ言語で埋め込まれているクライアント側スクリプトをクライアントに提供する。クライアント側スクリプトが、時間の指定されたピリオド内でのユーザ対話を求め、応答する前の遅延を要求し、および／またはチャレンジ・クッキーを複数回にわたって設定することによってクライアントにチャレンジする。クライアントが、求められているユーザ対話を指定の時間内に提供した場合、遅延を順守した場合、および／または正しい値を伴うチャレンジ・クッキーを設定した場合には、プロキシ・サーバは、設定可能な持続時間にわたってそのクライアントをホワイトリストに登録し、その後の要求を、チャレンジを伴わずに転送する。【選択図】図３
2015109650.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実現される、サービス妨害（ＤｏＳ）攻撃を軽減する方法であって、
第１のサーバ・システムによって、第２のサーバ・システムに宛てられているネットワーク要求をインターセプトするステップであり、前記ネットワーク要求がクライアントから生じるステップと、
前記第１のサーバ・システムによって前記クライアントに、前記ネットワーク要求への応答を提供するステップであり、前記応答が、前記クライアントに１つまたは複数のチャレンジ・メカニズムを受けさせる埋め込まれたクライアント側スクリプトを含むステップと、
１つまたは複数の疑わしくないクライアントを識別するステップであり、前記１つまたは複数の疑わしくないクライアントが、前記１つまたは複数のチャレンジ・メカニズムを成功裏に完了する要求クライアントに相当するステップと、
１つまたは複数の疑わしいクライアントを識別するステップであり、前記１つまたは複数の疑わしいクライアントが、前記１つまたは複数のチャレンジ・メカニズムを成功裏に完了しない要求クライアントに相当するステップと、
前記第１のサーバ・システムによって前記第２のサーバ・システムに、前記１つまたは複数の疑わしくないクライアントに対応するネットワーク要求を転送するステップと
を含む方法。
【請求項２】
前記ネットワーク要求への応答を提供するステップが、
前記第２のサーバ・システムに宛てられているクライアントからの第１のハイパーテキスト転送プロトコル（ＨＴＴＰ）要求を受信するステップであって、前記第１のＨＴＴＰ要求がユニフォーム・リソース識別子（ＵＲＩ）を含むステップと、
前記第１のサーバ・システムによって前記クライアントに、前記第１のＨＴＴＰ要求への応答を送信するステップであって、前記応答が、ランダム・バイトの文字列および前記ＵＲＩの少なくとも一部を含むランダムＵＲＩリダイレクトを伴うクライアント側スクリプトを含み、前記クライアント側スクリプトが、ユーザ対話を遂行するよう前記クライアントに要求するステップと、
前記クライアントが、前記ランダムＵＲＩリダイレクトに応答して、ランダム化されたＵＲＩをターゲットとする第２のＨＴＴＰ要求を送信したという判定に応答して前記クライアントを疑わしくないものとして分類するステップであって、前記ランダム化されたＵＲＩが、ランダム・バイトの前記文字列、および前記ＵＲＩの前記少なくとも一部を含む、ステップと
をさらに含む請求項１に記載の方法。
【請求項３】
前記ランダムＵＲＩリダイレクトが、前記クライアントに、前記第１のサーバ・システムによって前記クライアントに特に関連付けられている前記ランダム化されたＵＲＩに基づいて前記第２のＨＴＴＰ要求を行わせる請求項２に記載の方法。
【請求項４】
前記第１のサーバ・システムによって前記ランダムＵＲＩリダイレクトを難読化するステップをさらに含む請求項２に記載の方法。
【請求項５】
前記ネットワーク要求への応答を提供するステップが、
前記第２のサーバ・システムに宛てられているクライアントからの第１のＨＴＴＰ要求を受信するステップであって、前記第１のＨＴＴＰ要求がＵＲＩを含むステップと、
前記第１のサーバ・システムによって、前記クライアントに前記第１のＨＴＴＰ要求への応答を送信するステップであって、前記応答が、遅延要求ならびにランダム・バイトの文字列および前記ＵＲＩの少なくとも一部を含むランダムＵＲＩリダイレクトを伴うクライアント側スクリプトを含むステップと、
前記クライアントが前記ランダムＵＲＩリダイレクトに応答して前記遅延要求を順守したという判定に応答して前記クライアントを疑わしくないものとして分類するステップとをさらに含む請求項１に記載の方法。
【請求項６】
ネットワーク要求をインターセプトするステップが、
前記第２のサーバ・システムに対するＤｏＳ攻撃を検出したことに応答して、前記第２のサーバ・システムに宛てられている前記ネットワーク要求を前記第１のサーバ・システムへリダイレクトするステップをさらに含む請求項１に記載の方法。
【請求項７】
１つまたは複数の疑わしくないクライアントを識別するステップが、
前記１つまたは複数のチャレンジ・メカニズムを成功裏に完了する疑わしくないクライアントをホワイトリストに登録するステップをさらに含む請求項１に記載の方法。
【請求項８】
前記１つまたは複数のチャレンジ・メカニズムを成功裏に完了する疑わしくないクライアントを、前記疑わしくないクライアントに関連付けられているネットワーク・アドレスを使用してホワイトリストに登録するステップをさらに含む請求項７に記載の方法。
【請求項９】
１つまたは複数のチャレンジ・メカニズムを成功裏に完了する疑わしくないクライアントを、前記疑わしくないクライアントに特に関連付けられている少なくともＨＴＴＰクッキー値を使用してホワイトリストに登録するステップをさらに含む請求項７に記載の方法。
【請求項１０】
前記第２のサーバ・システムに宛てられているクライアントからの第１のＨＴＴＰ要求を受信するステップと、
前記第１のサーバ・システムによって前記クライアントに、前記第１のＨＴＴＰ要求への応答を送信するステップであって、前記応答が前記クライアント上にチャレンジ・クッキーを設定するための複数のクッキー設定指令を含み、前記複数のクッキー設定指令のうちの少なくとも１つが有効であるとともに前記チャレンジ・クッキーを正しい値に設定するように構成されており、更に、前記複数のクッキー設定指令のうちの少なくとも１つが無効であるとともに前記チャレンジ・クッキーを誤った値に設定するように構成されているステップと、
前記クライアントが前記チャレンジ・クッキーを前記正しい値に設定したと判定するステップと、
前記クライアントが前記チャレンジ・クッキーを前記正しい値に設定したという判定に応答して、前記クライアントを疑わしくないものとして分類するステップと
をさらに含む請求項１に記載の方法。
【請求項１１】
前記１つまたは複数の疑わしくないクライアントに対応するネットワーク要求を転送するステップが、
前記疑わしいクライアントに対応するネットワーク要求を破棄するステップをさらに含む請求項１に記載の方法。
【請求項１２】
サービス妨害（ＤｏＳ）攻撃を軽減するためのシステムであって、
第１のサーバ・システムにおけるプロセッサと、
前記プロセッサに通信可能に結合されているメモリとを含み、
前記プロセッサが、
第２のサーバ・システムに宛てられているネットワーク要求をインターセプトするステップであり、前記ネットワーク要求がクライアントから生じるステップと、
前記クライアントに、前記ネットワーク要求への応答を提供するステップであり、前記応答が、前記クライアントに１つまたは複数のチャレンジ・メカニズムを受けさせる埋め込まれたクライアント側スクリプトを含むステップと、
１つまたは複数の疑わしくないクライアントを識別するステップであり、前記１つまたは複数の疑わしくないクライアントが、前記１つまたは複数のチャレンジ・メカニズムを成功裏に完了する要求クライアントに相当するステップと、
１つまたは複数の疑わしいクライアントを識別するステップであり、前記１つまたは複数の疑わしいクライアントが、前記１つまたは複数のチャレンジ・メカニズムを成功裏に完了しない要求クライアントに相当するステップと、
前記第２のサーバ・システムに、前記１つまたは複数の疑わしくないクライアントに対応するネットワーク要求を転送するステップと
を行うように構成されているシステム。
【請求項１３】
前記プロセッサが、
前記第２のサーバ・システムに宛てられているクライアントからの第１のハイパーテキスト転送プロトコル（ＨＴＴＰ）要求を受信するステップであって、前記第１のＨＴＴＰ要求がユニフォーム・リソース識別子（ＵＲＩ）を含むステップと、
前記クライアントに前記第１のＨＴＴＰ要求への応答を送信するステップであって、前記応答が、ランダム・バイトの文字列および前記ＵＲＩの少なくとも一部を含むランダムＵＲＩリダイレクトを伴うクライアント側スクリプトを含み、前記クライアント側スクリプトが、ユーザ対話を遂行するよう前記クライアントに要求するステップと、
前記クライアントが、前記ランダムＵＲＩリダイレクトに応答して、ランダム化されたＵＲＩをターゲットとする第２のＨＴＴＰ要求を送信したという判定に応答して前記クライアントを疑わしくないものとして分類するステップであって、前記ランダム化されたＵＲＩが、ランダム・バイトの前記文字列、および前記ＵＲＩの前記少なくとも一部を含む、ステップとを行うようにさらに構成されている請求項１２に記載のシステム。
【請求項１４】
前記ランダムＵＲＩリダイレクトが、前記クライアントに、前記第１のサーバ・システムによって前記クライアントに特に関連付けられている前記ランダム化されたＵＲＩに基づいて前記第２のＨＴＴＰ要求を行うよう指示する請求項１３に記載のシステム。
【請求項１５】
前記プロセッサが、
前記第２のサーバ・システムに宛てられているクライアントからの第１のＨＴＴＰ要求を受信するステップであって、前記第１のＨＴＴＰ要求がＵＲＩを含むステップと、
前記クライアントに前記第１のＨＴＴＰ要求への応答を送信するステップであって、前記応答が、遅延要求ならびにランダム・バイトの文字列および前記ＵＲＩの少なくとも一部を含むランダムＵＲＩリダイレクトを伴うクライアント側スクリプトを含むステップと、
前記クライアントが前記ランダムＵＲＩリダイレクトに応答して前記遅延要求を順守したという判定に応答して前記クライアントを疑わしくないものとして分類するステップとを行うようにさらに構成されている請求項１２に記載のシステム。
【請求項１６】
前記プロセッサが、前記１つまたは複数のチャレンジ・メカニズムを成功裏に完了する疑わしくないクライアントをホワイトリストに登録するステップを行うようにさらに構成されている請求項１２に記載のシステム。
【請求項１７】
前記プロセッサが、
前記第２のサーバ・システムに宛てられているクライアントからの第１のＨＴＴＰ要求を受信するステップと、
前記クライアントに前記第１のＨＴＴＰ要求への応答を送信するステップであって、前記応答が前記クライアント上にチャレンジ・クッキーを設定するための複数のクッキー設定指令を含み、前記複数のクッキー設定指令のうちの少なくとも１つが有効であるとともに前記チャレンジ・クッキーを正しい値に設定するように構成されており、更に前記複数のクッキー設定指令のうちの少なくとも１つが無効であるとともに前記チャレンジ・クッキーを誤った値に設定するように構成されているステップと、
前記クライアントが前記チャレンジ・クッキーを前記正しい値に設定したと判定するステップと、
前記クライアントが前記チャレンジ・クッキーを前記正しい値に設定したという判定に応答して、前記クライアントを疑わしくないものとして分類するステップとを行うようにさらに構成されている請求項１２に記載のシステム。
【請求項１８】
コンピュータ・システム内のプロセッサによって実行されたときに、サービス妨害（ＤｏＳ）攻撃を軽減するための方法を前記プロセッサに実行させる命令を含む非一時的なコンピュータ可読ストレージ・メディアであって、前記方法が、
第１のサーバ・システムによって、第２のサーバ・システムに宛てられているネットワーク要求をインターセプトするステップであり、前記ネットワーク要求がクライアントから生じるステップと、
前記第１のサーバ・システムによって前記クライアントに、前記ネットワーク要求への応答を提供するステップであり、前記応答が、前記クライアントに１つまたは複数のチャレンジ・メカニズムを受けさせる埋め込まれたクライアント側スクリプトを含むステップと、
１つまたは複数の疑わしくないクライアントを識別するステップであり、前記１つまたは複数の疑わしくないクライアントが、前記１つまたは複数のチャレンジ・メカニズムを成功裏に完了する要求クライアントに相当するステップと、
１つまたは複数の疑わしいクライアントを識別するステップであり、前記１つまたは複数の疑わしいクライアントが、前記１つまたは複数のチャレンジ・メカニズムを成功裏に完了しない要求クライアントに相当するステップと、
前記第１のサーバ・システムによって前記第２のサーバ・システムに、前記１つまたは複数の疑わしくないクライアントに対応するネットワーク要求を転送するステップと
を含む非一時的なコンピュータ可読ストレージ・メディア。
【請求項１９】
前記ネットワーク要求への応答を提供するステップが、
前記第２のサーバ・システムに宛てられているクライアントからの第１のハイパーテキスト転送プロトコル（ＨＴＴＰ）要求を受信するステップであって、前記第１のＨＴＴＰ要求がユニフォーム・リソース識別子（ＵＲＩ）を含むステップと、
前記第１のサーバ・システムによって前記クライアントに、前記第１のＨＴＴＰ要求への応答を送信するステップであって、前記応答が、ランダム・バイトの文字列および前記ＵＲＩの少なくとも一部を含むランダムＵＲＩリダイレクトを伴うクライアント側スクリプトを含み、前記クライアント側スクリプトが、ユーザ対話を遂行するよう前記クライアントに要求するステップと、
前記クライアントが、前記ランダムＵＲＩリダイレクトに応答して、ランダム化されたＵＲＩをターゲットとする第２のＨＴＴＰ要求を送信したという判定に応答して前記クライアントを疑わしくないものとして分類するステップであって、前記ランダム化されたＵＲＩが、ランダム・バイトの前記文字列、および前記ＵＲＩの前記少なくとも一部を含む、ステップと
をさらに含む請求項１８に記載の非一時的なコンピュータ可読ストレージ・メディア。
【請求項２０】
前記ネットワーク要求への応答を提供するステップが、
前記第２のサーバ・システムに宛てられているクライアントからの第１のＨＴＴＰ要求を受信するステップであって、前記第１のＨＴＴＰ要求がＵＲＩを含むステップと、
前記第１のサーバ・システムによって前記クライアントに、前記第１のＨＴＴＰ要求への応答を送信するステップであって、前記応答が、遅延要求ならびに前記ＵＲＩおよびランダム・バイトの文字列を含むランダムＵＲＩリダイレクトを伴うクライアント側スクリプトを含むステップと、
前記クライアントが前記ランダムＵＲＩリダイレクトに応答して前記遅延要求を順守したという判定に応答して前記クライアントを疑わしくないものとして分類するステップとをさらに含む請求項１８に記載の非一時的なコンピュータ可読ストレージ・メディア。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本特許出願は、２０１０年１２月３０日に出願された、「Ａｃｔｉｖｅ  Ｖａｌｉｄａｔｉｏｎ  ｆｏｒ  ＤＤＯＳ  ａｎｄ  ＳＳＬ  ＤＤＯＳ  Ａｔｔａｃｋｓ」と題されている、係属中の、および本出願と同じエンティティーに譲渡された、または本出願と同じエンティティーへの譲渡の義務のもとにある米国特許出願第１２／９８２，５２０号明細書の一部継続出願であり、米国特許出願第１２／９８２，５２０号明細書の利益、および米国特許出願第１２／９８２，５２０号明細書に対する優先権を主張するものであり、米国特許出願第１２／９８２，５２０号明細書は、その全体が参照によって本明細書に明示的に組み込まれている。
【０００２】
本開示は一般に、サーバおよびウェブ・サーバに対するサービス妨害攻撃およびその他のサイバー攻撃を軽減するための方法およびシステムに関する。
【背景技術】
【０００３】
サーバは、要求を行っているその他のデバイスにサービスまたはリソースを提供するように構成されているコンピュータまたはその他の電子デバイスである。サーバは典型的に、「クライアント」として知られている、その他のネットワーク接続されたデバイスから通信を受信するための１つまたは複数の通信リンクを提供し、また、クライアントからの着信メッセージを探してそれらの通信リンクを継続的にモニタするという機能を有する１つまたは複数のプロセスを実行する。クライアント要求にサービス提供するために、サーバは典型的に、メモリ、プロセッサ・サイクル、または帯域幅などのシステム・リソースを費やさなければならない。サーバは、いくつかのクライアントまたはクライアント要求にサービス提供しないことを選択することができるが、それでもなお、クライアント通信を受信するために、およびそのクライアント通信にサービス提供するか否かを判定するために、少なくともいくつかのシステム・リソースを傾注しなければならない。
【０００４】
トランスミッション・コントロール・プロトコル（「ＴＣＰ」）およびハイパーテキスト転送プロトコル（「ＨＴＴＰ」）などのいくつかの通信プロトコルにおいては、サーバは、いかなるクライアントからの要求も、そのクライアントがそのプロトコルに準拠しているならば、受け入れてサービス提供するようにデフォルトで構成されている。たとえば、公衆向けのウェブ・サーバは典型的に、いかなるクライアントから受信されたいかなるＨＴＴＰ要求にも（たとえば、ウェブ・ページを求めるＨＴＴＰ要求に）、クライアント同士またはクライアント要求同士の間において区別を行うことなく、サービス提供することを試みるようにデフォルトで構成されている。
【０００５】
多くの通信プロトコルのこの特徴は、容易に利用可能なネットワーク・サービスという点で多くの利点を提供するが、サーバをサイバー攻撃に対して脆弱なままにする場合もある。たとえば、サービス妨害（「ＤｏＳ」）攻撃においては、１つのクライアントが、多数の要求をすばやく連続してサーバへ送信することによって、そのサーバを圧倒するよう試みる場合がある。ウェブ・サーバは、すべてのクライアントからの要求を受け入れるようにデフォルトで構成されているため、およびＨＴＴＰプロトコルは、要求クライアントに関する情報（そうした情報は、要求を行う際のクライアントの意図の本質をサーバが判定することを可能にするであろう）をほとんど提供しないため、攻撃されたウェブ・サーバは、単一の悪意あるクライアントからの要求の殺到にサービス提供する際にサーバに課される負荷に起因して、その他の正当な要求に応答するのが遅くなる、または応答できなくなる場合がある。
【０００６】
しかしながらＤｏＳ攻撃は、検出および克服するのが容易である場合が多い。なぜなら、多くのケースにおいて、単一の攻撃側クライアントからのすべての悪意ある要求は、同じインターネット・プロトコル（「ＩＰ」）アドレスから生じるためである。したがって、通常のロードでのトラフィックにおける大幅な増大と、そのトラフィックのうちの大きな割合が単一のＩＰアドレスに関連付けられているということとを単に観察することによって、サーバが攻撃を受けているということを検出することは容易である場合がある。次いで、サーバは、その識別されたＩＰアドレスからのすべての要求を無視することによって、攻撃を克服することができる。
【０００７】
ＤｏＳ攻撃を検出および克服することができる容易さに起因して、ＤｏＳ攻撃の１つのバリエーションが、分散型ＤｏＳ（「ＤＤｏＳ」）攻撃である。ＤＤｏＳ攻撃においては、サーバに対する迷惑要求のうちのすべてを単一のクライアントに行わせるのではなく、攻撃者は、別々のクライアントからなるネットワークを利用して、サーバに対して複数の要求を同時に発行する。要求クライアントのそのようなネットワークは、配置されている「ボットネット」のおかげで攻撃者の思うがままにすることができ、そうしたボットネットにおいては、数百または数千の普通のユーザのコンピュータが、「ボット・マスター」として知られている中央のマシンまたは当局によって発行されるコマンドに応答するようにプログラムされているマルウェアに感染している。ボット・マスターは、サーバまたは企業に対してＤＤｏＳ攻撃を実装するために「ゾンビ」マシンのそのような集団を利用することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＤＤｏＳ攻撃においては、要求の殺到が、それぞれが異なるＩＰアドレスを有する多数の異なるクライアントにわたって広まっている場合があるため、どの要求が、正当なクライアントから生じていて、どの要求が、ボットネット内の汚染された「ゾンビ」マシンなどの悪意あるクライアントから生じているかを検出することが困難である場合がある。したがってサーバは、ＩＰアドレスの大きなプールにわたってすべての要求が実質的に同じに見える場合があるため、どの要求を無視すべきか、およびどの要求にサービス提供すべきかを判定することができない場合がある。
【０００９】
悪意ある要求から正当な要求を見分けるための１つの技法は、クライアント「チャレンジ」メカニズムを使用することであり、そのクライアント「チャレンジ」メカニズムにおいては、それぞれの要求クライアントが、サーバによって指定されたオペレーションをまず実行するようにチャレンジされ、その後にサーバは、そのクライアントの要求にサービス提供することにさらなるリソースを傾注する。しばしば、ＤＤｏＳ攻撃に関与するクライアントは、サーバに対する要求を「ダム」方式で発行するように、すなわち、リソースおよび帯域幅を割り当てることをサーバに行わせるのに必要なオペレーションのみを実行しつつ、そのクライアントによって実行されなければならないオペレーションの数を最小限に抑えるようにプログラムされている。たとえば、サーバに対するＨＴＴＰ要求を行う際に、クライアントは典型的に、まずＨＴＴＰ要求を構築して送信し、次いでサーバからＨＴＴＰ応答を受信して処理しなければならない。ＤＤｏＳ攻撃の目的は、攻撃されるサーバにできるだけ多くの負荷を与えつつ攻撃側クライアントに対する負荷を最小限に抑えることであると言えるので、クライアントは、攻撃されるサーバによって送信されるあらゆるＨＴＴＰ応答を単に無視するように、ひいては、それらの応答を処理することにいっさいのリソースまたはプロセッサ・サイクルを傾注しないようにプログラムされる場合がある。したがって、クライアントが正常なクライアントであり、単なる「ダム」攻撃スクリプトではないということを示すための予備的なタスクを実行するようそれらのクライアントに要求することによって、サーバは、悪意あるクライアントから正当なクライアントを見分けることができる場合がある。
【００１０】
しかしながら、従来のクライアント・チャレンジ・メカニズムは、いくつかの欠点を抱えている。たとえば、従来のクライアント・チャレンジ・メカニズムは、個々の要求の正当性を査定するが、そのような要求のほとんどの確認は、それらの要求を生じさせるために（攻撃スクリプトとは対照的に）実際のブラウザが使用されたか否かを単に確かめるだけで終わる。したがって、悪意ある要求が、マルウェアに感染しているブラウザなど、実際のブラウザによって生成されて送信された場合には、ほとんどの従来の軽減技法は失敗することになる。
【００１１】
したがって、従来技術によって提示されているこれらおよびその他の問題を克服するための方法およびシステムが必要とされている。
【課題を解決するための手段】
【００１２】
本開示の実施形態は、サーバまたはサーバ・システムを圧倒しようと試みるサービス妨害攻撃および／またはその他のタイプのサイバー攻撃を軽減するためのシステムおよび方法に関する。具体的には、コンピュータにより実現される、ＤｏＳ攻撃を軽減する方法が、第１のサーバ・システムによって、第２のサーバ・システムに宛てられているネットワーク要求をインターセプトするステップであって、それらのネットワーク要求がクライアントから生じる、ステップと、第１のサーバ・システムによってクライアントに、ネットワーク要求への応答を提供するステップであって、それらの応答が、クライアントに、ユーザ対話を遂行するようそれらのクライアントに要求する１つまたは複数のチャレンジ・メカニズムを受けさせる埋め込まれたクライアント側スクリプトを含むステップと、１つまたは複数の疑わしくないクライアントを識別するステップであって、それらの１つまたは複数の疑わしくないクライアントが、１つまたは複数のチャレンジ・メカニズムを成功裏に完了する要求クライアントに相当するステップと、１つまたは複数の疑わしいクライアントを識別するステップであって、それらの１つまたは複数の疑わしいクライアントが、１つまたは複数のチャレンジ・メカニズムを成功裏に完了しない要求クライアントに相当するステップと、第１のサーバ・システムによって第２のサーバ・システムに、１つまたは複数の疑わしくないクライアントに対応するネットワーク要求を転送するステップとを含む。
【００１３】
本開示の実施形態のさらなる目的および利点は、部分的には以降の説明において記載され、部分的には説明から明らかになり、またはそれらの実施形態を実践することによって知ることができる。それらの実施形態の目的および利点は、添付の特許請求の範囲において特に指摘されている要素および組合せを用いて実現および達成されることになる。
【００１４】
上述の一般的な説明および以降の詳細な説明は両方とも、例示的かつ説明的なものにすぎず、それらの実施形態を、特許請求されているものとして限定するものではないということを理解されたい。
【図面の簡単な説明】
【００１５】
【図１】本開示の実施形態と整合する、アプリケーション・サーバとクライアントとの間における例示的な通信を示す図である。
【図２】本開示の実施形態と整合する、ＤｏＳ攻撃の際に、アプリケーション・サーバを対象としたトラフィックを軽減サイトへ迂回させる例示的な方法を示す図である。
【図３】本開示の実施形態と整合する、ＤｏＳ攻撃に対するクライアント側でのアクティブな確認を実行するための例示的な方法を示す流れ図である。
【図４】本開示の実施形態と整合する、ＤｏＳ攻撃に対するクライアント側でのアクティブな確認を実行するための例示的な方法を示す流れ図である。
【図５】本開示と整合する、開示されている実施形態を実行するための例示的なコンピュータ・システムを示す図である。
【発明を実施するための形態】
【００１６】
次いで、添付の図面において示されている例示的な実施形態を詳細に参照する。適切な場合には、同じまたは同様の部分を指すために、図面同士を通じて同じ参照番号が使用されている。
【００１７】
簡潔さおよび例示的な目的のために、本開示の原理は、主にその例示的な実施形態を参照することによって説明される。しかしながら、同じ原理は、すべてのタイプの情報およびシステムに等しく適用可能であり、また、すべてのタイプの情報およびシステムにおいて実装されることが可能であるということ、ならびにそのようなバリエーションはいずれも、本開示の真の趣旨および範囲から逸脱するものではないということを当業者なら容易に認識するであろう。その上、以降の詳細な説明においては、添付の図を参照し、それらの図は、特定の例示的な実施形態を示している。本開示の趣旨および範囲から逸脱することなく、例示的な実施形態に対して、電気的な、機械的な、論理的な、および構造上の変更を行うことができる。したがって、以降の詳細な説明は、限定的な意味で理解されるべきではなく、本開示の範囲は、添付の特許請求の範囲およびそれらの均等物によって定義される。
【００１８】
本開示のさまざまな実施形態は、サーバおよびウェブ・サーバに対するサービス妨害攻撃およびその他のサイバー攻撃を軽減するためのシステムおよび方法を含む。本開示のさまざまな実施形態による例示的なシステムは、１つまたは複数のアプリケーション・サーバをモニタする１つまたは複数のプロキシ・サーバを含み、それらのアプリケーション・サーバは、それらのアプリケーション・サーバに宛てられたクライアントの要求を受信してサービス提供するように構成されている。プロキシ・サーバは、リバース・プロキシ・サーバとして動作することができ、クライアントにとってトランスペアレントであることが可能である。プロキシ・サーバは、要求をインターセプトすることができ、それらのインターセプトされた要求に応答して、プロキシ・サーバは、それらのインターセプトされた要求からユニフォーム・リソース識別子（「ＵＲＩ」）またはその他のリソース識別子を抽出すること、およびクライアントのインターネット・プロトコル（「ＩＰ」）アドレス等など、クライアントに関連付けられている一意の識別子を特定することが可能である。プロキシ・サーバは、クライアントがフォロースルー・ランダムＵＲＩリダイレクション要求を行うのに必要な１つまたは複数のランダム・バイトの文字列を生成することができる。プロキシ・サーバは、ランダム・バイトの文字列をクライアントの一意の識別子に関連付けることができる。
【００１９】
ランダム・バイトの文字列を生成した後で、プロキシ・サーバは、マークアップ言語で埋め込まれているカスタマイズされたクライアント側スクリプトをクライアントに提供することができる。それらのクライアント側スクリプトは、プロキシ・サーバによって予期されているフォロースルー・ランダムＵＲＩリダイレクション要求を生成するのに必要なランダム・バイトの文字列を含むことができる。プロキシ・サーバは、供給されたクライアント側スクリプト以外を通じてフォロースルー・ランダムＵＲＩリダイレクション要求を生成することを困難にするために、クライアント側スクリプト内のランダム・バイトの文字列を難読化することができる。クライアント側スクリプトは、インターセプトされた要求から抽出されたＵＲＩの少なくとも一部を含むこともでき、それによってプロキシ・サーバは、それらのＵＲＩを格納する必要がなくなる。クライアント側スクリプトは、実行されると、時間の指定されたピリオド内でのユーザ対話を求めることによってクライアントにチャレンジする。求められた対話が行われた後にのみ、クライアント側スクリプトは、プロキシ・サーバによって予期されているフォロースルー・ランダムＵＲＩリダイレクション要求を生成する。クライアントが、求められているユーザ対話を指定の時間内に提供した場合には、プロキシ・サーバは、設定可能な持続時間にわたってそのクライアントをホワイトリストに登録することができ、その持続時間中にプロキシ・サーバは、ホワイトリストに登録されたそのクライアントのその後の要求を、チャレンジを伴わずにアプリケーション・サーバへ転送し、そのクライアントによって当初要求された少なくとも１つのアプリケーション・サーバへのオリジナルＵＲＩリダイレクトをそのクライアントに提供する。しかしながら、クライアントが、求められているユーザ対話を指定の時間内に提供しなかった場合には、プロキシ・サーバは、インターセプトされた要求をドロップするか、またはインターセプトされた要求にさらに低い優先度でサービス提供し、設定可能な持続時間にわたってそのクライアントをブラックリストに登録することができ、その持続時間中にプロキシ・サーバは、ブラックリストに登録されたそのクライアントのその後の要求をブロックするか、またはその後の要求にさらに低い優先度でサービス提供する。
【００２０】
代替として、または追加として、ランダム・バイトの文字列を生成した後に、プロキシ・サーバは、遅延のランダムに設定された持続時間を導入するリダイレクト応答をクライアントに提供することができる。それらのリダイレクト応答は、プロキシ・サーバによって予期されているフォロースルー・ランダムＵＲＩリダイレクション要求をクライアントが生成するのに必要なランダム・バイトを含むことができる。リダイレクト応答は、インターセプトされた要求から抽出されたＵＲＩの少なくとも一部を含むこともでき、それによってプロキシ・サーバは、それらのＵＲＩを格納する必要がなくなる。リダイレクト応答は、クライアントまたはクライアントのエージェント（たとえば、ブラウザ、アプリケーションなど）に、フォロースルー・ランダムＵＲＩリダイレクト要求を行う前に遅延のランダムに設定された持続時間にわたって待つよう要求する。ランダムに設定された遅延持続時間は、リダイレクト応答どうしの間において異なることが可能である。クライアントが、そのクライアントに要求されたランダムに設定された遅延持続時間を順守したとプロキシ・サーバが判定した場合には、プロキシ・サーバは、設定可能な持続時間にわたってそのクライアントをホワイトリストに登録することができ、その持続時間中にプロキシ・サーバは、ホワイトリストに登録されたそのクライアントのその後の要求を、チャレンジを伴わずにアプリケーション・サーバへ転送し、そのクライアントによって当初要求された少なくとも１つのアプリケーション・サーバへのオリジナルＵＲＩリダイレクトをそのクライアントに提供する。しかしながら、クライアントが、そのクライアントに要求されたランダムに設定された遅延持続時間を順守しなかったとプロキシ・サーバが判定した場合には、プロキシ・サーバは、インターセプトされた要求をドロップするか、またはインターセプトされた要求にさらに低い優先度でサービス提供し、設定可能な持続時間にわたってそのクライアントをブラックリストに登録することができ、その持続時間中にプロキシ・サーバは、ブラックリストに登録されたそのクライアントのその後の要求をブロックするか、またはその後の要求にさらに低い優先度でサービス提供する。
【００２１】
さまざまな実施形態においては、プロキシ・サーバは、クライアント上にクッキーを設定すること、および／またはクライアント上に以前に設定されたクッキーを読み取ることが可能であり、フォロースルー・ランダムＵＲＩリダイレクション要求を生成するのに必要とされる情報のうちのいくつかは、クライアント上に以前に設定された１つまたは複数のクッキーから生じる場合がある。クッキーのタイプは、（チャレンジされているクライアントのための）チャレンジ・クッキー、（ホワイトリストに登録されているクライアントのための）ホワイトリスト・クッキー、（ブラックリストに登録されているクライアントのための）ブラックリスト・クッキーなどを含む。クライアント側スクリプトは、それら自体では、要求を構築するためのすべての必要な情報を含んでいるとは限らない場合があり、そのことによって、攻撃者にとっては、プロキシ・サーバによって予期されているフォロースルー・ランダムＵＲＩリダイレクション要求に至るためには、必要とされる情報を伴うクッキーを保持すること、ならびに必要な操作を実行することの両方が必要となる。さらに、ゲートウェイの背後にいるいくつかのクライアントがネットワーク内に存在する場合があり、ひいては、それらのクライアントの要求におけるソースＩＰアドレスは、クライアントよりもむしろゲートウェイのＩＰアドレスを反映することになる。クッキーを使用することによって、プロキシ・サーバは、ゲートウェイの背後にいるクライアントを一意に識別することができる。
【００２２】
ほとんどの正当なクライアント（たとえば、よく知られているブラウザ）は、クッキー設定指令を確認するが、多くのあまり洗練されていないクライアント（たとえば、ボットネット）は、クッキー設定指令を確認しないという事実に基づいて、チャレンジされているクライアントが正当である可能性を判定するために、プロキシ・サーバは、それらのクライアント上に同じチャレンジ・クッキーを複数回にわたって設定することができる。クッキー設定指令確認の例は、有効期限確認、ドメイン確認などを含む。有効期限確認を実行する場合には、よく知られているブラウザは、無効な有効期限（たとえば、既に経過した有効期日／時刻）を伴うクッキーを設定しようと試みるあらゆるクッキー設定指令を破棄する。ドメイン確認を実行する場合には、よく知られているブラウザは、要求されているドメインにマッチしないドメインを指定するあらゆるクッキー設定指令を破棄する。さまざまな実施形態においては、ホワイトリストに登録されていない、またはブラックリストに登録されていないクライアントからの少なくとも１つの要求をインターセプトした後に、プロキシ・サーバは、別々の値を伴うチャレンジ・クッキーを設定しようと試みる複数のクッキー設定指令（それらのうちの１つの指令は、正しい値を設定し、その一方で残りの（１つまたは複数の）指令は、１つまたは複数の誤った値を設定する）をクライアントに提供することによって、要求に応答することができる。クライアントが、誤った値を伴う（１つまたは複数の）クッキー設定指令を破棄して、正しい値を伴うチャレンジ・クッキーを設定することができる場合には、プロキシ・サーバは、そのクライアントが正当であると判定して、そのクライアントをホワイトリストに登録することができる。あるいは、クライアントが、誤った値のうちの１つを伴うチャレンジ・クッキーを設定した場合には、プロキシ・サーバは、そのクライアントが悪意を有するかまたはその他の形で不正であると判定して、そのクライアントをブラックリストに登録することができる。
【００２３】
図１は、本開示の実施形態と整合する、１つまたは複数の例示的なアプリケーション・サーバと、１つまたは複数のクライアントとの間における通信を示す図である。図１において示されているように、顧客１３０の１つまたは複数のアプリケーション・サーバ１３５は、１つまたは複数のエンドユーザまたはクライアント１１０にサービスを提供することができる。アプリケーション・サーバ１３５は、アプリケーション・サーバ１３５によってホストされるウェブ・ページを求めるクライアント１１０からのＨＴＴＰ要求にサービス提供する商用ウェブ・サーバを含むことができる。クライアント１１０は、インターネット１２０を通じて、およびＨＴＴＰ、ＴＣＰ／ＩＰ等などの普通のインターネット通信プロトコルを使用して、アプリケーション・サーバ１３５と通信する。アプリケーション・サーバ１３５は、１つもしくは複数のアプリケーションを運営すること、または１つもしくは複数の公衆向けのネットワーク・サービスを提供することが可能であるが、アプリケーション・サーバ１３５は、ＤｏＳまたはＤＤｏＳ攻撃などのサイバー攻撃にさらされる可能性がある、およびいかなる特定のアプリケーションも運営する必要がない、またはいかなる特定のサービスもホストする必要がない任意のサーバを含む。
【００２４】
さまざまな実施形態においては、クライアント１１０は、インターネット１２０を介してアプリケーション・サーバ１３５と直接通信することができる。たとえば、クライアント１１０からのＨＴＴＰ要求は、ＴＣＰセグメント、ＩＰデータグラム、およびイーサネット・フレーム内に封入されて、インターネット１２０およびネットワーク接続１２０ａを介してサーバ１３５へ送信されることが可能である。いくつかの実施形態においては、介在者として通信に関与するサードパーティーは、インターネット・サービス・プロバイダ（「ＩＳＰ」）か、または、ルータおよびリンク・レイヤ・スイッチを提供し、リンク・レイヤおよびネットワーク・レイヤを超えるイーサネット・フレームのコンテンツの分析または調査は行わず、代わりに、パケットのうちでクライアント１１０からアプリケーション・サーバ１３５へ通信を伝送するのに必要な部分のみを分析するその他のエンティティーだけである。
【００２５】
アプリケーション・サーバ１３５、またはアプリケーション・サーバ１３５にインターネット接続を提供するルータは、１つまたは複数のモニタリング・サーバ１４５によってモニタされることが可能である。モニタリング・サーバ１４５は、アプリケーション・サーバ１３５がネットワーク通信を受信しているか、または正常なもしくは予期されている様式で機能しているかどうか、あるいはアプリケーション・サーバ１３５が、ＤｏＳ攻撃の存在を示す可能性がある異常な様式で機能しているかどうかを判定する目的でアプリケーション・サーバ１３５をモニタすることができる。「ＤｏＳ攻撃」とは、すべての悪意ある要求もしくは通信が単一のデバイスから生じる従来のＤｏＳ攻撃、複数の別々のデバイスが攻撃に関与することができるＤＤｏＳ攻撃、またはサーバもしくはサーバ・システムを圧倒するよう試みるその他のタイプのサイバー攻撃を指すことができる。
【００２６】
さまざまな実施形態においては、サードパーティー軽減サービス・プロバイダ１４０が、モニタリング・サーバ１４５を運営することができ、モニタリング・サーバ１４５は、アプリケーション・サーバ１３５を所有または運営することができる顧客１３０に提供される商用軽減サービスに従ってアプリケーション・サーバ１３５をモニタする。モニタリング・サーバ１４５は、モニタリング・ダッシュボード１４７を提供することができ、そのモニタリング・ダッシュボード１４７を通じて、顧客１３０または管理者は、アプリケーション・サーバ１３５に関連付けられているトラフィック・メトリック、ロード分布、および／またはその他の情報をモニタすることができる。図１は、モニタリング・サーバ１４５を、直接の通信リンク、またはインターネット１２０とは別個の通信リンクを使用してアプリケーション・サーバ１３５と通信するものとして示しているが、モニタリング・サーバ１４５は、インターネット１２０を通じたネットワーク接続など、間接的なネットワーク接続を介してアプリケーション・サーバ１３５と通信することもできるということを当業者なら理解するであろう。モニタリング・サーバ１４５は、クライアント１１０とアプリケーション・サーバ１３５との間におけるネットワーク・パス内に存在することが可能であり、またはそのパスの外に存在することも可能である。
【００２７】
図２は、本開示の実施形態と整合する、ＤｏＳ攻撃の際にトラフィックをフィルタリングするために、１つまたは複数のアプリケーション・サーバ１３５を対象としたネットワーク・トラフィックを軽減サービス・プロバイダ１４０へ迂回させる例示的な方法を示す図である。図２において示されているように、正当なクライアント２１０は、アプリケーション・サーバ１３５に正常な要求を行っているが、ボットネットの一部であるさらなるクライアント２２０も、アプリケーション・サーバ１３５に要求を行っている。図２においては、悪意あるクライアント２２０からのトラフィック２２０ａは、太い矢印で示されており、その一方で正当なクライアント２１０からのトラフィック２１０ａは、細い矢印で示されており、これは、トラフィック２２０ａがトラフィック２１０ａよりも著しく重い場合があるということを示すためである。アプリケーション・サーバ１３０上のＤｏＳ攻撃が検出されると、アプリケーション・サーバ１３５へのすべてのトラフィック１２０ｂは、プロキシ・サーバ２４５へ迂回させられることが可能であり、それによって、正当なクライアント２１０および悪意あるクライアント２２０は、もはやインターネット１２０を介してアプリケーション・サーバ１３５との直接の接続１２０ａを確立することはできない。いくつかの実施形態においては、プロキシ・サーバ２４５は、モニタリング・サーバ１４５を運営する同じ軽減サービス・プロバイダ１４０によって運営されることが可能である。その上、特定の実施形態においては、同じ物理サーバが、モニタリング・サーバ１４５およびプロキシ・サーバ２４５の両方の役割を実行することができる。プロキシ・サーバ２４５は、クライアント（たとえば、正当なクライアント２１０および悪意あるクライアント２２０）とアプリケーション・サーバ１３５との間におけるネットワーク・パス内に存在することも可能であり、またはそのパスの外に存在することも可能である。プロキシ・サーバ２４５は、リバース・プロキシ・サーバとして動作することができ、クライアントにとってトランスペアレントであることが可能である。
【００２８】
トラフィック１２０ｂは、いくつかの異なる技法を使用してプロキシ・サーバ２４５へリダイレクトされることが可能である。たとえば、ＩＳＰによって使用される自律システム間ルーティング・プロトコルであるボーダー・ゲートウェイ・プロトコル（「ＢＧＰ」）によって提供される機能を使用して、プロキシ・サーバ２４５は、自分が通信を、アプリケーション・サーバ１３５に関連付けられているＩＰアドレスへ伝送できるということを宣伝することができ、または自分自身では、「ＢＧＰスイング」として知られているプロセスにおいて、そのようなＩＰアドレスを終端させるということを宣伝することができる。ＢＧＰスイングの結果として、トラフィック２１０ａおよびトラフィック２２０ａなど、アプリケーション・サーバ１３５を対象とした通信は、プロキシ・サーバ２４５において終端することができ、それによってプロキシ・サーバ２４５は、アプリケーション・サーバ１３５の代わりに正当なクライアント２１０および悪意あるクライアント２２０と通信すること（典型的には、検出を伴わずに）が可能である。
【００２９】
あるいは、アプリケーション・サーバ１３５またはプロキシ・サーバ２４５のいずれかが、アプリケーション・サーバ１３５によってホストされているドメイン名を、プロキシ・サーバ２４５に割り振られているＩＰアドレスに割り振り直したいという１つまたは複数のドメイン名サービス（「ＤＮＳ」）サーバへの要求を開始することができる。ＤＮＳレコード変更というこのプロセスは、アプリケーション・サーバ１３５および／またはプロキシ・サーバ２４５、またはそれらに関連付けられているエンティティーが、権威あるＤＮＳサーバを動作させているか、またはＤＮＳシステムにおいてその他の主要なもしくは権威ある役割を有している場合には、さらに助長または促進されることが可能である。アプリケーション・サーバ１３５を対象としたトラフィックをプロキシ・サーバ２４５へリダイレクトするために、その他の技法が使用されることも可能であるということを当業者なら理解するであろう。本出願において説明されている技法は、プロキシ・サーバ２４５などのプロキシ・サーバがクライアントとアプリケーション・サーバとの間における通信パス内に常に存在することが可能である「常時オンの」ＤＤｏＳ攻撃軽減サービスというコンテキストにおいて適用されることも可能であるということも、当業者なら理解するであろう。そのケースにおいては、攻撃が検出された場合にトラフィックをプロキシ・サーバへリダイレクトする必要はないと言える。
【００３０】
トラフィック１２０ｂがプロキシ・サーバ２４５へ迂回された後に、プロキシ・サーバ２４５は、そのトラフィックを、正当なクライアント２１０からの通信と、ＤｏＳ参加者などの悪意あるクライアント２２０からの通信とに分類することによって、そのトラフィックをフィルタリングすることができる。すべての正当なトラフィック２４５ａは、アプリケーション・サーバ１３５へ転送されることが可能であり、その一方で、その他のトラフィック２４５ｂは、ブロックされること、分析のために収集されること、および／または破棄されること（アイテム２５０）が可能である。あるいは、悪意があると誤って識別された正当なクライアント２１０へのサービスを拒否することを避けるために、いくつかのまたはすべてのトラフィック２４５ｂは、アプリケーション・サーバ１３５へ転送されること、またはその他の形でサービス提供されること、ただし、たとえば、正当なトラフィック２４５ａよりもはるかに低い優先度でサービス提供されること（「レートリミッティング」として知られているプロセス）が可能である。
【００３１】
いくつかの実施形態においては、プロキシ・サーバ２４５は、より広いＤｏＳ攻撃軽減サービスの一部としてプロキシ・サービスを提供するサードパーティーによって所有または運営されることが可能である。別途所有または運営されている軽減サーバ・システムを採用することの１つの利点は、顧客１３０のサーバ・システムでは耐えられない計算負荷および接続負荷にサードパーティー・サービス・プロバイダなら耐えられるという点であるといえる。たとえば、顧客１３０は、軽減サービスを実行するための別個のプロキシ・サーバを運営するだけのリソースを有していない小企業である場合がある。または、顧客１３０も別個のプロキシ・サーバを運営している場合でさえ、そのようなプロキシ・サーバは、正当性を判定するためにそれぞれの要求クライアントを別々に分析することによる全面的なＤＤｏＳ攻撃の負荷には耐えられない可能性がある。発明のこの態様は、悪意ある要求から正当な要求をフィルタリングするために、攻撃されているサーバまたは攻撃されるエンティティーによって運営されているその他のサーバを装備することに焦点を合わせている従来のシステムと対比されることが可能である。これらのシステムは、フィルタリング・オペレーションそのものが、攻撃されているサーバまたは関連付けられているプロキシ・サーバの所有者を圧倒するのに十分である場合には、失敗する。
【００３２】
図３は、本開示の実施形態と整合する、求められているユーザ対話を遂行するようクライアントに要求することによってＤｏＳ攻撃に対するクライアント側でのアクティブな確認を実行するための方法３００を示す流れ図である。方法３００においては、１つまたは複数のアプリケーション・サーバ（たとえば、アプリケーション・サーバ１３５）のセットと、クライアント（たとえば、正当なクライアント２１０および／または悪意あるクライアント２２０）のセットとの間における直接の通信が無効にされている。アプリケーション・サーバのセットと、クライアントのセットとの間における直接の通信は、セキュリティー・ポリシーに起因して、または検出されたもしくは知覚されたＤｏＳ攻撃に応答して、無効にされる場合がある。直接の通信が無効にされている場合には、クライアント・トラフィックは、クライアントのうちのどれが疑わしいまたは悪意を有しているか、およびどれが疑わしくないまたは正当であるかを識別する目的で、１つまたは複数のプロキシ・サーバ（たとえば、プロキシ・サーバ２４５）のセットへ迂回させられる。とりわけ図３は、アプリケーションレイヤ要求、たとえば、ＨＴＴＰ要求を行ったクライアントにチャレンジすることによってクライアント側でのアクティブな確認を実行するための方法３００を示している。
【００３３】
ステップ３１０において、プロキシ・サーバのセット内の１つのプロキシ・サーバが、クライアント、またはそのクライアントのエージェント、たとえば、そのクライアント上で稼働しているブラウザもしくはアプリケーションなどからの少なくとも１つのＨＴＴＰ要求をインターセプトする。そのインターセプトされたＨＴＴＰ要求は、アプリケーション・サーバのセット内の１つまたは複数のアプリケーション・サーバへ、たとえば、その１つまたは複数のアプリケーション・サーバに関連付けられている宛先ＩＰアドレス、ポート番号、ＵＲＩ、および／またはその他の識別子を介して、宛てられている場合がある。次いでステップ３２０において、プロキシ・サーバは、クライアント側でのアクティブな確認が有効にされているか否かを判定することができる。クライアント側でのアクティブな確認が有効にされているとプロキシ・サーバが判定した場合には、方法３００はステップ３３０へ進む。あるいは、クライアント側でのアクティブな確認が有効にされていないとプロキシ・サーバが判定した場合には、プロキシ・サーバは、少なくとも１つのＨＴＴＰランダムＵＲＩリダイレクトを実行するためにステップ３２５へ進む。クライアントがＨＴＴＰランダムＵＲＩリダイレクトを成功裏に実行したとプロキシ・サーバが判定した場合には、プロキシ・サーバは、クライアント側でのアクティブな確認が有効にされているか否かを判定し、次いでクライアントにクライアント側でのアクティブな確認を受けさせるか、またはインターセプトされた要求を転送し、設定可能な持続時間にわたってクライアントをホワイトリストに登録することができる。クライアントがＨＴＴＰランダムＵＲＩリダイレクトを成功裏に実行しなかったとプロキシ・サーバが判定した場合には、プロキシ・サーバは、インターセプトされた要求に対してブロックまたはレートリミッティングを行い、設定可能な持続時間にわたってクライアントをブラックリストに登録することができる。
【００３４】
ステップ３３０において、プロキシ・サーバは、クライアントがホワイトリストに登録されているか否か、またはブラックリストに登録されているか否かを判定することができる。プロキシ・サーバは、ホワイトリストおよび／またはブラックリストにおいて、クライアントのネットワーク・アドレス（たとえば、ＩＰアドレス）、クライアントに関連付けられている一意の識別子などを調べることができる。代替として、または追加として、プロキシ・サーバは、クライアントがホワイトリストに登録されているかどうか、またはブラックリストに登録されているかどうかを示す、クライアント上に以前に設定されたステータス・クッキーを読み取るよう試みることができる。
【００３５】
クライアントがホワイトリストに登録されている、またはブラックリストに登録されているとステップ３３０においてプロキシ・サーバが判定した場合には、方法３００は、そのクライアントのホワイトリストに登録されている／ブラックリストに登録されているというステータスに基づいて１つまたは複数のアクションを実行するためにステップ３３５へ進む。たとえば、クライアントがホワイトリストに登録されているとプロキシ・サーバが判定した場合には、ステップ３３５においてプロキシ・サーバは、設定可能な持続時間にわたって、インターセプトされたＨＴＴＰ要求、およびそのクライアントからのさらなるすべてのＨＴＴＰ要求をアプリケーション・サーバのセットへ、クライアント側でのアクティブな確認を必要とすることなく、転送することができ、クライアントがブラックリストに登録されているとプロキシ・サーバが判定した場合には、ステップ３３５においてプロキシ・サーバは、設定可能な持続時間にわたって、インターセプトされた要求、およびそのクライアントからのさらなるすべてのＨＴＴＰ要求に対してブロックまたはレートリミッティングを行うことができる。
【００３６】
しかしながら、ステップ３３０において、クライアントがホワイトリストにも登録されておらずブラックリストにも登録されていないとプロキシ・サーバが判定した場合には、方法３００はステップ３４０へ進む。ステップ３４０において、プロキシ・サーバは、クライアントが、インターセプトされた要求への応答の中のクライアント側スクリプト（たとえば、ジャバスクリプト、ＶＢスクリプトなど）に対応できる状態であるか否かを判定することができる。たとえば、クライアントが画像を要求している場合には、そのクライアントが、クライアント側スクリプトを含む応答を予期している可能性は低く、クライアント側でのアクティブな確認を実行するためにその応答の中に含まれている何らかのクライアント側スクリプトを実行する可能性は、さらにいっそう低い。ステップ３４０において、クライアントがクライアント側スクリプトに対応できる状態であるとプロキシ・サーバが判定した場合には、方法３００はステップ３５０へ進む。あるいは、クライアントがクライアント側スクリプトに対応できる状態ではないとプロキシ・サーバが判定した場合には、プロキシ・サーバは、少なくとも１つのＨＴＴＰランダムＵＲＩリダイレクトを実行するためにステップ３４５へ進む。クライアントがＨＴＴＰランダムＵＲＩリダイレクトを成功裏に実行したとプロキシ・サーバが判定した場合には、プロキシ・サーバは、クライアント側でのアクティブな確認が有効なままであるか否かを判定し、次いでクライアントにクライアント側でのアクティブな確認を受けさせるか、またはインターセプトされた要求を転送し、設定可能な持続時間にわたってクライアントをホワイトリストに登録することができる。クライアントがＨＴＴＰランダムＵＲＩリダイレクトを成功裏に実行しなかったとプロキシ・サーバが判定した場合には、プロキシ・サーバは、インターセプトされた要求に対してブロックまたはレートリミッティングを行い、設定可能な持続時間にわたってクライアントをブラックリストに登録することができる。
【００３７】
ステップ３５０において、プロキシ・サーバは、インターセプトされたＨＴＴＰ要求への応答を提供し、その応答の中に１つまたは複数のカスタマイズされたクライアント側スクリプトを埋め込むことができる。それらのクライアント側スクリプトは、プロキシ・サーバによって予期されているフォロースルー・ランダムＵＲＩリダイレクション要求をクライアントが生成するのに必要なランダム・バイトの１つまたは複数の文字列を含むことができる。プロキシ・サーバは、ランダム・バイトの文字列を、インターセプトされたＨＴＴＰ要求および／またはクライアントに関連付けることができる。プロキシ・サーバは、プロキシ・サーバによって提供されたクライアント側スクリプト以外を通じてフォロースルー・ランダムＵＲＩリダイレクション要求を生成することを困難にするために、クライアント側スクリプト内のランダム・バイトの文字列を難読化することができる。クライアント側スクリプトは、インターセプトされたＨＴＴＰ要求から抽出されたＵＲＩの少なくとも一部を含むこともでき、それによってプロキシ・サーバは、そのＵＲＩを格納する必要がなくなる。クライアント側スクリプトは、実行されると、時間の指定されたピリオド内でのユーザ対話を求めることによってクライアントにチャレンジする。たとえば、クライアント側スクリプトは、クライアントによって実行されると、ユーザ対話を求める、たとえば、ＯＫボタンをクリックするようユーザに要求するポップアップ・ボックスをクライアントに提示することができる。求められた対話が時間の指定されたピリオド内に実行された後にのみ、クライアント側スクリプトは、プロキシ・サーバによって予期されているフォロースルー・ランダムＵＲＩリダイレクション要求を生成する。フォロースルー・ランダムＵＲＩリダイレクション要求は、ランダム・バイトの文字列を含むランダム化されたＵＲＩ、および抽出されたＵＲＩをターゲットとすること、または対象とすることが可能である。代替として、または追加として、ステップ３５０においてプロキシ・サーバは、以降でさらに詳しく説明するように、チャレンジ・クッキーを設定するための１つまたは複数の指令を、インターセプトされたＨＴＴＰ要求への応答のヘッダ内に含めることができる。
【００３８】
次いでステップ３６０において、プロキシ・サーバは、クライアントが、求められているユーザ対話を遂行しているか否か、および／またはそのクライアント上に以前に設定されたチャレンジ・クッキーに関して正しい値を提供しているか否かを判定する。クライアントが、たとえば、インターセプトされたＨＴＴＰ要求もしくはクライアントに関連付けられているランダム化されたＵＲＩをターゲットとするフォロースルー・ランダムＵＲＩリダイレクション要求を送信することによって、求められているユーザ対話を指定の時間内に提供する場合、および／またはチャレンジ・クッキー内に格納されている正しい値を含む場合には、ステップ３６５において、プロキシ・サーバは、そのクライアントが疑わしくないまたは正当であると判定し、そのクライアントにオリジナルＵＲＩ  ＨＴＴＰリダイレクトを提供することができ、そのオリジナルＵＲＩ  ＨＴＴＰリダイレクトは、そのクライアントに、インターセプトされたＨＴＴＰ要求を介してそのクライアントによって求められているアプリケーション・サーバに対する別のＨＴＴＰ要求を行わせる。ステップ３６５において、プロキシ・サーバは、設定可能な持続時間にわたってそのクライアントをホワイトリストに登録することもでき、その持続時間中にプロキシ・サーバは、そのクライアントからのその後のすべてのＨＴＴＰ要求を、さらなるクライアント側でのアクティブな確認を必要とすることなく、アプリケーション・サーバへ転送する。
【００３９】
ステップ３６０において、クライアントが、求められているユーザ対話をまだ遂行していないとプロキシ・サーバが判定した場合には、方法３００はステップ３７０へ進むことができ、ステップ３７０中にプロキシ・サーバは、求められているユーザ対話がタイム・アウトしたか否か、すなわち、指定された時間が経過したか否かを判定する。求められているユーザ対話がタイム・アウトしていない場合には、ステップ３７５において、プロキシ・サーバは、事前に設定されたまたはデフォルトの構成に従って、クライアントからの１つまたは複数のさらなるＨＴＴＰ要求に応答することができる。たとえば、プロキシ・サーバは、さらなるＨＴＴＰ要求をアプリケーション・サーバへ転送することによってそれらのＨＴＴＰ要求を渡すこと、クライアント側でのアクティブな確認の結果を保留するさらなるＨＴＴＰ要求をブロックして保持すること、およびさらなるＨＴＴＰ要求をドロップすることなどが可能である。しかしながら、ステップ３６０において、求められているユーザ対話がタイム・アウトしている、および／またはクライアントが、そのクライアント上に以前に設定されたチャレンジ・クッキーに関して正しい値を提供できなかったとプロキシ・サーバが判定した場合には、方法３００はステップ３８０へ進み、ステップ３８０においてプロキシ・サーバは、そのクライアントが疑わしいまたは悪意を有していると判定し、設定可能な持続時間にわたってそのクライアントをブラックリストに登録することができ、その持続時間中にプロキシ・サーバは、そのクライアントからのその後のすべてのＨＴＴＰ要求に対してブロックまたはレートリミッティングを行う。本明細書において説明されている方法３００は例示的なものであるということ、ならびにバリエーションおよび修正が可能であるということが理解できるであろう。順次的なものとして説明されている行為どうしは、並列に実行されることが可能であり、行為どうしの順序は、変更されることが可能であり、行為どうしは、修正または結合されることが可能である。
【００４０】
図４は、本開示の実施形態と整合する、遅延のランダムに設定された持続時間を順守するようクライアントに要求することによってＤｏＳ攻撃に対するクライアント側でのアクティブな確認を実行するための方法４００を示す流れ図である。方法４００においては、１つまたは複数のアプリケーション・サーバのセットと、クライアントのセットとの間における直接の通信が無効にされている。アプリケーション・サーバのセットと、クライアントのセットとの間における直接の通信は、セキュリティー・ポリシーに起因して、または検出されたもしくは知覚されたＤｏＳ攻撃に応答して、無効にされる場合がある。直接の通信が無効にされている場合には、クライアント・トラフィックは、クライアントのうちのどれが疑わしいまたは悪意を有しているか、およびどれが疑わしくないまたは正当であるかを識別する目的で、１つまたは複数のプロキシ・サーバのセットへ迂回させられる。とりわけ図４は、アプリケーションレイヤ要求、たとえば、ＨＴＴＰ要求を行ったクライアントにチャレンジすることによってクライアント側でのアクティブな確認を実行するための方法４００を示している。
【００４１】
ステップ４１０において、プロキシ・サーバのセット内の１つのプロキシ・サーバが、クライアント、またはそのクライアントのエージェントからの少なくとも１つのＨＴＴＰ要求をインターセプトする。そのインターセプトされたＨＴＴＰ要求は、アプリケーション・サーバのセット内の１つまたは複数のアプリケーション・サーバへ、たとえば、その１つまたは複数のアプリケーション・サーバに関連付けられている宛先ＩＰアドレス、ポート番号、ＵＲＩ、および／またはその他の識別子を介して、宛てられている場合がある。次いでステップ４２０において、プロキシ・サーバは、クライアント側でのアクティブな確認が有効にされているか否かを判定することができる。クライアント側でのアクティブな確認が有効にされているとプロキシ・サーバが判定した場合には、方法４００はステップ４３０へ進む。あるいは、クライアント側でのアクティブな確認が有効にされていないとプロキシ・サーバが判定した場合には、プロキシ・サーバは、少なくとも１つのＨＴＴＰランダムＵＲＩリダイレクトを実行するためにステップ４２５へ進む。クライアントがＨＴＴＰランダムＵＲＩリダイレクトを成功裏に実行したとプロキシ・サーバが判定した場合には、プロキシ・サーバは、クライアント側でのアクティブな確認が有効にされているか否かを判定し、次いでクライアントにクライアント側でのアクティブな確認を受けさせるか、またはインターセプトされた要求を転送し、設定可能な持続時間にわたってクライアントをホワイトリストに登録することができる。クライアントがＨＴＴＰランダムＵＲＩリダイレクトを成功裏に実行しなかったとプロキシ・サーバが判定した場合には、プロキシ・サーバは、インターセプトされた要求に対してブロックまたはレートリミッティングを行い、設定可能な持続時間にわたってクライアントをブラックリストに登録することができる。
【００４２】
ステップ４３０において、プロキシ・サーバは、クライアントがホワイトリストに登録されているか否か、またはブラックリストに登録されているか否かを判定することができる。プロキシ・サーバは、ホワイトリストおよび／またはブラックリストにおいて、クライアントのネットワーク・アドレス、クライアントに関連付けられている一意の識別子などを調べることができる。代替として、または追加として、プロキシ・サーバは、クライアントがホワイトリストに登録されているかどうか、またはブラックリストに登録されているかどうかを示す、クライアント上に以前に設定されたステータス・クッキーを読み取るよう試みることができる。
【００４３】
クライアントがホワイトリストに登録されている、またはブラックリストに登録されているとステップ４３０においてプロキシ・サーバが判定した場合には、方法４００は、そのクライアントのホワイトリストに登録されている／ブラックリストに登録されているというステータスに基づいて１つまたは複数のアクションを実行するためにステップ４３５へ進む。たとえば、クライアントがホワイトリストに登録されているとプロキシ・サーバが判定した場合には、ステップ４３５においてプロキシ・サーバは、設定可能な持続時間にわたって、インターセプトされたＨＴＴＰ要求、およびそのクライアントからのさらなるすべてのＨＴＴＰ要求をアプリケーション・サーバのセットへ、クライアント側でのアクティブな確認を必要とすることなく、転送することができ、クライアントがブラックリストに登録されているとプロキシ・サーバが判定した場合には、ステップ４３５においてプロキシ・サーバは、設定可能な持続時間にわたって、インターセプトされた要求、およびそのクライアントからのさらなるすべてのＨＴＴＰ要求に対してブロックまたはレートリミッティングを行うことができる。
【００４４】
しかしながら、ステップ４３０において、クライアントがホワイトリストにも登録されておらずブラックリストにも登録されていないとプロキシ・サーバが判定した場合には、方法４００はステップ４４０へ進む。ステップ４４０において、プロキシ・サーバは、クライアントが、インターセプトされた要求への応答の中の遅延要求に対応できる状態であるか否かを判定することができる。たとえば、クライアントが画像を要求している場合には、そのクライアントが、遅延要求を含む応答を予期している可能性は低く、遅延要求を順守する可能性は、さらにいっそう低い。ステップ４４０において、クライアントが遅延要求に対応できる状態であるとプロキシ・サーバが判定した場合には、方法４００はステップ４５０へ進む。あるいは、クライアントが遅延要求に対応できる状態ではないとプロキシ・サーバが判定した場合には、プロキシ・サーバは、少なくとも１つのＨＴＴＰランダムＵＲＩリダイレクトを実行するためにステップ４４５へ進む。クライアントがＨＴＴＰランダムＵＲＩリダイレクトを成功裏に実行したとプロキシ・サーバが判定した場合には、プロキシ・サーバは、クライアント側でのアクティブな確認が有効なままであるか否かを判定し、次いでクライアントにクライアント側でのアクティブな確認を受けさせるか、またはインターセプトされた要求を転送し、設定可能な持続時間にわたってクライアントをホワイトリストに登録することができる。クライアントがＨＴＴＰランダムＵＲＩリダイレクトを成功裏に実行しなかったとプロキシ・サーバが判定した場合には、プロキシ・サーバは、インターセプトされた要求に対してブロックまたはレートリミッティングを行い、設定可能な持続時間にわたってクライアントをブラックリストに登録することができる。
【００４５】
ステップ４５０において、プロキシ・サーバは、インターセプトされたＨＴＴＰ要求への応答を提供し、その応答の中に遅延要求を含めることができる。その応答は、プロキシ・サーバによって予期されているフォロースルー・ランダムＵＲＩリダイレクション要求をクライアントが生成するのに必要なランダム・バイトの１つまたは複数の文字列を含むことができる。遅延要求は、ランダムに設定された持続時間の経過後にのみクライアントがフォロースルー・ランダムＵＲＩリダイレクション要求を行うことを求める要求または命令を含み、プロキシ・サーバは、ランダムに設定された遅延持続時間を、インターセプトされたＨＴＴＰ要求および／またはクライアントに関連付けることができる。プロキシ・サーバは、ランダム・バイトの文字列を、インターセプトされたＨＴＴＰ要求および／またはクライアントに関連付けることができる。応答は、インターセプトされたＨＴＴＰ要求から抽出されたＵＲＩの少なくとも一部を含むこともでき、それによってプロキシ・サーバは、そのＵＲＩを格納する必要がなくなる。ステップ４５０において、プロキシ・サーバは、以降でさらに詳しく説明するように、チャレンジ・クッキーを設定するための１つまたは複数の指令を、インターセプトされたＨＴＴＰ要求への応答のヘッダ内に含めることもできる。
【００４６】
次いでステップ４６０において、プロキシ・サーバは、クライアントが、遅延要求を順守したか否か、および／またはそのクライアント上に以前に設定されたチャレンジ・クッキーに関して正しい値を提供したか否かを判定する。クライアントが、たとえば、要求された遅延が経過した後に、インターセプトされたＨＴＴＰ要求もしくはクライアントに関連付けられているランダム・バイトの文字列を含む、および／またはチャレンジ・クッキー内に格納されている正しい値を含むフォロースルー・ランダムＵＲＩリダイレクション要求を送信することによって、ランダムに設定された遅延持続時間を求める遅延要求を順守した場合には、ステップ４６５において、プロキシ・サーバは、そのクライアントが疑わしくないまたは正当であると判定し、そのクライアントにオリジナルＵＲＩ  ＨＴＴＰリダイレクトを提供することができ、そのオリジナルＵＲＩ  ＨＴＴＰリダイレクトは、そのクライアントに、インターセプトされたＨＴＴＰ要求を介してそのクライアントによって求められているアプリケーション・サーバに対する別のＨＴＴＰ要求を行わせる。ステップ４６５において、プロキシ・サーバは、設定可能な持続時間にわたってそのクライアントをホワイトリストに登録することもでき、その持続時間中にプロキシ・サーバは、そのクライアントからのその後のすべてのＨＴＴＰ要求を、さらなるクライアント側でのアクティブな確認を必要とすることなく、アプリケーション・サーバへ転送する。
【００４７】
あるいは、クライアントが遅延要求を順守しなかった、および／またはそのクライアント上に以前に設定されたチャレンジ・クッキーに関して正しい値を提供しなかったとプロキシ・サーバがステップ４６０において判定した場合には、方法４００はステップ４７０へ進むことができ、ステップ４７０においてプロキシ・サーバは、そのクライアントが疑わしいまたは悪意を有していると判定し、設定可能な持続時間にわたってそのクライアントをブラックリストに登録することができ、その持続時間中にプロキシ・サーバは、そのクライアントからのその後のすべてのＨＴＴＰ要求に対してブロックまたはレートリミッティングを行う。本明細書において説明されている方法４００は例示的なものであるということ、ならびにバリエーションおよび修正が可能であるということが理解できるであろう。順次的なものとして説明されている行為どうしは、並列に実行されることが可能であり、行為どうしの順序は、変更されることが可能であり、行為どうしは、修正または結合されることが可能である。
【００４８】
さまざまな実施形態においては、図３において示されている方法３００または図４において示されている方法４００の実行中に、プロキシ・サーバは、クライアント上に１つもしくは複数のクッキーを設定すること、および／またはクライアント上に以前に設定された１つもしくは複数のクッキーを読み取ることが可能であり、フォロースルー・ランダムＵＲＩリダイレクション要求を生成するのに必要とされる情報のうちのいくつかは、クライアント上に以前に設定された１つまたは複数のクッキーから生じる場合がある。クッキーのタイプは、（アクティブに確認されているクライアントのための）チャレンジ・クッキー、（ホワイトリストに登録されているクライアントのための）ホワイトリスト・クッキー、（ブラックリストに登録されているクライアントのための）ブラックリスト・クッキーなどを含む。クライアント側スクリプトは、それら自体では、要求を構築するためのすべての必要な情報を含んでいるとは限らない場合があり、そのことによって、攻撃者にとっては、プロキシ・サーバによって予期されているフォロースルー・ランダムＵＲＩリダイレクション要求に至るためには、必要とされる情報を伴うクッキーを保持すること、ならびに必要な操作を実行することの両方が必要となる。さらに、ゲートウェイの背後にいるクライアントがネットワーク内に存在する場合があり、ひいては、そのクライアントの要求におけるソースＩＰアドレスは、クライアントよりもむしろゲートウェイのＩＰアドレスを反映することになる。クッキーを使用することによって、プロキシ・サーバは、ゲートウェイの背後にいるクライアントを一意に識別することができる。
【００４９】
さまざまな実施形態によれば、プロキシ・サーバは、クライアントが正当である可能性を判定するために、インターセプトされたＨＴＴＰ要求へのＨＴＴＰ応答を介して複数クッキー設定指令チャレンジを実行することができる。プロキシ・サーバは、応答のヘッダ内に複数のクッキー設定指令を含めることによってクライアントにチャレンジし、それらのクッキー設定指令は、それらの指令をクライアントが確認するか否かに応じて、そのクライアント上のチャレンジ・クッキーに異なる値を設定する。プロキシ・サーバは、そのクライアントが正当であるまたは悪意を有している可能性を判定することができる。なぜなら、ほとんどの正当なクライアント（たとえば、よく知られているブラウザ）は、クッキー設定指令を確認するが、多くのあまり洗練されていないクライアント（たとえば、ボットネット）は、クッキー設定指令を確認しないからである。クッキー設定指令確認の例は、有効期限確認、ドメイン確認などを含む。有効期限確認を実行する場合には、正当なクライアントは、無効な有効期限（たとえば、既に経過した有効期日／時刻）を伴うクッキーを設定しようと試みるあらゆるクッキー設定指令を破棄する可能性が高い。ドメイン確認を実行する場合には、正当なクライアントは、要求されているドメインにマッチしないドメインを指定するあらゆるクッキー設定指令を破棄する可能性が高い。
【００５０】
クライアントがまだホワイトリストに登録されていないまたはブラックリストに登録されていないと想定すると、プロキシ・サーバは、別々の値を伴うチャレンジ・クッキーを設定しようと試みる複数のクッキー設定指令（それらのうちの１つの指令は、正しい値を設定し、その一方で残りの（１つまたは複数の）指令は、１つまたは複数の誤った値を設定する）をクライアントに提供することによって、インターセプトされたＨＴＴＰ要求に応答することができる。クライアントが、誤った値を伴う（１つまたは複数の）クッキー設定指令を確認および破棄して、正しい値を伴うチャレンジ・クッキーを設定することができる場合には、プロキシ・サーバは、そのクライアントが正当であると判定して、そのクライアントをホワイトリストに登録することができる。あるいは、クライアントが、誤った値を伴う（１つまたは複数の）クッキー設定指令を確認および破棄することができないか、またはそうしようとせず、代わりに、誤った値のうちの１つを伴うチャレンジ・クッキーを設定した場合には、プロキシ・サーバは、そのクライアントが悪意を有するかまたはその他の形で不正であると判定して、そのクライアントをブラックリストに登録することができる。
【００５１】
たとえば、クライアントによって「ｗｗｗ．ｔｅｓｔ．ｃｏｍ」に対して行われたＨＴＴＰ要求をインターセプトした後に、プロキシ・サーバは、ＨＴＴＰ応答を提供することができ、そのＨＴＴＰ応答は、そのＨＴＴＰ応答のヘッダ内に、クライアント上にチャレンジ・クッキーを設定するための３つのクッキー設定指令を含んでいる。第１のクッキー設定指令は、誤った値を伴うクッキーを設定し、その指令のドメイン属性は、「ｗｗｗ．ｔｅｓｔ．ｃｏｍ」に適切に設定されており、有効期限属性は、既に経過した日付／時刻に不適切に設定されている。第２のクッキー設定指令は、正しい値を伴うクッキーを設定し、その指令のドメイン属性は、「ｗｗｗ．ｔｅｓｔ．ｃｏｍ」に適切に設定されており、有効期限属性は、まだ経過していない日付／時刻に適切に設定されている。第３のクッキー設定指令は、誤った値を伴うクッキーを設定し、ドメイン属性は、「ｉｍａｇｅ．ｔｅｓｔ．ｃｏｍ」に不適切に設定されており、有効期限属性は、まだ経過していない日付／時刻に適切に設定されている。クライアントは、それらのクッキー設定指令のうちの１つまたは複数に基づいて、クッキー設定指令を無視すること、またはチャレンジ・クッキーを設定することが可能である。クライアントが、正しい値を伴うチャレンジ・クッキーを、たとえば第２のクッキー設定指令に基づいて設定したとプロキシ・サーバが検証した場合には、プロキシ・サーバは、そのクライアントがクッキー設定指令を適切に確認しており、ひいては正当なクライアントである可能性が高いと判定することができる。あるいは、クライアントが、誤った値を伴うチャレンジ・クッキーを、たとえば第１または第３のクッキー設定指令に基づいて設定したとプロキシ・サーバが判定した場合には、プロキシ・サーバは、そのクライアントがクッキー設定指令を適切に確認できておらず、ひいては悪意あるクライアントである可能性が高いと判定することができる。たとえば、あまり洗練されていないクライアント（たとえば、ボットネット）は、単純に第１のクッキー設定指令に基づいてチャレンジ・クッキーを設定して、第２および第３のクッキー設定指令を無視する場合があり、または単純に３つすべてのクッキー設定指令に基づいてチャレンジ・クッキー設定して、続いてチャレンジ・クッキーの値を順次設定し直し、最終的には第３のクッキー設定指令に基づいてチャレンジ・クッキーの値を設定する場合がある。
【００５２】
図５は、本開示の実施形態と整合するコンピュータ・システム５００を示している。一般に、ＤｏＳ攻撃軽減システムにおけるプロキシ・サーバ・システム（たとえば、プロキシ・サーバ２４５）の実施形態は、パーソナル・コンピュータ、サーバ、ワークステーション、埋め込みシステム、多機能デバイス、またはそれらの組合せなど、さまざまなコンピュータ・システムにおいて実現されることが可能である。プリンタ・ドライバの特定の実施形態がコンピュータ・プログラムとして埋め込まれることが可能である。そのコンピュータ・プログラムは、アクティブおよび非アクティブの両方のさまざまな形態で存在することが可能である。たとえば、そのコンピュータ・プログラムは、ソース・コード、オブジェクト・コード、実行可能コード、もしくはその他のフォーマットのプログラム命令から構成されている（１つもしくは複数の）ソフトウェア・プログラム、（１つもしくは複数の）ファームウェア・プログラム、またはハードウェア記述言語（「ＨＤＬ」）ファイルとして存在することが可能である。上記のうちのいずれも、圧縮された形態または圧縮されていない形態でコンピュータ可読メディア（ストレージ・デバイスおよび信号を含む）の上で具体化されることが可能である。しかしながら、説明の目的で、システム５００は、当業者によく知られている汎用コンピュータとして示されている。次いで、システム５００内に含まれることが可能であるコンポーネントの例について説明する。
【００５３】
示されているように、システム５００は、少なくとも１つのプロセッサ５０２、キーボード５１７、ポインティング・デバイス５１８（たとえば、マウス、タッチパッドなど）、ディスプレイ５１６、メイン・メモリ５１０、入力／出力コントローラ５１５、およびストレージ・デバイス５１４を含むことができる。ストレージ・デバイス５１４は、たとえば、ＲＡＭ、ＲＯＭ、フラッシュ・メモリ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、もしくはその他の光ディスク・ストレージ、磁気ディスク・ストレージもしくはその他の磁気ストレージ・デバイス、または、命令もしくはデータ構造の形態の所望のプログラム・コードを搬送もしくは格納するために使用されることが可能な、およびコンピュータによってアクセスされることが可能なその他の任意のメディアを含むことができる。プリンタ・ドライバのコンピュータ・プログラムの実施例のコピーが、たとえばストレージ・デバイス５１４上に格納されることが可能である。システム５００は、プリンタ（図示せず）など、さらなる入力／出力デバイスを備えることも可能である。システム５００のさまざまなコンポーネントは、システム・バス５１２または類似のアーキテクチャーを通じて通信を行う。加えて、システム５００は、オペレーティング・システム（ＯＳ）５２０を含むことができ、オペレーティング・システム（ＯＳ）５２０は、オペレーション中にはメモリ５１０内に常駐する。システム５００は、複数のプロセッサ５０２を含むことができるということを当業者なら認識するであろう。たとえば、システム５００は、同じプロセッサの複数のコピーを含むことができる。あるいは、システム５００は、さまざまなタイプのプロセッサの異種混合を含むこともできる。たとえば、システム５００は、１つのプロセッサをプライマリー・プロセッサとして、およびその他のプロセッサをコプロセッサとして使用することができる。別の例に関しては、システム５００は、１つまたは複数のマルチコア・プロセッサ、および１つまたは複数のシングル・コア・プロセッサを含むことができる。したがって、システム５００は、プロセッサのセット（たとえば、プロセッサ５０２）にわたって任意の数の実行コアを含むことができる。キーボード５１７、ポインティング・デバイス５１８、およびディスプレイ５１６に関しては、これらのコンポーネントは、当業者によく知られているコンポーネントを使用して実現されることが可能である。その他のコンポーネントおよび周辺機器がシステム５００内に含まれることが可能であるということも当業者なら認識するであろう。
【００５４】
メイン・メモリ５１０は、システム５００のプライマリー・ストレージ・エリアとして機能し、プロセッサ５０２上で稼働するアプリケーション（バーコード印刷システム内のプリンタ・ドライバなど）によってアクティブに使用されるデータを保持する。アプリケーションとは、ランタイム中に特定のタスクのセットを実行するようシステム５００に指示するためのコンピュータ命令のセットをそれぞれが含む複数のソフトウェア・プログラムであるということ、および「アプリケーション」という用語は、本教示の実施形態によるアプリケーション・ソフトウェア、アプリケーション・プログラム、デバイス・ドライバ、および／またはプログラムと交換可能に使用されることが可能であるということを当業者なら認識するであろう。メモリ５１０は、ランダム・アクセス・メモリ、または以降で説明されているようなその他の形態のメモリとして具現化されることが可能であり、それらは、当業者によく知られている。
【００５５】
ＯＳ５２０は、システム５００内のハードウェアおよびシステム・オペレーションの直接のコントロールおよび管理を担当するルーチンおよび命令の統合された集合体である。加えて、ＯＳ５２０は、アプリケーション・ソフトウェアおよびデバイス・ドライバを稼働させるための基礎を提供する。たとえば、ＯＳ５２０は、リソースの割り当て、スケジューリング、入力／出力コントロール、およびメモリ管理などのサービスを実行することができる。ＯＳ５２０は、主にソフトウェアであることが可能であるが、部分的なまたは完全なハードウェア実装態様およびファームウェアを含むこともできる。本教示の原理と整合するオペレーティング・システムのよく知られている例としては、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（たとえば、ＷＩＮＤＯＷＳ  ＣＥ、ＷＩＮＤＯＷＳ  ＮＴ、ＷＩＮＤＯＷＳ  ２０００、ＷＩＮＤＯＷＳ  ＸＰ、およびＷＩＮＤＯＷＳ  ＶＩＳＴＡ）、ＭＡＣ  ＯＳ、ＬＩＮＵＸ（登録商標）、ＵＮＩＸ（登録商標）、ＯＲＡＣＬＥ  ＳＯＬＡＲＩＳ、ＯＰＥＮ  ＶＭＳ、およびＩＢＭ  ＡＩＸが含まれる。
【００５６】
前述の説明は、例示的なものであり、当業者なら、構成および具現化におけるバリエーションを想起することができる。たとえば、本明細書において開示されている実施形態に関連して説明されているさまざまな例示的なロジック、論理ブロック、モジュール、および回路は、汎用プロセッサ（たとえば、プロセッサ５０２）、特定用途向け集積回路、フィールド・プログラマブル・ゲート・アレイもしくはその他のプログラマブル・ロジック・デバイス、ディスクリート・ゲートもしくはトランジスタ・ロジック、ディスクリート・ハードウェア・コンポーネント、または、本明細書において説明されている機能を実行するように設計されているそれらの任意の組合せとともに実現または実行されることが可能である。汎用プロセッサは、マイクロプロセッサであることが可能であるが、代替形態においては、そのプロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態マシンであることが可能である。プロセッサは、コンピューティング・デバイスの組合せ、たとえば、マイクロプロセッサ、複数のマイクロプロセッサ、またはその他の任意のそのような構成として実現されることも可能である。
【００５７】
１つまたは複数の例示的な実施形態においては、説明されている機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて具現化されることが可能である。ソフトウェアでの実装形態に関しては、本明細書において説明されている技法は、本明細書において説明されている機能を実行するモジュール（たとえば、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェア・パッケージ、クラスなど）を用いて実装されることが可能である。モジュールは、情報、データ、引数、パラメータ、またはメモリ・コンテンツを渡すことおよび／または受信することによって、別のモジュールまたはハードウェア回路に結合されることが可能である。情報、引数、パラメータ、データなどは、メモリを共有すること、メッセージを渡すこと、トークンを渡すこと、ネットワーク伝送などを含む任意の適切な手段を使用して、渡されること、転送されること、または送信されることが可能である。ソフトウェア・コードは、メモリ・ユニット内に格納されてプロセッサによって実行されることが可能である。メモリ・ユニットは、プロセッサ内に、またはプロセッサの外部に実装されることが可能であり、後者のケースにおいては、当技術分野において知られているようなさまざまな手段を介してプロセッサに通信可能に結合されることが可能である。
【００５８】
ソフトウェアにおいて実現される場合には、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読メディア上に格納されること、またはコンピュータ可読メディアを介して伝送されることが可能である。コンピュータ可読メディアは、１つの場所から別の場所へのコンピュータ・プログラムの転送を容易にする任意のメディアを含む有形の非一時的なコンピュータ・ストレージ・メディアおよび通信メディアの両方を含む。ストレージ・メディアは、コンピュータによってアクセスされることが可能である任意の利用可能な有形の非一時的なメディアであることが可能である。限定ではなく、例として、そのような有形の非一時的なコンピュータ可読メディアは、ＲＡＭ、ＲＯＭ、フラッシュ・メモリ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、もしくはその他の光ディスク・ストレージ、磁気ディスク・ストレージもしくはその他の磁気ストレージ・デバイス、または、所望のプログラム・コードを命令もしくはデータ構造の形態で搬送もしくは格納するために使用されることが可能な、かつコンピュータによってアクセスされることが可能なその他の任意のメディアを含むことができる。ディスク（ｄｉｓｋ）およびディスク（ｄｉｓｃ）は、本明細書において使用される際には、ＣＤ、レーザー・ディスク（ｌａｓｅｒ  ｄｉｓｃ）、光ディスク（ｏｐｔｉｃａｌ  ｄｉｓｃ）、ＤＶＤ、フレキシブル・ディスク（ｆｌｏｐｐｙ  ｄｉｓｋ）、およびブルーレイ・ディスク（Ｂｌｕ−ｒａｙ（登録商標）  ｄｉｓｃ）を含み、ディスク（ｄｉｓｋ）は通常、データを磁気的に再生し、その一方でディスク（ｄｉｓｃ）は、レーザーを用いてデータを光学的に再生する。また、いかなる接続も、コンピュータ可読メディアと呼ばれることは適切である。たとえば、同軸ケーブル、光ファイバ・ケーブル、ツイスト・ペア、デジタル・サブスクライバー・ライン（ＤＳＬ）、または、赤外線、ラジオ波、およびマイクロ波などのワイヤレス・テクノロジーを使用して、ウェブサイト、サーバ、またはその他のリモート・ソースからソフトウェアが送信される場合には、その同軸ケーブル、光ファイバ・ケーブル、ツイスト・ペア、ＤＳＬ、または、赤外線、ラジオ波、およびマイクロ波などのワイヤレス・テクノロジーは、メディアの定義内に含まれる。上記の組合せも、コンピュータ可読メディアの範囲内に含まれる。
【００５９】
単数であるまたは統合されているとして説明されているリソースは、一実施形態においては、複数であることまたは分散されていることが可能であり、複数であるまたは分散されているとして説明されているリソースは、複数の実施形態においては、結合されることが可能である。したがって本教示の範囲は、添付の特許請求の範囲によってのみ限定されることを意図されている。本発明は、特定の実施形態に関連して説明されているが、多くの修正が可能であるということを当業者なら認識するであろう。たとえば、プロキシ・サーバは、本明細書において言及されていないさらなる機能を有することができる。加えて、本開示の実施形態は、専用のコンポーネント、および／またはプログラマブル・プロセッサ、および／またはその他のプログラム可能なデバイスの任意の組合せを使用して実現されることが可能である。上述の実施形態は、特定のハードウェア・コンポーネントおよびソフトウェア・コンポーネントを参照することがあるが、ハードウェア・コンポーネントおよび／またはソフトウェア・コンポーネントのさまざまな組合せが使用されることも可能であるということ、ならびにハードウェアにおいて実現されるものとして説明されている特定のオペレーションは、ソフトウェアにおいて実現されることも可能であり、またはその逆もまた同様であるということを当業者なら理解するであろう。
【図１】
2015109650.tif 000003
【図２】
2015109650.tif 000004
【図３】
2015109650.tif 000005
【図４】
2015109650.tif 000006
【図５】
2015109650.tif 000007