CDN
Webコンテンツを、利用者に近い場所にある多数のサーバ(エッジサーバ)にキャッシュして配信する仕組み。応答を速くするほか、アクセスが分散されるため、副次的にDDoS攻撃の影響を軽減できる。
イマシルちゃんの解説
人気のお店が1軒しかなかったら、遠くからお客さんが押し寄せて大行列になっちゃうよね。
CDNは、同じ商品を置いた支店を世界中にたくさん作るようなものなんだ。
お客さんは近くの支店で買えるから、すぐに受け取れる。
しかも、お客さんがたくさんの支店に分かれるから、本店がパンクしにくいんだよ!
これが、大量のアクセスを送りつける攻撃にも強くなる理由なんだ。
より深い解説
定義
CDN(Content Delivery Network)は、Webサイトの画像、動画、スクリプトなどのコンテンツを、インターネット上の多数の拠点に配置したエッジサーバ(キャッシュサーバ)に複製し、利用者に最も近い(または最適な)エッジサーバから配信するネットワークである。コンテンツの元を持つサーバをオリジンサーバという。
仕組み
- 利用者が、Webサイトのドメイン名をDNSで名前解決する
- CDNのDNSが、利用者に近いエッジサーバのIPアドレスを返す(またはエニーキャストで、同じIPアドレス宛ての通信を最寄りの拠点に届ける)
- エッジサーバにコンテンツのキャッシュがあれば、そのまま返す
- キャッシュがなければ、オリジンサーバから取得して返し、キャッシュしておく
CDNを使う効果
| 効果 | 内容 |
|---|---|
| 応答の高速化 | 利用者に近いサーバから返すため、遅延(RTT)が小さくなる |
| オリジンサーバの負荷軽減 | 多くのリクエストをエッジサーバが処理する |
| 可用性の向上 | 一部の拠点やオリジンサーバに障害があっても、キャッシュから配信を続けられる |
| 帯域コストの削減 | オリジンサーバからの送信量が減る |
大量のアクセスによる攻撃への効果
CDNは本来、配信の高速化のための仕組みだが、その構造から、副次的にDDoS攻撃への耐性も高める。
| 理由 | 内容 |
|---|---|
| 攻撃の分散 | 攻撃のトラフィックが、世界中の多数のエッジサーバに分散され、1か所に集中しない |
| 大きな容量 | CDN事業者のネットワークは非常に大きな帯域を持ち、大量の通信を吸収できる |
| オリジンサーバの隠蔽 | 利用者からはエッジサーバしか見えず、オリジンサーバのIPアドレスを直接攻撃されにくい |
多くのCDN事業者は、攻撃の防御やWAFの機能もあわせて提供している。ただし、オリジンサーバのIPアドレスが知られると、CDNを迂回して直接攻撃される恐れがあるため、オリジンサーバはCDNからの通信だけを受け付けるように設定する。
CDNでは防げない脅威
CDNは、大量のアクセスを分散させるための仕組みなので、利用者の端末や認証を狙う攻撃には効果がない。
| 脅威 | CDNで防げない理由 |
|---|---|
| Man-in-the-Browser攻撃 | 利用者のブラウザの中で、マルウェアが通信を改ざんする |
| パスワードリスト攻撃 | 正規の利用者と同じように、1回ずつログインを試す |
| リバースブルートフォース攻撃 | 同上。少数の試行を多数のアカウントに分散させる |
キャッシュの注意点
| 注意点 | 内容 |
|---|---|
| 動的なコンテンツ | 利用者ごとに内容が変わるページ(ログイン後の画面など)は、誤ってキャッシュすると他人に表示されてしまう |
| 更新の反映 | オリジンサーバで更新しても、キャッシュの有効期間が切れるまで古い内容が配信される。必要に応じてキャッシュを削除(パージ)する |
| TLS | HTTPSのサイトでは、エッジサーバでTLSを終端するため、CDN事業者にサーバ証明書の秘密鍵を預ける(またはCDN事業者が発行する証明書を使う)ことになる |