DDoS攻撃との戦いは変化し続けています。2023年DDoS攻撃トレンドレポートでは、F5 Labsが過去3年間の分散型サービス拒否(DDoS)攻撃に関する最新データを分析しました。その結果、攻撃者は依然として複雑なマルチベクトルDDoS攻撃を使用している一方で、より純粋なアプリケーション層(Layer 7)攻撃を仕掛ける傾向も強まっていることが明らかになりました。2022年だけでも、Layer 7攻撃の発生率は165%増加しました。

一般に、攻撃者は、Webサイトの運用妨害や標的への恐喝など、目的を達成するために最も容易な手段を選びます。レイヤー7攻撃の増加は、ボリューム型またはプロトコル型の手法だけでDDoS攻撃を仕掛けることが難しくなり、アプリケーション層攻撃の方がより効果的になっている可能性を示しています。
eBFとXDPによるモダンアプリの保護
DDoS攻撃からアプリケーションを防御するには、可能な限り最新技術を活用し、アプリケーションの可用性を維持できる可能性を最大限に高めること(そしてユーザーの満足度を保つこと)が重要です。extended Berkeley Packet Filter(eBPF)とeXpress Data Path(XDP)を組み合わせた技術は2014年から存在していますが、マイクロサービスとクラウドネイティブアーキテクチャの採用拡大に伴い、現在、開発者、SRE、運用担当者の間で急速に普及しています。
eBPF
eBPFはLinuxカーネル内のデータリンク層仮想マシン(VM)であり、ユーザーはプログラムを安全かつ効率的に実行できます。また、カーネルのソースコードを変更したり、カーネルモジュールを追加したりすることなく、実行時にカーネルの機能を拡張できます。eBPFはイベント駆動型で、Linuxホスト上の特定のアクティビティを検出し、所定のアクションを実行します。このテクノロジーは、マイクロサービスとエンドユーザー間の接続やトランザクションをトレースできるため、アプリとアプリサービスのフルスタックを可視化します。利用可能なデータは非常に広範です。高度なオブザーバビリティのニーズに対応し、ネットワークトラフィック管理とランタイムセキュリティの要件を分析できるほか、本質的に効率的な設計を活用してコンピューティングコストを削減できます。
eBPFテクノロジーの概要については、F5 DevCentralの動画「eBPFとは?」をご覧ください。
XDP
XDPには、高性能なネットワーク処理を実現できるという利点があります。ユーザー空間プログラムからネットワークパケットデータを直接読み書きし、パケットがカーネルレベルに到達する前に、その処理方法を決定できます。この技術により、開発者はLinuxカーネル内のネットワークデバイスドライバーによって実装された低レベルのフックにeBPFプログラムをアタッチできます。
NGINX App Protect DoSはeBPFをどのように活用するのか
NGINX App Protect DoSは、NGINX PlusおよびNGINX Ingress Controller上で動作する、高度な振る舞いベースのレイヤー7 DDoS緩和ソリューションです。HTTPおよびHTTP/2アプリを、SlowlorisやHTTP Floodなどの攻撃から保護します。つまり、NGINX App Protect DoSは、単純なネットワークDDoSソリューションでは検出できないアプリケーションレイヤー攻撃から保護します。

NGINX App Protect DoSと併用することで、eBPFはDDoS攻撃の吸収能力を大幅に向上させる可能性があります。NGINX App Protect DoSは、多層型ソリューションの一部としてeBPF(NGINX Ingress Controller自体では利用不可)を使用します。送信元IPアドレスのみ、またはTLSフィンガープリンティングとの組み合わせによって悪意のあるアクターを特定し、そのトラフィックをブロックすることで、緩和処理を高速化します。
次に、NGINX App Protect DoSが次の3つのフェーズで動作する基本的な仕組みを見ていきます。異常検知、動的なルール作成と適応学習、ルールの適用です。
異常検知
NGINX App Protect DoSは、保護対象のアプリケーションを継続的に監視し、機械学習を使用してアプリケーションとクライアントの動作に関する統計的なサイトモデルを構築します。トラフィックをリアルタイムで観測し、300を超えるHTTPリクエストメトリクスを追跡することで、アクティビティとパフォーマンスの包括的なベースラインを常に最新の状態に保ちます。アプリケーショントラフィックを受動的に監視するだけでなく、アプリケーションのアクティブヘルスチェックも実行し、応答時間やドロップされたリクエストなどのメトリクスを監視します。
アプリケーションがレイヤー7 DDoS攻撃を受けると、アプリケーションの応答時間(またはエラー率)が学習済みモデルから逸脱し、アプリケーション保護システムが作動します。
動的なルール作成と適応学習
異常を検知すると、NGINX App Protect DoSは悪意のあるトラフィックを識別してブロックするルールを動的に作成します。悪意のある攻撃者をブロックしながら正規ユーザーがアプリケーションにアクセスできるようにするため、クライアントの行動を統計的に把握し、攻撃に関与しているユーザーと関与していないユーザーを識別します。
攻撃をブロックする動的シグネチャを導入するだけでなく、NGINX App Protect DoSは緩和策の有効性を継続的に測定し、適応学習を適用することで、堅牢なアプリケーションセキュリティを常時提供し、ゼロデイ攻撃をブロックします。攻撃の原因となっているクライアントとリクエストを特定すると、そのトラフィックを拒否するルールを作成します。
NGINX App Protect DoSは、以下を含む多層防御戦略を実装しています。
- IPアドレスまたはTLSフィンガープリントに基づく悪意のある攻撃者のブロック
- 攻撃シグネチャに基づく不正なリクエストのブロック
- グローバルレート制限の適用
これら3つの緩和策は、正規ユーザーに影響を与えることなく、攻撃者を可能な限りブロックできるよう段階的に適用されます。ただし、多くの場合、ブロック処理の大半は、初期段階のIPアドレスとTLSフィンガープリントの組み合わせによるブロック、またはIPアドレスのみによるブロックで行われます。幸い、これらはまさにeBPFプログラムで効果的に適用できるルールタイプです。
ルールの適用
NGINX App Protect DoSは、作成されたルールを受信アプリケーショントラフィックに適用し、悪意のあるリクエストをブロックします。すべてのアプリケーショントラフィックは、NGINX Plusプロキシによってバックエンド(またはアップストリーム)アプリケーションにプロキシされるため、ブロックルールに一致するリクエストは破棄され、バックエンドアプリケーションには転送されません。
NGINX Plusは高性能なプロキシですが、攻撃と緩和ルールによって生じる追加のワークロードが、NGINXを実行しているプラットフォームで利用可能なリソースを圧迫する可能性があります。そこで役立つのがeBPFです。カーネル内でIPアドレスのみに基づくブロックを適用するか、IPアドレスとTLSフィンガープリントに基づくブロックを組み合わせることで、悪意のあるトラフィックをトランスポート層(レイヤー4)の早い段階で評価し、ブロックできます。これは、ユーザー空間で動作するNGINXによって処理する場合よりもはるかに効率的です。
サポート対象のプラットフォームでは、NGINX App Protect DoSが送信元IPアドレスまたはTLSフィンガープリントに基づいて攻撃者をブロックするルールを作成すると、そのルールはeBPFバイトコードプログラムにコンパイルされます。このプログラムは、フックと呼ばれるネットワークイベントの発生時にカーネルによって実行されます。特定のネットワークイベントによってルールがトリガーされると、トラフィックはLayer 4で早期に破棄されます。これにより、Layer 7に到達する前のDDoS緩和を高速化できます。これらの処理はすべてカーネル内で行われるため、非常に効率的であり、ルールをユーザー空間に実装する場合よりも多くのトラフィックを、リソースが枯渇する前にフィルタリングできます。

NGINX App Protect DoSでeBPF高速化ミティゲーションを有効にする
NGINX App Protect DoSの高速ミティゲーションは、以下のLinuxディストリビューションで利用できます。
- Alpine 3.15+
- Debian 11+
- RHEL 8+
- Ubuntu 20.04+
高速DDoS緩和を有効にするには、次の手順に従います。
- eBPF対応のNGINX App Protect DoSパッケージをインストールし、必要な追加タスクを実行します。(インストール後のタスクはディストリビューションによって異なるため、詳細については「インストールに関するドキュメント」を参照してください。)
- 設定通常どおり NGINX App Protect DoS を設定します。
- 次の「ディレクティブ」をNGINX Plus設定の
http{}ブロックに追加します。
protect_dos_accelerated_mitigation on;- NGINXの設定を再読み込みします。
$ sudo nginx -t && nginx -s reloadまとめ
NGINX App Protect DoSの適応学習機能と、eBPFカーネル実行による高効率なトラフィック処理を組み合わせることで、今日のマルチベクトル型およびアプリケーションを標的とするDDoS攻撃への対応能力を強化した、多層型で高速なレイヤー7 DDoS緩和戦略を実現できます。さらに、個々のDDoS攻撃の緩和に必要なリソースを削減し、インフラストラクチャとコンピューティングのコストを抑えます。
Test drive NGINX App Protect DoS for yourself with a 30日間の無料トライアルでNGINX App Protect DoSをお試しいただくか、ユースケースについてご相談ください。
関連リソース
- ホワイトペーパー – レイヤー7 DoS攻撃からモダンアプリを保護
- ブログ – 進化する攻撃環境にNGINX App Protect Denial of Serviceが適応する仕組み
- データシート – レイヤー7 DoS攻撃に対する防御、適応、緩和
著者について

関連するブログ記事
チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。
AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。
JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。
F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。
NGINX PlusによるAWS Auto Scalingグループの負荷分散
新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります