ゾーンロックダウン
現在、Cloudflareの有料プランの顧客は、任意のホストまたはIPに対してヘルスチェックを構成できます。ゾーンロックダウンは、ドメイン、サブドメイン、またはURLにアクセスを許可されるIPアドレス、CIDR範囲、またはネットワークのリストを指定します。これにより、単一のルール内で複数の宛先を指定でき、IPv4およびIPv6アドレスもサポートされます。ゾーンロックダウンルールに指定されていないIPアドレスは、指定されたリソースへのアクセスを拒否されます。
顧客がゾーンロックダウンを有効にすると、そのゾーンを対象とするヘルスチェックは、所有権に関係なく通過します。これは、CloudflareのASNが許可リストに含まれているためです。
CloudflareのASNは許可リストに含まれています。これにより、ヘルスチェックはゾーンロックダウンをバイパスできます。ただし、これにより脆弱性が生じ、その動作は変更され、デフォルトでヘルスチェックがゾーンロックダウンを通過できなくなります。ゾーンロックダウンを使用している顧客で、ヘルスチェックを引き続き通過させたい場合は、以下のガイドに従ってゾーンロックダウンをバイパスできます。
WAFカスタムルールを使用してゾーンロックダウンをバイパスするには:
- Cloudflareダッシュボード ↗にログインし、アカウントとドメインを選択します。
- セキュリティ > WAF > カスタムルールに移動します。
- ルールを作成を選択します。
- ユーザーエージェントに一致するカスタムルールを作成します。
- アクションをスキップに設定し、スキップするその他のコンポーネントの下で対応する機能をゾーンロックダウンに設定します。
Cloudflareのヘルスチェックは、以下の形式のユーザーエージェントを持っています:
Mozilla/5.0 (compatible;Cloudflare-Healthchecks/1.0;"+https://www.cloudflare.com/; healthcheck-id: XXX) ここで、XXXはヘルスチェックIDの最初の16文字に置き換えられます。
特定のヘルスチェックを許可するには、ユーザーエージェントにヘルスチェックIDの最初の16文字が含まれているか確認します。
この例では、ID {ruleset_id} のルールセットに新しいWAFカスタムルールを追加し、ユーザーエージェントに 1234567890abcdef を含む受信リクエストのゾーンロックダウンをスキップします:
curl "https://api.cloudflare.com/client/v4/{zone_id}/rulesets/{ruleset_id}/rules" \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "action": "skip", "action_parameters": { "products": [ "zoneLockdown" ] }, "expression": "http.user_agent contains \"1234567890abcdef\"", "description": "ゾーンロックダウンをバイパス - 特定のヘルスチェック"}'