進化する攻撃環境にNGINX App Protect Denial of Serviceが適応する仕組み

NGINX | 2021年7月06日

日常生活のさまざまな場面でオンライン化が進むなか、サイバー攻撃者も、私たちが利用するアプリのサービスレベルを低下させようとする動きを強めています。その動機は、報復、被害企業の株価操作、セキュリティチームの注意をデータ侵害からそらすための陽動など、多岐にわたります。

以前の「ブログ記事」では、ネットワーク層とトランスポート層(レイヤー3および4)でTCP/UDP接続要求を大量に送り付け、サーバーで利用可能な帯域幅を枯渇させる大規模なサービス拒否(DoS)攻撃や分散型DoS(DDoS)攻撃に対し、かつてセキュリティチームが新たな防御策を継続的に開発しなければならなかった経緯を説明しました。現在、攻撃者は新たな手段を加えています。それは、HTTPリクエストやAPI呼び出しを使用してアプリケーション層(レイヤー7)のリソースを枯渇させるDoS攻撃やDDoS攻撃です。

ネットワーク攻撃やボリューム型攻撃に対する従来のDoS防御は、Layer 7攻撃には効果がありません。アプリケーションレベルでは、悪意のあるリクエストが正規のリクエストと同じように見えることが多いためです。さらに、Layer 7のHTTP攻撃は、ネットワークレベルの攻撃よりもはるかに低いリクエストレートと少ないリクエスト量でも被害をもたらす可能性があります。まったく新しい一連の要件に対応するには、Layer 7のDoS防御により高い感度が求められます。

  • 攻撃と通常のトラフィックパターンの識別
  • 負荷がかかった状態でのサーバーの健全性評価
  • 攻撃がいつ始まり、すでに終了しているかどうかを判断する
  • 正規ユーザーに影響を与えずに攻撃を緩和する
  • アプリの動作の変化が、攻撃によるものか、アプリ機能の更新によるものかを判定
  • 検知の有効性を損なうことなく、長期化する攻撃に耐える

NGINX App Protect Denial of Service(DoS)は、これらすべての課題に対応し、効率的で導入しやすいゼロデイ保護と、適応型のゼロタッチポリシー設定を実現します。

NGINX App Protect DoSが適応して攻撃を自動的に阻止する仕組み

NGINX App Protect DoSは、複数のステップからなるプロセスを使用して、レイヤー7 DoS攻撃を検知し、緩和します。

  1. 統計的なサイトモデルで通常の動作を把握
  2. サービスの稼働状態を確認
  3. 異常を検知
  4. 悪意のあるアクターとリクエストパターンを特定
  5. 多層防御で攻撃を緩和

統計的サイトモデルによる典型的な挙動の把握

このプロセスの最初のステップでは、サイトが攻撃を受けていないことが確認できている期間にユーザーとアプリケーションの挙動を把握し、統計的サイトモデルを作成します。このモデルは、典型的な挙動のベースラインを捉えます。NGINX App Protect DoSは、アプリケーションのデプロイ状況を包括的に把握できるよう、ユーザーとアプリケーションに関する320のメトリクスを追跡します。また、トラフィックを監視しながら、統計的サイトモデルを動的に更新します。これにより、システムのしきい値を手動で調整する必要がなくなると同時に、時間の経過とともに必然的に生じるトラフィックパターンの変化がNGINX App Protect DoSで確実に考慮されます。

追跡対象のメトリクスの一種は、HTTPリクエストの特性に関するものです。これには、HTTPメソッド、User-Agentヘッダーの値、図に示すその他の特性が含まれます。

HTTPリクエストの特性(メソッド、User-Agentヘッダーの値、その他6項目)ごとの値の割合を示す円グラフ

サービスの正常性の確認

多くのレイヤー7 DoS緩和ツールは、クライアントのトラフィックパターンだけに注目します。攻撃検知の精度を高めるため、NGINX App Protect DoSでは、サービスの健全性も能動的にチェックするよう設定できます。応答時間やドロップされたリクエストの割合など、複数のサーバーパフォーマンス指標を追跡します。これらの指標値の悪化は、攻撃などが原因でアプリケーションが「高負荷状態」にある可能性を示します。サーバー指標の追跡には、もう1つ利点があります。NGINX App Protect DoSが攻撃の進行中と判断すると、ヘルスチェックへの応答パターンから、攻撃の開始時点を特定しやすくなります。

異常の検出

NGINX App Protect DoSは、サイトの統計モデルからの逸脱とサーバー応答の変化(設定されている場合)に基づいて攻撃が進行中であると判断すると、サイトの統計モデルの更新を停止し、現在のメトリック値が確立済みのベースラインとどのように異なるかを分析します。この差異は、グローバルな異常を示している可能性があります。

悪意のあるアクターとリクエストパターンの特定

続いて、NGINX App Protect DoSは並行して実行される2つのプロセスを開始します。

  1. 個々のユーザーの挙動を分析し、異常を引き起こした、または異常の発生に関与したユーザーを検出します。NGINX App Protectは、まずすべてのユーザーを疑わしい対象として扱い、その挙動を分析します。すべてのユーザーが攻撃者である可能性は低いものの、全ユーザーの挙動を測定することで、NGINX App Protectは統計的な全体像を作成し、攻撃に関与したユーザーと関与していないユーザーを明らかにできます。検出された悪意のあるユーザーは、そのIPアドレスまたはリクエスト内の「X-Forwarded-For」ヘッダーを使用して識別されます。
  2. 正規ユーザーをブロックすることなく攻撃トラフィックの特徴を記述するルールのリスト、すなわちゼロデイ攻撃から保護するためのリアルタイムシグネチャを生成します。過去の攻撃時に生成されたシグネチャは再利用できます。生成されたシグネチャは、次の例のように、攻撃に関連するHTTP属性を特定します。
http.request.method eq GET and http.user_agent contains Chrome and http.uri_parameters eq 6 and http.accept_header_exists eq false and 
http.headers_count eq 7

多層防御による攻撃の緩和

Layer 7攻撃に対する防御の主な目的は、被害が発生する前に攻撃を検知することです。

次の図に示すように、保守的または標準的な緩和戦略を設定できます。どちらの戦略でも、第1の防御層では、前の手順でIPアドレスと「X-Forwarded-For」ヘッダーによって特定された悪意のあるアクターからのリクエストをブロックします。次の防御層では、前の手順で生成されたシグネチャに一致するリクエストをブロックします。

最後に、標準の緩和戦略を設定している場合、NGINX App Protect DoSが最初の2層の防御では不十分と判断すると、短時間にわたってグローバルレート制限を適用します。

NGINX App Protect DOSは、攻撃に対する多層防御を提供します。まず保守的な緩和策(悪意のあるIPアドレスと一致するシグネチャをブロック)を適用し、必要に応じて標準の緩和策(レート制限)を適用します

攻撃緩和時の誤検知を最小限に抑える

NGINX App Protect DoSがグローバルレート制限を適用すると、正規ユーザーからのリクエストがブロックされる場合があります。これは誤検知です。一般的なDoS攻撃は、人間が直接実行するのではなく、ボットネットコントローラー(感染したコンピューター上のマルウェア)が実行するスクリプトによって行われます。NGINX App Protect DoSは、この特性に基づいて誤検知を減らすことができます。Webブラウザーとは異なり、このような単純なスクリプトの多くはHTTPリダイレクトを適切に処理できず、JavaScriptを処理できるものはさらに限られます。NGINX App Protect DoSは、スクリプトとブラウザーのこうした機能の違いを利用して、どちらが疑わしいトラフィックを生成しているかを判別できます。

そのため、NGINX App Protect DoSは、すべてのクライアントからのリクエストをレート制限する代わりに、まずHTTPリダイレクトを送信し、次に処理対象となるJavaScriptの短いコードを送信します。スクリプト化されたボットは正常に応答できませんが、ブラウザは応答できるため、NGINX App Protect DoSはブラウザのトラフィックを通過させながら、スクリプトからのトラフィックをブロックできます。

適応型学習は多数の誤検知を引き起こす可能性があるため、一部のユーザーがその利用に不安を感じることは認識しています。しかし、F5では、これがレイヤー7 DoS攻撃を緩和する最も効果的な方法であることを確認しています。NGINX App Protect DoSは、ユーザー行動の分析、サービスの健全性チェック、緩和策の有効性測定という複数のアプローチを組み合わせることで、誤検知を低減します。これら3つのアプローチを組み合わせることで、攻撃に対応して手動で設定を変更することなく、包括的な可視性と保護を実現します。

WAFがあるのに、なぜレイヤー7 DoS対策が必要なのか?

WAFですでにボット対策を行っているのに、なぜレイヤー7 DoS対策が必要なのかと疑問に思われるかもしれません。レイヤー7 DDoS攻撃は通常ボットによって実行されますが、その目的は他のボット活動とは異なります。一般的なボットはサービスを妨害せずに情報を取得しようとするのに対し、レイヤー7 DoS攻撃とDDoS攻撃は、まさにサービスの妨害を目的としています。

もう1つの違いは、標準的なボット対策ツールが「良性ボット」と「悪性ボット」の識別を試みる点です。これは難しい作業であり、誤検知を避けるには通常、人による監視が必要です。一方、NGINX App Protect DoSは、トラフィックがボットによるものか、別の仕組みによるものかを問題にしません。振る舞いに基づいて、攻撃者と正規ユーザーを識別することに重点を置いています。NGINX App Protect DoSは、ボットがレイヤー7 DoS攻撃に関与していると判断した場合にのみボット対策技術を使用するため、標準的なボット対策ソフトウェアと比べて誤検知を大幅に削減できます。さらに、NGINX App Protect DoSの緩和手法はCPU効率に優れているため、レイヤーDoS攻撃が続いている間もアプリを保護し続けることができます。

まとめ

NGINX App Protect DoSは、ユーザーとアプリの挙動に関する320以上の指標を追跡し、多因子統計モデルを構築することで、可能な限り高精度な保護を実現します。独自のアルゴリズムにより、誤検知を大幅に削減します。これらの機能により、個々の攻撃リクエストが完全に正規のものに見え、単一の攻撃者が生成するトラフィック量が正規ユーザーの平均を下回る場合もある、高度に分散されたDoS攻撃を緩和できます。NGINX App Protect DoSは、適応型テクノロジーにより、現在の攻撃だけでなく、今後進化する攻撃からも最新のインフラストラクチャを保護します。

DoS対策を確実にする方法について詳しくは、ソリューション概要をご覧ください。以下の関連記事も併せてご覧ください。

NGINX App Protect DoSを実際にお試しください。30日間の無料トライアルを今すぐ開始するか、ユースケースについてご相談ください。


共有

関連するブログ記事

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
NGINX | 2024/01/18

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する

OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
NGINX | 2023/05/31

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正

Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
NGINX | 2023/02/09

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法

Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINX | 2022/05/24

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング

NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
NGINX | 2018/08/17

SELinuxでNGINXおよびNGINX Plusを使用する

Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。

NGINX PlusによるAWS Auto Scalingグループの負荷分散
NGINX | 2017/03/06

NGINX PlusによるAWS Auto Scalingグループの負荷分散

新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります