#はじめに
本記事では DDoS 対策を行うためのツールとしてよく検討される CDN(Content Delivery Network) と WAF(Web Application Firewall) について、それぞれどのような対策を行うことが出来て、どのように使い分けるのがよいかを考察してみたいと思います。
DDoS とは
DDoS とは Distributed Denial of Service attack の略で、システムに対して過大なリクエストを送りつけることによってシステムのダウンや遅延を狙った攻撃です。
DDoS には Syn や Ack パケットを利用した TCP レベルのものや、HTTP レベルの攻撃などがさまざまなレイヤーに対する攻撃があります。
DDoS 対策の目的
DDoS 対策の目的としては通常は以下のようなものが考えられると思います。
- 正規のユーザーには中断なくサービスを提供し続ける
- DDoS が原因で発生したトラフィックをシステムに到達させない
- DDoS、もしくは DDoS 対策により追加のコストが発生しないことが望ましい
CDN による DDoS 対策
CDN により可能な DDoS 対策について考えてみます。一般に CDN は HTTP(ポート80, 443) 以外のトラフィックを通しません。そのため対象のサービスを CDN 経由に設定することでレイヤー7以下の攻撃からオリジン環境を守ることができます。
また、CDN は通常のサイトと比べて非常に大きなネットワーク帯域を持っているので、DDoS が発生してもキャッシュ対象のコンテンツであればかなりの規模までは問題なくコンテンツを配信し続けることが出来ます。
ただし、DDoS が原因で発生したトラフィックも通常は CDN の課金対象となります。無条件にただ配信を続けてしまうとサービス断は発生しなかったとしても配信コストが増大してしまいます。
ですので CDN を利用していても DDoS 発生時には適切な設定を行うい CDN レベルで攻撃のトラフィックをブロックすることが重要となってきます。
CDN レイヤーでの DDoS の対策としてはアクセス元の IP や国情報、User-Agent などの情報を単独、または組み合わせて防御するのが一般的です。攻撃があった際に迅速に対応できるように、関連する情報をあらかじめログへ出力するようにしておいたり、ブロックするための設定を作成しておくことが重要です。
Fastly を利用して DDoS 攻撃をブロックするための設定については「Fastly で DDoSなどのアタックに備えた設定を追加する」でも説明をしています。
また、オリジン環境への直接の攻撃については別途考慮する必要があります。CDN ベンダーが利用 IP のリストを公開していれば、対象 IP 以外からのアクセスは全て拒否をすることなどで比較的容易に防御を行うことが出来ます。
Fastly が利用している IP のリストは以下から確認可能です。
Fastly の IP アドレス範囲へのアクセス
WAF による DDoS 対策
続いては WAF について考えてみます。WAF の基本機能としてはリクエストの内容をチェックし、いわゆる OWASP TOP10 といったようなアプリケーションの脆弱性に代表される攻撃のパターンに合致する場合にリクエストをブロック(または記録)します。
WAF の一般的な導入方法としてはアプライアンス型、ソフトウェア型、クラウド型といったような種類があります。以下非常にざっくりした説明です。
アプライアンス型 - 専用、もしくはWAF機能を有したファイアウォールをアプリケーションの前段階に設置
ソフトウェア型 - Webサーバーやアプリケーションサーバーにソフトウェアとして WAF をインストール
クラウド型 - クラウド上にWAF機能を構築し、クライアントのリクエストをクラウド WAF 上で処理してからWebサーバーに送信します。
CDN 内蔵型 - CDN が機能の一部として WAF を提供。クラウド型の一種とも言える。
DDoS 対策の観点から WAF を考えてみると、WAF はそもそも量の攻撃に対しての防御ではありません。その性質上リクエストの内容を検閲する必要がありマシンリソースも必要とするため、DDoS のような膨大なトラフィックが発生すると WAF の処理が追いつかなくなってしまう懸念があります。
ただし、最近はリクエストの検閲だけでなく、アクセスコントロールリストによるリクエストのブロックや、レートリミットといった様々な追加のセキュリティ機能を有しているサービスも多いです。
DDoS 対策という意味では純粋な WAF の機能というよりも、そういったアドバンスのセキュリティ機能を利用して防御を検討する方がよいでしょう。
まとめ
DDoS 対策をうたう WAF ソリューションは増えてきていますし、実際に有効な機能を持ったソリューションもありますが、DDoS という希望の攻撃への対策という意味ではやはりまだ CDN のレイヤーで防御を行う方がよいケースが多いように感じます。
ただし、CDN レイヤーで DDoS に適切に対応するためには CDN が以下のような機能を備えている必要があります。
- 有効な対策を分析するためのログ等の情報が迅速に入手可能なこと
- DDoS を防御するための設定が可能であること
- 追加した設定が迅速に適用されること
CDN レイヤーで適切な防御設定を迅速に追加することで、DDoS 対策の目的で説明した項目が実現可能です。
実際に攻撃を受けてからでは対応が難しいので、攻撃を受ける前に万が一の際の運用を考えておくことが重要になってきます。