コンテンツにスキップ

DDoS保護

DDoS(分散型サービス拒否)攻撃は、攻撃者が複数の発信源からのトラフィックでシステムを過負荷にして、ウェブサイトやオンラインサービスを利用不能にしようとするタイプのサイバー攻撃です。本ドキュメントでは、DDoS対策の推奨事項と、Wallarmでリソースを保護する方法を説明します。

DDoS攻撃は、しばしばボットネットと呼ばれる侵害されたコンピュータシステムのネットワークから実行されます。攻撃者はこれらのシステムを使ってターゲットに大量のトラフィックを送信し、サーバーに過負荷をかけて正当なリクエストに応答できなくします。DDoS攻撃は、ウェブサイト、オンラインゲーム、さらにはソーシャルメディアプラットフォームを含む、あらゆる種類のオンラインサービスを標的にすることができます。

攻撃者がDDoS攻撃を仕掛けるために使える手法は多数あり、使用する方法やツールは大きく異なる場合があります。比較的単純な攻撃では、サーバーに大量の接続要求を送るなどの低レベル手法が用いられる一方で、より高度な攻撃では、IPアドレスのなりすましやネットワークインフラの脆弱性の悪用などの複雑な戦術が使われます。

DDoS攻撃の分類

攻撃者がウェブサイトやオンラインサービスの可用性を妨害するために用いるDDoS攻撃にはいくつかの種類があります。以下が代表的なタイプです。

OSI layer / Attack Type ボリューム型およびアンプリフィケーション攻撃 プロトコル悪用とロジックボム
L3/L4
  • UDPフラッド:この攻撃は、ターゲットに大量のUDPパケットを送信して利用可能な帯域幅を消費し、サービスを妨害します。
  • ICMPフラッド(Smurf攻撃):ICMPを用いてターゲットに大量のエコーリクエストパケット(一般に"ping"リクエストとして知られています)を送信し、帯域幅を消費してサービスを妨害します。
  • SYNフラッド:TCP接続の確立方法を悪用します。攻撃者はターゲットに大量のSYNパケットを送信しますが、接続を確立するための3ウェイハンドシェイクを完了しません。これによりターゲットサーバーのリソースが、ハンドシェイク完了を待つ間に占有されます。
  • Ping of Death:処理可能な最大サイズを超える過大なパケットをターゲットに送信してクラッシュを狙います。これらのパケットを処理しようとすることで、ターゲットがクラッシュするか利用不能になる可能性があります。
L7
  • HTTPフラッド:正規に見える多数のGETまたはPOSTリクエストをサーバーやWebアプリケーションに送ってターゲットを過負荷にします。この種の攻撃は、マルウェアに感染し攻撃者が制御する侵害済みコンピュータのネットワークであるボットネットを用いて実行されることがよくあります。
  • アンプリフィケーション攻撃:増幅技術を利用して、ターゲットへ送られるトラフィック量を増幅します。例えば、攻撃者がサーバーに小さなリクエストを送り、サーバーがそれに対してはるかに大きなレスポンスを返すことで、ターゲットに送信されるトラフィック量を実質的に増やします。アンプリフィケーション攻撃には、NTPアンプリフィケーション、DNSアンプリフィケーションなど、複数の手法があります。
  • Slowloris:この攻撃は必要な帯域幅が少なく、1台のコンピュータだけでも実行できる点が特徴です。複数の同時接続をWebサーバーに対して開始し、長時間維持します。攻撃者は部分的なリクエストを送信し、ときどきHTTPヘッダーを補ってリクエストが完了状態に達するのを防ぎます。
API/App specific (L7+)
  • Heavy Request:特別に細工されたリクエストを用いて、サーバーに大量のデータを返させます。このタイプの攻撃は、アプリケーションやAPIの事前調査が必要で、その脆弱性の悪用に基づくため、標的型攻撃でよく使われます。
  • ロジックボム:大量のデータを含み、要求処理中の脆弱性を突いてターゲットシステムの大きなリソース消費を引き起こすよう設計された特別なリクエストを用います。ロジックボムには、XMLボム、JSONボムなどの種類があります。

ボリューム型およびアンプリフィケーション攻撃は、大量のトラフィックでターゲットを圧倒しようとします。帯域幅または対象サーバーやネットワークの計算資源を飽和させ、正当なリクエストに応答できなくすることが目的です。

プロトコル悪用とロジックボムは、サービスやネットワークの通信方法の脆弱性を悪用するDDoS攻撃です。特定のプロトコルを悪用したり、ターゲットが処理しにくい不正形式のパケットを送信したりして、通常のトラフィックフローを妨害します。

DDoS攻撃の緩和

DDoS攻撃は多様な形態を取り、異なるOSIレイヤーを標的にするため、単一の対策だけでは効果的ではありません。DDoS攻撃に対して包括的な保護を提供するには、複数の手段を組み合わせて使用することが重要です。

  • インターネットサービスプロバイダー(ISP)やクラウドサービスプロバイダー(CSP)は、通常、L3-L4のDDoS攻撃に対する第一の防御線を提供します。深刻度の高いL3-L4のDDoS攻撃には、例えば次のような追加の緩和ツールが必要です。

    1Gbps以上のレートでトラフィックを生成するDDoS攻撃には、トラフィックスクラビング用の専用DDoS保護サービスが必要になる場合があります。トラフィックスクラビングは、トラフィックを第三者サービスに経路変更し、悪意のあるトラフィックをすべてフィルタリングして、正当なリクエストのみをサービスに転送する手法です。L3-L4のDDoS攻撃に対する追加の保護策として、NGFWのようなソリューションを使用することもできます。

  • L7のDDoS攻撃(いわゆる"アプリケーション層"攻撃)は、L3-L4の攻撃よりも標的志向で高度です。通常、攻撃対象となるアプリケーションの特性を狙うため、正規トラフィックとの判別が難しい場合があります。L7のDDoS攻撃から保護するには、アプリケーション層でトラフィックを解析するWAAPまたは専用のAnti-DDoSソリューションを使用してください。ピーク負荷を処理できるようにAPI GatewayやWEBサーバーを適切に構成することも推奨します。

保護手段を選定する際は、以下の要素に基づいて組織のニーズとリソースを慎重に評価してください。

  • 攻撃の種類

  • 攻撃の規模

  • WebアプリケーションやAPIの複雑さ、コスト

また、DDoS攻撃を可能な限り早期に特定して、適時に対抗策を講じられるよう、対応計画を準備しておく必要があります。

WallarmによるL7 DDoS保護

Wallarmは、L7のDDoS脅威に対して幅広い保護手段を提供します。

  • API Abuse Prevention。API Abuse Prevention機能を有効化して、さまざまな種類の悪意あるボットを特定して停止します。

  • Brute force triggerにより、パスワードなどのパラメータ値を総当たりで試行する大量リクエストを防ぎます。

  • Forced browsing triggerにより、ディレクトリやファイルなどWebアプリケーションの隠しリソースを検出しようとする悪意のある試行を防ぎます。

  • denylistsとgraylistsを使用したジオロケーションフィルタリング。攻撃元となっている特定地域からのアプリケーションやAPIへのアクセスを禁止します。

  • denylistsとgraylistsを使用して信頼できない発信元をブロックします。標的型攻撃から保護するため、Tor、Proxy、VPNなど、場所の秘匿やジオフィルターの回避を可能にする不審な発信元をブロックすると有効な場合があります。

  • ロジック(データ)ボムの検知。WallarmはZipボムやXMLボムを含む悪意のあるリクエストを自動的に検出してブロックします。

  • Rate limitingの設定。特定のAPIスコープに対して確立できる最大接続数を指定します。定義した上限を超えるリクエストはWallarmが拒否します。

NGINXベースのWallarmノードを使用している場合は、L7 DDoSに対するセキュリティを強化するため、次のようにNGINXを構成することを推奨します。

  • キャッシュ。一般的なリクエストへのレスポンスをキャッシュするよう設定し、DDoS攻撃で生成されるトラフィックの一部を吸収して、WebアプリケーションやAPIに到達しないようにします。

  • レート制限。受信リクエストに対するレート制限ルールを作成して、ターゲットのWebアプリケーションやAPIに送信できるトラフィック量を制限します。

  • 接続数の制限。単一のクライアントIPアドレスが開くことのできる接続数に、実ユーザーに適切な値で上限を設定することで、リソースの過剰使用を防げます。

  • 遅い接続を閉じる。十分な頻度でデータを書き込まない接続は、長時間開いたままとなり、サーバーの新規接続の受け入れ能力を阻害する可能性があるため、閉じるようにします。

NGINXの設定例とその他の推奨事項を参照してください

Kong API Gatewayを使用している場合も、API Gatewayを保護するためのベストプラクティスに従うことを推奨します。