サービス妨害(DoS・DDoS)— 大量アクセスで止める

概要 — まず全体をつかむ

中級では攻撃の型(帯域枯渇・プロトコル・アプリケーション層)と、吸収する守りを見ました。上級では、どの資源を枯らすのか・なぜ増幅が効くのか・ボットネットという「母数」・そして「完全に防ぐ」のではなく「受け流す」設計になる必然を掘り下げます。

詳細 — 1段階ずつ追う

資源のどこを枯らすか

同じ「使えなくする」でも、枯渇させる資源が層ごとに違います。ここを見分けると、効く対策も変わります。

  • 帯域枯渇型(volumetric) — 回線の帯域(bps)やパケット処理能力(pps)を溢れさせる。UDP floodなど、とにかく量で押す。数十Gbps級になることも
  • プロトコル型(protocol) — 通信の状態を枯らす。代表が SYN flood で、接続確立の途中(半開き)でやめて、サーバの接続テーブル(バックログ)を埋め尽くす。ネットワークの階層 でいえばトランスポート層の弱点を突く
  • アプリケーション層型(application-layer) — CPU・データベース・メモリなどの処理資源を狙う。重い検索を繰り返すHTTP flood、接続をわざと遅く保って占有し続ける Slowloris など。少ない通信量でも効くのが厄介
アニメーション『DoS/DDoS(混雑させて止める)』を開く
大量アクセスで“混雑させて止める”🤖 ボットネット乗っ取られた多数の端末💻乗っ取り💻乗っ取り💻乗っ取り💻乗っ取り💻乗っ取り💻乗っ取り💻乗っ取り💻乗っ取り一斉に大量アクセス防御ライン🖥️サーバパンク(処理があふれる)💥正規の利用者使えなくなるつながらない防ぎ方(前線で吸収・遮断)🛡CDN / WAFで吸収前線で受け流す🚦レート制限過剰なアクセスを絞る🚫異常トラフィックの遮断怪しい送信元を止める壊すのではなく“混雑させて止める”攻撃(可用性を奪う)

層が上がるほど通信量あたりの破壊力が上がり、正規アクセスとの見分けも難しくなります。

やさしく言うと(中級

同じ「使えなくする」でも、狙う資源で分類できます。

  • 帯域枯渇型 — 大量のパケットで回線そのものを溢れさせる
  • プロトコル型SYN flood など、接続確立の途中状態を大量に作り、コネクション資源を枯渇させる
  • アプリケーション層型 — 検索や集計など重い処理を狙い、少ない通信量でもサーバを疲弊させる

さらに厄介なのが反射・増幅攻撃DNSやNTPの公開サーバへ、送信元を標的に偽装した小さな要求を送ると、大きな応答が標的へ集中します(小さな要求→大きな応答の増幅)。攻撃者自身の帯域以上の負荷を生めるのが特徴です。

アニメーション『DoS/DDoS(混雑させて止める)』を開く
大量アクセスで“混雑させて止める”🤖 ボットネット乗っ取られた多数の端末💻乗っ取り💻乗っ取り💻乗っ取り💻乗っ取り💻乗っ取り💻乗っ取り💻乗っ取り💻乗っ取り一斉に大量アクセス防御ライン🖥️サーバパンク(処理があふれる)💥正規の利用者使えなくなるつながらない防ぎ方(前線で吸収・遮断)🛡CDN / WAFで吸収前線で受け流す🚦レート制限過剰なアクセスを絞る🚫異常トラフィックの遮断怪しい送信元を止める壊すのではなく“混雑させて止める”攻撃(可用性を奪う)

登場人物メモ:

  • ボットネット — マルウェアで乗っ取られた機器の群れ。分散した踏み台として一斉に動員される
  • リフレクタ — 反射に悪用される公開サーバ(DNS・NTPなど)。本来は正規のサービス

小さく投げて大きく当てる:反射・増幅

攻撃者が自分の帯域以上の負荷を生むための仕掛けが反射・増幅です。仕組みを分解します。

  • 反射(reflection) — 送信元IPを標的に偽装して公開サーバ(リフレクタ)へ要求を送る。応答は偽装された宛先=標的へ飛ぶ。攻撃者は表に出ない
  • 増幅(amplification) — 要求より応答がずっと大きいサービスを選ぶ。要求バイトに対する応答バイトの比が 増幅率(※1)。DNSの大きな応答で数十倍、NTPの古い機能で数百倍、memcachedでは一万倍規模にもなる
  • なぜUDPか — ハンドシェイクが無いため送信元の偽装がそのまま通る。TCPなら3ウェイの往復で偽装がばれる

つまり「小さな要求で大きな応答を、他人の名前で標的へ集める」——これが増幅の本質です。

アニメーション『反射・増幅攻撃(偽装した要求→大きな応答)』を開く
攻撃者リフレクタ被害者
  • 攻撃者小さな要求を送るだけ。表には出ず、帯域もほとんど使わない
  • リフレクタDNS・NTPなどの公開サーバ。本来は正規のサービスで、悪気なく応答を返す
  • 被害者身に覚えのない大量の応答を浴びせられ、回線が飽和する側
送信元を偽装した小さな要求が、大きな応答となって被害者へ返る流れを追います。「▶ 再生」か「次へ」でどうぞ。
0 / 4

ボットネット:母数を買う

分散(DDoS)の「分散」を支えるのがボットネットです。

  • マルウェアで乗っ取った端末の群れ。近年は防御の甘い IoT機器(監視カメラ・ルータ)が大量動員される
  • 攻撃者は指令サーバ(C2)から一斉に号令をかける。実質的に「他人の帯域を借りて」攻撃する
  • 送信元が世界中に散るため、単純なIP遮断では止まらない。正規利用者と地理的にも混ざり合う

登場人物メモ:

  • ※1 増幅率(amplification factor) — 攻撃者が送る要求のバイト数に対し、標的へ届く応答のバイト数の比。大きいほど少ない元手で大きな負荷を生める
  • ※2 SYN cookie — 半開き接続の状態をサーバに保持せず、送り返すシーケンス番号へ符号化しておく手法。ACKが戻ってはじめて接続を作る

受け流す:緩和の実際

完全に止めるのではなく、希釈し・吸収し・洗い流すのが現実解です。

  1. レート制限 — 送信元ごとの過剰アクセスを絞る。ただしIPが分散・偽装されると効きにくい
  2. Anycast分散 — 同じアドレスを世界中の拠点で受け、負荷を地理的にばらす(負荷分散 の考え方の延長)
  3. スクラビングセンター — 攻撃時に経路(BGP)を誘導し、専用設備で不正トラフィックを洗い落として正規分だけ返す
  4. CDN・WAFで前線吸収CDN の広い受け口で帯域を分散し、WAFでアプリ層の不正リクエストを弾く
  5. SYN cookie(※2) — プロトコル型に対し、状態を持たずに半開き接続の枯渇を防ぐ
  6. 上流フィルタ・送信元検証 — 回線が埋まる前にISPや上流で偽装トラフィックを落とす。ネット全体が送信元検証を徹底すれば反射攻撃の土台自体が崩れる
やさしく言うと(中級
  1. 前線で吸収CDN やスクラビングセンターで、大量トラフィックを受け止め洗い流す
  2. レート制限 — 送信元ごとの過剰アクセスを絞る
  3. Anycast分散 — 同じアドレスを世界中の拠点で受け、負荷を地理的に分散する(負荷分散 の考え方の延長)
  4. 上流でのフィルタ — 回線が埋まる前に、ISPや上流で偽装・不要トラフィックを落とす
  5. 監視 — 平常時の傾向を知り、異常な急増を早く検知する

なぜ「完全防御」はないのか

  • 帯域は物理的な上限を持つ — 相手の総量が自前の回線容量を超えれば、機器に届く前に詰まる。だからクラウドや上流で受けるしかない
  • 正規と攻撃の見分けは原理的に難しい — 特にアプリケーション層型は本物そっくりで、完全な自動判別はできない
  • 偽装は自分だけでは消せない — 反射攻撃の土台(送信元偽装)は、世界中のネットワークが検証を守らない限り残る
  • だから守りは「止める」ではなく「受け流す・希釈する」が中心になる
やさしく言うと(中級
  • 正規と攻撃の見分け — アプリケーション層型は正規アクセスに似せやすく、遮断が難しい
  • 踏み台への加担 — 自分の機器がボットネットやリフレクタにされ、加害側になることも
  • 身代金型(RDoS) — 「止められたくなければ払え」と脅す
  • 回線が埋まってからでは遅い — 帯域枯渇型は、上流で止めないと自前の対策が届かない

理解度チェック

そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。

1. SYN flood に対する SYN cookie の緩和のしかたとして正しいのは?

2. DNSやNTPを使った反射・増幅攻撃で「増幅率」が大きくなる主因は?

3. アプリケーション層型のDDoSが「少ない通信量でも効く」のはなぜ?

4. 接続をわざと遅く保ち、サーバの接続枠を長く占有し続けるアプリ層型攻撃はどれ?

5. スクラビングセンターの役割として正しいのは?

6. DDoSに「完全防御」がないとされる根本理由に最も近いのは?

7. 近年の大規模ボットネットに、防御の甘さから大量に動員される機器の総称を英字3文字で。

8. 送信元IPを標的に偽装して公開サーバへ要求を送り、その応答を標的へ向かわせる手口を漢字2文字で。