DDoS(分散型サービス拒否)攻撃は、処理能力を超える量のトラフィックを送りつけてサービスをオフラインにしようとするものです。ここでは、攻撃の仕組み、DDoS 対策でできること、できないことを解説します。
3 種類の攻撃
- ボリューム型攻撃は、ネットワーク回線そのものを不要なデータで埋め尽くし、規模はギガビット毎秒で測られます。例は UDP フラッドや、DNS・NTP の増幅攻撃です。
- プロトコル型攻撃は、接続の仕組みを悪用するもので、サーバーの接続テーブルを使い果たす SYN フラッドなどがあります。
- アプリケーション層攻撃は、正規に見えるリクエストを大量に送りつけ(たとえば毎秒数千件の検索やログイン)、CPU とデータベースを枯渇させます。
ネットワークの用語では、前の 2 つはレイヤー 3 と 4(L3/L4)の攻撃、最後のひとつはレイヤー 7(L7)の攻撃です。
ネットワークレベルの防御の仕組み
- あなたの IP アドレス宛のトラフィックは、まずプロバイダーのフィルタリング機器を通過します。
- システムは通常のトラフィックの傾向を学習し、異常を検出します。
- 送信元が偽装されたパケットや不正な形式のパケットなどの悪意あるパケットは、サーバーに届く前に破棄されます。
- 正常なトラフィックは、通常は目に見える遅延なしにそのまま通過します。
当社プラットフォームのすべての VPS には L3/L4 防御が含まれており、ほとんどの障害の原因となるボリューム型とプロトコル型の攻撃をカバーします。
L3/L4 防御では止められないもの
レイヤー 7 のフラッドは本物の訪問者のように見えるため、ネットワークフィルターでは常に区別できるとは限りません。これらはアプリケーションレベルで対処します。
- Web サイトの前面に CDN またはリバースプロキシを置き、積極的にキャッシュします。
- ログインページと検索ページには、Nginx のレート制限(
limit_req_zone)を使います。 - fail2ban を使って、繰り返し攻撃する相手をブロックします。
- 可能な限り静的ページを配信します。配信コストはほとんどかかりません。
露出を減らす
- CDN を使う場合はオリジンの IP を非公開に保ち、DNS の履歴やメールヘッダーに漏らさないでください。
- 使っていないポートはすべて閉じます。
- 攻撃者が小さなバグを突いてクラッシュさせられないよう、ソフトウェアを最新に保ちます。
- リソース使用状況を監視し、問題に早く気づけるようにします。
攻撃を受けたときの対応
- 攻撃であることを確認します。帯域幅のグラフと、接続数を確認する
ss -sを見てください。 - ホストのサポートに連絡し、フィルタリングを調整してもらいます。
- レート制限を有効にするか、サイトをプロキシの背後に置きます。
- 恐喝の要求には応じないでください。支払っても、繰り返される攻撃は止まりません。
よくある質問
DDoS 対策は何をしますか?
悪意のあるトラフィックの洪水がサーバーに届く前にフィルタリングし、正規の訪問者がサイトにアクセスし続けられるようにします。
ホストの DDoS 対策ですべての攻撃を防げますか?
いいえ。主に大規模なネットワークの洪水を処理するものです。通常のリクエストに見えるアプリケーション層の攻撃には、ご自身のサーバーでのレート制限、キャッシュ、ボットルールが必要です。
小規模なサイトに DDoS 対策は必要ですか?
小規模なサイトが直接狙われることは稀ですが、スキャンや洪水に巻き込まれることはあります。基本的な保護とレート制限は、安価な保険になります。