DDoS対策の実際の仕組み
DMCA & resilience · 8 分で読了
DDoS攻撃が実際にやっていること
分散型サービス拒否攻撃は、侵入によってではなく、サービスが依存する何らかのリソースを圧倒することでサービスを利用不能にしようとする。そのリソースとは、生のネットワーク帯域幅(Gbpsで測定される volumetric attack)、ルーターやファイアウォールの接続処理能力(pps=秒あたりパケット数で測定される protocol attack)、あるいはアプリケーション層そのもの(本物のトラフィックのように見えながら、アプリが処理しきれない量で到達するHTTPフラッド)のいずれかだ。それぞれのカテゴリには異なる防御が必要であり、だからこそ「DDoS対策」とは実際には一つのスイッチではなく、いくつもの異なる技術の束なのだ。
「分散型」という部分が重要だ。攻撃トラフィックは通常、しばしば侵害されたデバイスのボットネットから、一度に何千もの異なる送信元IPから発生する。だから単に一つのIPアドレスをブロックしてもほとんど役に立たない。うまく運用されているanti-ddosホスティングの構成は、攻撃トラフィックがあらゆる場所から来ているように見えることを前提として設計する必要があり、手動で維持するブロックリストに頼るわけにはいかない。
DDoS対策が実際に機能する3つの層
Volumetric attack(帯域幅型攻撃)はネットワークリンク自体を飽和させることを狙う。よく使われる手口にはUDPフラッド、DNSアンプ攻撃、NTPアンプ攻撃があり、攻撃者があなたのIPになりすまし、第三者のサーバーを騙してその応答であなたを溢れさせる。この層への防御は主に容量と上流フィルタリングの問題だ。プロバイダーのネットワークが、実際のリンクが必要とする量をはるかに超える受信トラフィックを吸収でき、そのフィルタリングがトラフィックがサーバーのローカル接続に到達する前に行われるなら、volumetric floodは上流でスクラビングされ、VPSを窒息させることはない。
Protocol attack(プロトコル攻撃)は、生の帯域幅ではなく、ルーター・ロードバランサー・ファイアウォールの接続状態管理の仕組みを狙う。代表例はSYNフラッドで、大量の未完了のTCPハンドシェイクを開いて接続テーブルを枯渇させる。この層の緩和は、SYN cookies、接続レート制限、ネットワークエッジでのステートレスなパケット検証といった技術に依存し、フラッドがアプリケーションを動かしているOSに到達する前に、専用のハードウェアやソフトウェアによって行われる。
Application-layer attack(アプリケーション層攻撃)は、個々のリクエストが技術的には正当であることが多いため、最も捕捉が難しい。検索エンドポイントやログインページを本物らしいリクエストで叩くHTTPフラッドは、異常な帯域幅として現れることなくサービスをダウンさせうる。この層には行動分析が必要だ。送信元ごとのレート制限、チャレンジレスポンスの仕組み、そして正当な関心の急増と協調的なフラッドを見分けられるパターン検知。トラフィック量だけでブロックすると、攻撃を見逃すか、実際のユーザーをブロックしてしまうかのどちらかになる。
- Volumetric(ネットワーク/トランスポート層):UDPフラッド、DNS/NTPアンプ攻撃。単位はGbps
- Protocol/状態枯渇型:SYNフラッド、不正パケットフラッド。単位はpps(秒あたりパケット数)
- アプリケーション層:HTTPフラッド、低速リクエスト攻撃。単位はrps(秒あたりリクエスト数)で、本物のトラフィックとの区別がはるかに難しい
実際の緩和がリアルタイムでどう行われるか
効果的なanti-ddosホスティングは、受信トラフィックが起点サーバーに到達する前にスクラビングインフラを経由させ、緩和がターゲットとなっているサーバー自体ではなく上流で行われるようにする。あるIPへのトラフィックが検知閾値(固定のベースライン、または現在のトラフィックを通常パターンと比較する異常検知モデル)を超えると、システムはそのトラフィックをフィルタリングノード経由に再ルーティングし、悪意あるパケットを破棄しつつクリーンなトラフィックだけを転送する。うまくチューニングされた構成であれば通常は数秒以内にこれが行われるが、正確な検知にかかる時間は攻撃の種類と閾値の保守性によって変わる。
Anycastルーティングはこの構成でよく使われる要素だ。同じIPアドレスを複数のネットワーク拠点から広告することで、受信トラフィック(攻撃トラフィックを含む)は自然と複数のポイント・オブ・プレゼンスに分散され、一つのリンクに集中することがなくなる。これにより、実効的な吸収容量は単一のデータセンターが単独で処理できる量をはるかに超える水準まで引き上げられる。
とはいえ、これらは優れたアプリケーション設計の必要性を無くすものではない。アプリケーションレベルでのレート制限、リクエストあたりの負荷を減らすキャッシュ、そして不要なサービスを公開ポートから外しておくこと。これらすべてが、強力な上流保護があってもなお、アプリケーション層のフラッドが実際に与えられる害を減らす。
プロバイダーのanti-DDoSの謳い文句を評価する際に実際に見るべき点
「最大10Gbps」や「100Gbps緩和」といった見出しの数字は上流のネットワーク容量を表しているのであって、あらゆる攻撃に対する保証ではない。フィルタリングロジック自体が弱ければ、洗練された分散型のアプリケーション層攻撃は、その上限をはるかに下回る規模でも問題を引き起こしうる。実際にどの層がカバーされているか(volumetricのみか、それともprotocolとapplicationも含むか)、緩和は常時稼働か、それともサービスがすでに劣化した後で反応的に発動するのか、意味のあるSLAがあるのか単なるマーケティング上の主張なのかを確認すること。
特にVPSに関しては、実務上の問いはエンタープライズインフラよりも狭くなる。プロバイダーのネットワークは、トラフィックが仮想マシンのインターフェースに到達する前にフィルタリングしているか、緩和は基本料金に含まれているのか有料アドオンなのか、保護対象帯域幅にハードな上限があり、それを超えるとプロバイダーがフィルタリングを続ける代わりにIPをヌルルート(ブラックホール化)してしまうのか。この最後の点は、人々が想像する以上に重要だ。一部の低価格ホストが宣伝する「DDoS対策」は、実際には攻撃中にサーバーを素早くヌルルートするトリガーにすぎず、それはネットワーク上の他の顧客への影響を止める一方で、あなたのサービスを完全にオフラインにしてしまう。
- どの層がカバーされているか:volumetricのみか、volumetric + protocol + applicationか
- 常時稼働のフィルタリングか、劣化がすでに見えてから発動する反応的な緩和か
- 示されているGbpsの数値が上流のネットワーク容量なのか、VPSごとの保証値なのか
- 緩和の上限を超えた場合に何が起きるか:フィルタリングの継続か、IPのヌルルートか
より広い耐性計画の中でDDoS対策が占める位置
DDoS緩和は耐性戦略の一つの層であって、それがすべてではない。暗号化されたNVMeストレージと専用のKVMコア、最新のスナップショットを備えたVPSは、DDoS関連であろうとなかろうと、そうした基本を欠くVPSよりもあらゆる障害から速く復旧する。IPv4とIPv6の両対応は、トラフィックを再割り当てする必要が生じた際のルーティングの柔軟性を高めてくれる。これらはネットワークレベルのフィルタリングに取って代わるものではないが、耐性のある構成はDDoS対策を、堅実なインフラの基本と並ぶ一つのピースとして扱うのであって、その代替とはしない。
VPS GOATは、暗号化NVMe上に専用コア、スナップショット、フルAPIアクセスを備えたKVM VPSラインナップ全体で、基本インフラの一部として最大10Gbpsのanti-DDoS対策を標準で含んでおり、稼働中のすべての管轄でおよそ55秒でデプロイされる。プロジェクトが実際に必要とする緩和容量は、その脅威プロファイルに大きく左右される。小規模な個人プロジェクトと、過去に標的にされたことのある公開向けサービスとでは要件がまったく異なる。どんな単一の数字であっても、あらゆる状況に十分だと決めつけず、正直に見積もる価値がある。
| 攻撃層 | 代表的な手口 | 実際に何が止めるか | 典型的な測定単位 |
|---|---|---|---|
| Volumetric | UDPフラッド、DNSアンプ攻撃、NTPアンプ攻撃 | トラフィックが起点に到達する前の上流ネットワーク容量とスクラビング | Gbps |
| Protocol / 状態枯渇型 | SYNフラッド、不正パケットフラッド | SYN cookies、接続レート制限、エッジでのステートレス検証 | 秒あたりパケット数 |
| アプリケーション層 | HTTPフラッド、低速リクエスト攻撃(Slowloris系) | 行動検知、送信元ごとのレート制限、チャレンジレスポンス | 秒あたりリクエスト数 |
| ルーティングレベルの吸収 | あらゆる層、大規模な場合 | 複数のポイント・オブ・プレゼンスにまたがるAnycast分散 | ネットワーク容量の合計 |