セキュリティ●●●○○

DDoS攻撃

ディードスこうげき

多数の機器から大量のトラフィックを送りサービスを停止させる攻撃。防御は多層で行う。

概要

DDoS(Distributed Denial of Service:分散型サービス妨害)攻撃は、多数の機器から一斉に大量のトラフィックを送りつけ、標的のサーバや回線の処理能力を飽和させて、正規の利用者がサービスを使えない状態に追い込む攻撃です。データを盗む攻撃と違って狙いは「止めること」そのものであり、ECサイトの繁忙期を狙った営業妨害、「止められたくなければ支払え」と脅す身代金型(ランサムDDoS)、抗議活動や陽動など、動機はさまざまです。

元になる概念のDoS(Denial of Service)は攻撃元が単一の場合を指します。単一の攻撃元なら遮断も容易ですが、DDoSの頭の「D(分散)」がこの前提を壊します。攻撃者はマルウェアに感染したPC・家庭用ルータ・監視カメラなどのIoT機器を束ねた「ボットネット」を操り、世界中の何万〜何百万という機器から攻撃を仕掛けます。攻撃元のIPアドレスは無数に分散し、1台1台の通信は正規アクセスと見分けがつきにくいため、「どこかを遮断すれば済む」対処が通用しません。

なぜ生まれたか

DDoSという攻撃形態は、インターネットの設計上の性質の裏返しとして生まれました。インターネットは「届いたパケットはとりあえず受け取る」性善説的な設計であり、送り手のコストは極めて小さい一方、受け手は受信・応答のたびに資源を消費します。この非対称性は、送り手が悪意を持って数を束ねた瞬間に武器になります。2000年に大手サイトが相次いで停止した事件でDDoSは広く知られ、その後IoT機器の爆発的な普及が「乗っ取って束ねられる機器」を桁違いに増やしました。2016年のボットネット Mirai による大規模攻撃では、DNSプロバイダが標的になったことで多数の有名サービスが巻き添えで停止し、単一組織の防御だけでは完結しない問題であることを印象づけました。

現在では攻撃の実行が「DDoS請負サービス」として安価に売買されており、高度な技術がなくても仕掛けられる攻撃になっています。攻撃コストの低さと防御コストの高さの非対称こそが、DDoSが今なお主要な脅威であり続ける理由です。

詳細

レイヤ別に攻撃を分類する — 防御を考える出発点

DDoSと一口に言っても、狙う資源によって性質が大きく異なり、有効な防御も変わります。防御側はまず OSI参照モデルのレイヤで攻撃を整理します。

L3/L4のボリューム型攻撃は、回線帯域やネットワーク機器の処理能力を物量で飽和させるタイプです。UDP パケットを大量に流し込むUDPフラッドが典型で、勝負は純粋に「毎秒何ギガビット受け止められるか」になります。同じL4でも資源枯渇型のSYNフラッドは少し毛色が違い、TCP/IP の3ウェイハンドシェイクの初手(SYN)だけを大量に送って応答せず、サーバ側に「接続しかけの状態」を大量に抱えさせて接続テーブルを埋め尽くします。帯域ではなくサーバの接続管理という有限資源を狙う攻撃です。

L7のアプリケーション層攻撃は、一見正常な HTTP リクエストを大量に送るタイプです。通信量自体は小さくても、検索やログインのような「サーバ側の処理が重い」エンドポイントを狙えば、少ないトラフィックでアプリケーションやRDBMSを疲弊させられます。プロトコル上は正規のリクエストなので機械的な判別が最も難しく、ボット対策やレート制限といったL7の知能的な防御が必要になります。

攻撃の型枯渇させる資源主な防御L3/L4 ボリューム型UDPフラッド・増幅攻撃回線帯域物量で埋め尽くすAnycastで分散吸収CDN・スクラビングL4 資源枯渇型SYNフラッド接続テーブル接続しかけの状態を溜めるSYNクッキー状態を持たず検証L7 アプリ層攻撃HTTPフラッドアプリとDBの処理能力重い処理を狙い撃つWAF・ボット判定レート制限・キャッシュ
レイヤ別のDDoS攻撃分類 — 狙われる資源が違えば、有効な防御層も違う

増幅攻撃 — 小さな問いで大きな答えを撃ち込ませる

ボリューム型攻撃の火力を支える代表的な手口が、リフレクション(反射)と増幅です。攻撃者は送信元IPアドレスを標的のものに偽装した小さな問い合わせを、インターネット上に公開されている DNS や NTP(時刻同期)のサーバに送ります。すると応答は偽装された送信元、つまり標的に向かって飛んでいきます。ポイントは、これらのプロトコルでは応答が問い合わせの数十倍〜数百倍のサイズになりうることです。攻撃者は小さな弾を第三者のサーバに撃ち込むだけで、増幅された大きな弾を標的に浴びせられます。送信元を確認しない UDP ベースのプロトコルだからこそ成立する手口で、攻撃元をたどっても「反射に使われた無実のサーバ」しか見えないという追跡困難性も併せ持ちます。防御側の教訓は、自組織の公開サーバが反射装置として悪用されない設定(オープンリゾルバにしない等)も、インターネット全体の防御の一部だということです。

防御は多層で組む — 吸収・選別・制限

DDoS防御の大原則は「自分の回線に届く前に、できるだけ上流で受け止める」ことです。自社データセンターの回線が 10Gbps なら、それを超える攻撃はサーバがどれだけ頑張っても回線ごと沈むため、勝負は自社の入口より手前で決まります。

第一の層は分散による吸収です。CDN の多くは Anycast という経路制御を使い、同じIPアドレスへの通信を世界中のエッジ拠点のうち最寄りへ散らします。世界から集中砲火を浴びても、トラフィックは自然に何十拠点へ分散され、各拠点の余裕で吸収できます。大規模なボリューム型攻撃への現実的な解はほぼこれ一択で、DDoS対策が CDN 事業者のサービスとして提供される理由でもあります。専用の防御網にトラフィックを迂回させて洗浄し、正常分だけを戻すスクラビングセンターも同じ「上流で受ける」発想です。第二の層は選別で、SYNクッキー(状態を持たずに接続の正当性を検証するテクニック)による資源枯渇型対策や、WAF・ボット判定によるL7攻撃の識別がここに入ります。第三の層がレート制限で、選別をすり抜けた過剰な頻度を最後の調整弁として抑え込みます。

なお「オートスケールで凌ぐ」は一見有効ですが、限界とコストに注意が必要です。スケールで受け続けることは「攻撃者のトラフィック分だけ自分のクラウド請求が膨らむ」ことを意味し、サービスは生きていても財布が焼かれる EDoS(Economic DoS)と呼ばれる状態に陥ります。スケールは防御の主役ではなく、選別と制限が効くまでの時間稼ぎと考えるべきです。

攻撃を受けたとき — 平時の準備がすべて

DDoSは発生してから対策を調達するのでは間に合いません。監視でトラフィックの異常を即座に検知できること、CDN・DDoS対策サービスへの切り替え手順が事前に整備されていること、通信事業者や対策事業者の緊急連絡先が分かっていること — こうした準備を含めて、DDoS対応はインシデント対応プロセスの一部として平時に設計しておくものです。身代金型DDoSで脅迫を受けた場合に支払いに応じない方針を事前に決めておくこと(支払いは再攻撃を招くだけというのが定説です)、攻撃が別の侵入の陽動である可能性を疑って他システムの監視も強化することも、実務上の重要な備えです。DDoSは「完全に防ぐ」ものではなく、「受けても立ち続けられる構えを平時に作っておく」ものだと捉えるのが、防御側の正しいスタンスです。