Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

ゾーンとアプリケーションをまたぐ WAF 導入の効率化

最終更新 Markdown で表示Agent セットアップ

はじめに

セキュリティ境界は、かつての「城と堀」型の導入に比べ、はっきりしなくなっています。固定された境界の中では、データセンター内の単一の Web Application Firewall(WAF)導入で複数アプリケーションを守りやすかったです。いまはこの方法では柔軟性が足りません。アプリケーションとサービスが従来のデータセンターの外へ広がるためです。ハイブリッド構成や SaaS の採用には妥当な理由が多く、そのシナリオをカバーするよう WAF の考え方を更新する価値があります。

クラウドベースの WAF は、オンプレミス、クラウドの IaaS / PaaS、ハイブリッド環境に展開されたアプリケーションとサービスを、柔軟な導入モデルでカバーし、境界の拡大を抑えられます。

一方、クラウドベース WAF の実装を誤ると、セキュリティポリシーの断片化と重複が起き、保守と監視の両方でオーバーヘッドが増えます。非効率の経済的影響に加え、セキュリティ態勢そのものも低下します。最終的には、シナリオに応じたさまざまな重大度のインシデントにつながり得ます。

対象読者と学べること

本デザインガイドは、複数のアプリケーション、ドメイン、サービスにまたがり、ハイブリッド環境へ展開できる、柔軟なクラウドベース WAF 構成を実装したいセキュリティ / ネットワーク管理者およびアーキテクト向けです。

Cloudflare は、高度に設定可能なクラウドベースの Web Application Firewall(WAF)を含む、包括的な Application Security & Performance ソリューションを提供します。

このガイドでは次を学びます。

  • Cloudflare WAF の導入と、共通ルールのくくり出し方
  • 複数アプリケーションへ共通構成を簡単に適用する方法
  • 必要なときに例外と個別構成をデプロイする方法
  • Cloudflare WAF 導入時のベストプラクティス

シナリオ例

多くの Cloudflare 顧客は、1 つのアカウント(または Enterprise Organization)内に複数の Cloudflare ゾーンをオンボードします。各ゾーンは通常セカンドレベルドメイン(example.com など)に対応し、そのサブドメイン(web1.example.comweb2.example.com など)はそのゾーンで扱います。

この構成では、Cloudflare は DNS ベースのリバースプロキシです。各 Fully Qualified Domain Name(FQDN)をゾーンに設定し、顧客のオリジンサーバーを指します。オリジンの場所について、Cloudflare は特別な区別をしません。オンプレミス、クラウド上の仮想マシン、第三者の SaaS のいずれでも構いません。

複数の FQDN が、IP アドレスや別の FQDN などで到達する共有 Web インフラを指すこともよくあります。一部の FQDN は専用オリジンや外部 SaaS エンドポイントを指す場合もあります。

多くの場合、顧客は 1 つのアカウント内で多数のゾーン(example.comexample.orgmyappexample.com など)と、各ゾーン内の多数の FQDN を管理します。複数ゾーンにまたがる多くの FQDN が、背後では共有 Web インフラを指すこともよくあります。

たとえば、次のような状況です。

  • Web アプリケーションの大半は、新たに導入した社内コンテンツ管理システム(CMS)上で動く
  • 独自スタックで動くレガシー Web アプリケーションもある
  • 一部のアプリケーションはパートナーが管理する専用インフラ上にある

シナリオ例を次の図に示します。 複数ドメイン、サブドメイン、Web アプリケーションのシナリオ例

WAF の要件

WAF 設定の観点では、次の要件が浮かびます。

  • 大半のアプリケーションの前に、標準の WAF ルール構成を簡単にデプロイできること
  • 誤検知が出やすいレガシーアプリケーションの前では、デプロイするルールを細かく調整できること
  • 上記に当てはまらないすべての Web トラフィックに、Cloudflare のデフォルト WAF 設定が必ず当たる「キャッチオール」構成があること
  • アプリケーションの追加・削除に対し、初期設定と継続保守の手間を最小にすること

本ガイドでは、Cloudflare WAF の動作と、上記のアーキテクチャ要件を満たすためのツールを確認します。

Cloudflare Web Application Firewall

Cloudflare WAF はゾーンレベルとアカウントレベルの両方で動作します。Custom Rules、Rate Limiting Rules、Managed Rules に対応する異なる WAF フェーズhttp_request_firewall_customhttp_ratelimithttp_request_firewall_managed)があります。これらのフェーズはアカウントとゾーンの両方に存在します。詳細は こちらのドキュメント を参照してください。アカウントのルールセットはゾーンのルールセットより先に評価される点が重要です。

ユースケース例 — Cloudflare Managed Ruleset の実装

本ガイドでは、上記のシナリオと WAF 要件を基に進めます。1 つの Cloudflare アカウント(または Enterprise Organization)に、2 つのセカンドレベルドメインがオンボードされているとします。

2 つのドメインにまたがる 6 つの FQDN の背後に 6 つのアプリケーションがあるとします。これらにはベースラインの WAF セキュリティ態勢を適用したいです。ただし 6 つのうち 2 つは特別な扱いが必要です。

  • 1 つは誤検知が出やすいレガシーアプリケーションサーバー上にある
  • もう 1 つは第三者のインフラ上に実装されている

シナリオを次に示します。

シナリオ例を複数ゾーンの Cloudflare アカウントとしてモデル化した図
図 2: 複数ゾーンの Cloudflare アカウントに置いたシナリオ例

アカウントレベル WAF で設定オーバーヘッドを抑える

例として Cloudflare Managed Ruleset を使います。同じ考え方は、ほかの Cloudflare Managed Rules、Rate Limiting Rules、Custom Rules にも使えます。

  • web1.example.comweb2.example.comweb3.example.comweb5.example.org には、Cloudflare がすでに調整したデフォルトの WAF Managed Ruleset を適用します。
  • special4.example.com には、レガシーアプリケーションで誤検知を起こすルールをいくつか特定済みのため、デフォルト Managed Ruleset の別サブセットを適用します。
  • special6.example.org には、第三者の新規アプリケーションのため、保護方針の評価を始める段階として、Managed Ruleset をログモードで適用します。

次の方針を取れます。

  • アカウントレベルで Cloudflare Managed Ruleset を 1 インスタンスデプロイし、それを必要とする 4 つの FQDN 向けの共通ルールセットにします。ゾーンレベルで同じ構成を 4 回複製するより、設定と保守が簡単です。
  • special4.example.comspecial6.example.org には、各 FQDN 背後のアプリケーションに必要な調整を加えた Managed Ruleset を、さらに 2 インスタンスデプロイします。

実際には、アカウントレベル WAF の Managed rulesets で Managed Ruleset を 3 インスタンスデプロイします。各インスタンスは独自の Custom Filter Expression を持ち、HTTPS リクエストのホスト名がリスト内の FQDN に属するかを確認します。

  • 最初のリスト(web1.example.comweb2.example.comweb3.example.comweb5.example.org)には、Cloudflare Managed Ruleset を Default 構成で適用します。
  • special4.example.com では同じルールセットを Default モードでデプロイしますが、誤検知を起こす特定ルールは無効にします。これはダッシュボードまたは API の Rule Overrides で行えます。実例はこちら です。
  • special6.example.org では最初のリストと同様の設定を繰り返し、今回は Managed Ruleset インスタンスを Default ではなく Log モードにします。

完成した構成を次の図に示します。

アカウントレベルで実装した WAF 構成
図 3: 繰り返し可能な構成で、異なるホスト名の複数アプリケーションを保護するアカウント WAF 実装

この設定で、アプリケーショングループごとに調整した Managed Ruleset が 3 インスタンスになります。

将来保護するアプリケーションを追加する場合は、フィルター式に新しい FQDN を足すだけで十分です。多くは、推奨の Cloudflare 構成を使う標準ルールセットインスタンスに追加します。別のよくある戦略は、新規アプリケーションを Log モードインスタンスに追加し、監視したうえで Default モードのルールセット、または必要ならより個別のバリエーションへ移行することです。

追加の考慮事項

誤検知のチューニング

ルールセット(特に Managed Ruleset)は、Cloudflare がすでに誤検知を避けるよう細かく調整しています。大半のアプリケーションでは、ほとんど、またはまったく調整せずにデプロイできます。つまり、多くの場合はデフォルトのルールセット構成で直接運用し、必要なときだけカスタマイズします。

このシナリオなら、Exceptions を使い、上記の設定を次のように簡略化できます。

  • まず、ルールセットを Log モードでデプロイし、特別な扱いが必要なアプリケーション(FQDN)を特定します。たとえばテストの結果、special1.example.com では Managed Rules の小さなセットを無効にし、special2.example.org では似ているが異なるセットを無効にする必要があるとします。
  • 各 FQDN にマッチするフィルター付きのマネージド Exceptions を 2 つデプロイし、Managed Ruleset からそれらのルールをスキップします。
  • 最後に、それ以外すべてにマッチする Default 版の Managed Ruleset をデプロイし、Cloudflare 推奨設定を実行します。

例外が少なく、初期キャリブレーションで Cloudflare の誤検知最小化が自社環境でも妥当だと確認できた場合、この方法の方が簡単です。

リストの利用

Cloudflare では ホスト名のリスト を作成できます。この場合、フィルター式をそのリスト変数を参照するよう変更できます。

リストを直接更新し、複数のルールセットで再利用できます。たとえば同じリストを Cloudflare Managed Rules、OWASP Ruleset、Rate Limiting に使えます。フィルターは リストを直接参照するため、構成がきれいで保守しやすくなります。

リストを使うと、評価順の最後に実行する「キャッチオールルール」も導入しやすくなります。たとえば、HTTPS リクエストのホストがどのリストにも含まれない場合に Default の Cloudflare Managed Ruleset を実装できます。これにより、アプリケーションが誤ってリストに追加されなくても、デフォルトの WAF Managed Rules 構成が常に適用されます。

自動化の利用

WAF 構成は APITerraform で管理できます。ゾーンと FQDN がさらに多い場合や、ダッシュボード上の繰り返し作業を避けたいときに特に有用です。

たとえば、Rulesets と Lists を定義するデフォルトの Terraform 構成ファイルを作り、ダッシュボードを変更せずに保守・適用できます。

アカウントレベルとゾーンレベルの混在を避ける

可能な限り、特に 1 つのゾーンに複数の DNS レコードがありそれぞれ個別構成が必要な場合は、アカウントレベルで構成を保つことを Cloudflare は推奨します。

ゾーンレベル WAF では、各ルールセット(Managed Rules、OWASP Rules など)を 1 インスタンスしかデプロイできず、特別なシナリオの扱いはより複雑、または不可能です。

Custom Rules と Rate Limiting Rules

上記の Managed Rules の考え方は、Custom RulesetsRate Limiting にも適用でき、手元のすべての WAF セキュリティツールに柔軟性を広げられます。

単一ゾーン固有の構成でなければ、アカウントレベルでの実装を Cloudflare は推奨します。

詳細は次のリソースを参照してください。

まとめ

本デザインガイドでは、複数のアプリケーションとドメインをカバーする柔軟な WAF 構成の実装方法を示しました。この方針により、WAF セキュリティ構成のデプロイ、保守、更新の手間を減らせます。

役に立ちましたか?