ブログ | NGINX

F5 NGINX App Protect DoS の eBPF による DDoS 緩和の加速

NGINX-F5 水平黒タイプ RGB の一部
ロバート・ヘインズ サムネイル
ロバート・ヘインズ
2023年4月5日公開

DDoS 攻撃との戦いは変化し続けています。 F5 Labs は、 2023 年の DDoS 攻撃の傾向に関するレポートで、分散型サービス拒否(DDoS) 攻撃に関する過去 3 年間のデータを分析し、攻撃者は依然として複雑なマルチベクトル DDoS 攻撃を使用しているものの、より純粋にアプリケーション層 (レイヤー 7) 攻撃を開始するようにシフトしていることを発見しました。 2022 年だけでも、レイヤー 7 攻撃の発生率は 165% 増加しました。

2020 年から 2022 年までの DDoS 攻撃の種類 (ボリューム型、プロトコル型、アプリケーション型、マルチベクトル型) の数を示す図
2020~2022 年の DDoS 攻撃の種類の数。アプリケーション攻撃の数が大幅に増加し、ボリューム型攻撃とマルチベクトル攻撃がそれに応じて減少していることがわかります。

通常、攻撃者は、Web サイトの操作を妨害したり、ターゲットを脅迫したりするなど、目的を達成するために最も簡単な方法を追求します。 レイヤー 7 攻撃の増加は、ボリューム型またはプロトコル型の戦略のみを使用して DDoS 攻撃を開始することが難しくなり、アプリケーション層攻撃がより効果的であることが証明されていることを示している可能性があります。

eBF と XDP による最新アプリの保護

DDoS 攻撃からアプリケーションを防御する場合、アプリケーションの可用性 (およびユーザーの満足度) を維持する可能性を最大限に高めるために、可能な限りテクノロジーの進歩を活用することが重要です。 eXpress Data Path (XDP) テクノロジーを採用した拡張 Berkeley Packet Filter (eBPF) は 2014 年から存在していましたが、マイクロサービスとクラウドネイティブ アーキテクチャの採用が増えたことにより、現在では開発者、SRE、運用コミュニティの間で人気が急上昇しています。

電子BPF

eBPF は、Linux カーネル内のデータリンク層仮想マシン (VM) であり、ユーザーがプログラムを安全かつ効率的に実行できるようにします。 また、カーネルのソースコードを変更したり、カーネルモジュールを追加したりすることなく、実行時にカーネルの機能を拡張します。eBPF はイベントトリガーであり、Linux ホスト上の特定のアクティビティを検出し、特定のアクションを実行します。 このテクノロジーは、マイクロサービスとエンドユーザー間の接続とトランザクションを追跡する機能を備え、アプリとアプリ サービスに対するフルスタックの可視性を提供します。 利用可能なデータの範囲は非常に広範囲です。 高度な可観測性に対応し、ネットワーク トラフィック管理とランタイム セキュリティのニーズを分析し、基本的な効率的な設計を使用してコンピューティング コストを削減する機能を備えています。

eBPF テクノロジーの概要については、F5 DevCentral のビデオ「eBPF とは?」をご覧ください。

翻訳

XDP は、高性能ネットワークの利点を提供します。 これにより、ユーザー空間プログラムはネットワーク パケット データを直接読み書きし、カーネル レベルに到達する前にパケットの処理方法を決定できるようになります。 このテクノロジーにより、開発者は Linux カーネル内のネットワーク デバイス ドライバーによって実装された低レベル フックに eBPF プログラムを接続できるようになります。

NGINX アプリは eBPF を使用して DoS をどのように保護しますか?

NGINX App Protect DoS は、 NGINX Plus および NGINX Ingress Controller 上で実行される、高度な動作ベースのレイヤー 7 DDoS 緩和ソリューションであり、 SlowlorisHTTP Floodなどの攻撃から HTTP および HTTP/2 アプリを防御します。 つまり、NGINX App Protect DoS は、単純なネットワーク DDoS ソリューションでは検出できないアプリケーション層攻撃から保護します。

NGINX App Protect DoS が防御する攻撃の種類を示す図
NGINX App Protect DoS は、ロードバランサーまたは API ゲートウェイの NGINX Plus、および NGINX Ingress Controller 上、またはクラスター内でポッドごとまたはサービスごとのプロキシとして導入できます。 また、アジャイル DevOps の CI/CD パイプラインに「コードとしてのセキュリティ」として簡単に統合することもできます。

eBPF は、NGINX App Protect DoS と併用することで、DDoS 攻撃の吸収能力を大幅に強化することが期待できます。 NGINX App Protect DoS は、ソース IP アドレスのみ、または TLS フィンガープリントと組み合わせて識別される悪意のあるアクターからのトラフィックをブロックすることで、緩和パフォーマンスを高速化する多層ソリューションの一部として eBPF (NGINX Ingress Controller 自体では利用できません) を使用します。

次に、NGINX App Protect DoS が異常検出動的ルール作成と適応学習ルール適用という3 つのフェーズでどのように機能するかの基本的な仕組みを見てみましょう。

異常検出

NGINX App Protect DoS は、保護されたアプリケーションを継続的に監視し、機械学習を使用してアプリケーションとクライアントの動作の統計的なサイト モデルを構築します。 トラフィックをリアルタイムで監視し、300 を超える HTTP リクエスト メトリックを追跡して、アクティビティとパフォーマンスの継続的に更新される包括的なベースラインを作成します。 NGINX App Protect DoS は、アプリケーション トラフィックをパッシブに監視するだけでなく、アクティブなアプリケーションのヘルス チェックも実行し、応答時間やドロップされたリクエストなどのメトリックを監視します。

アプリケーションがレイヤー 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 バイトコード プログラムにコンパイルされ、ネットワーク イベント (フックと呼ばれる) が発生したときにカーネルによって実行されます。 特定のネットワーク イベントによってルールがトリガーされると、トラフィックはレイヤー 4 で早期にドロップされます。 これにより、レイヤー 7 に到達する前に DDoS 緩和を加速できます。 このアクティビティはすべてカーネル内で行われるため、非常に効率的であり、ルールがユーザー空間で実装されている場合よりも多くのトラフィックをフィルタリングできます (リソースを使い果たす前に)。

NGINX App Protect DoSがカーネル内でeBPFエンコードルールを呼び出して攻撃者を撃退する方法を示す図
eBPF を使用した NGINX App Protect DoS は、ユーザー空間に到達する前にカーネル内の不正なトラフィックをブロックし、DDoS 緩和を加速してコンピューティング コストを削減します。

NGINX App Protect DoS で eBPF アクセラレーション緩和を有効にする

NGINX App Protect DoS 高速緩和は、次の Linux ディストリビューションで利用できます。

  • アルパイン 3.15+
  • Debian 11以上
  • RHEL8以降
  • Ubuntu 20.04以降

高速 DDoS 緩和を有効にするには、次の手順に従います。

  1. eBPF 対応の NGINX App Protect DoS パッケージをインストールし、追加のタスクを実行します。 (インストール後のタスクはディストリビューションによって異なるため、詳細についてはインストール ドキュメントを参照してください。)
  2. NGINX App Protect DoS を通常どおり構成します
  3. NGINX Plus 設定のhttp{}ブロックに次のディレクティブを追加します。

    protect_dos_accelerated_mitigation をオン;
    
  4. NGINX 構成を再ロードします。

    $ sudo nginx -t && nginx -s リロード
    

まとめ

NGINX App Protect DoS の適応学習機能と eBPF カーネル実行の高効率トラフィック処理を組み合わせることで、今日のマルチベクトルおよびアプリケーション中心の DDoS 攻撃に対応する機能が向上した、多層的で高速化されたレイヤー 7 DDoS 軽減戦略が実現します。 さらに、特定の DDoS 攻撃を軽減するために必要なリソースを削減することで、インフラストラクチャとコンピューティングのコストも抑えられます。

30 日間の無料トライアルで NGINX App Protect DoS を実際に試用するか、弊社にお問い合わせの上、使用事例についてご相談ください

追加リソース


「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"