Contents
1. Cloudflare アカウントの取得とドメイン追加
1‑1. アカウント作成の概要
Cloudflare の全機能はダッシュボードから操作できます。まずは公式サイトでアカウントを作り、メール認証で有効化します。
| 手順 | 操作内容 |
|---|---|
| ① | https://cloudflare.com にアクセスし右上の 「Sign Up」 をクリック |
| ② | メールアドレス・パスワードを入力、送信された認証メールでアカウントを有効化 |
| ③ | ログイン後に表示されるダッシュボードが管理拠点となります |
ポイント:メール認証は不正登録防止だけでなく、パスワードリセットや二要素認証設定のベースになるため必ず完了させましょう。
1‑2. ドメインを Cloudflare に追加する手順
ダッシュボード左上の 「Add a site」 ボタンから対象ドメインを登録します。ここでは example.com を例に説明します。
- Add a site → ドメイン名(例:
example.com)を入力し Continue。 - プラン選択画面で Free をそのまま選択し Continue。
- Cloudflare が自動的に現在の DNS レコードをスキャンし、一覧が表示されます。必要に応じてレコードを編集・削除し Continue。
注意点:Free プランでも基本的な WAF は利用可能ですが、プランや UI の変更に伴い機能提供状況が変わることがあります。設定前に公式ドキュメントで「Free plan WAF availability」を必ず確認してください。
2. DNS 委譲(ネームサーバー変更)とレコード確認
2‑1. ネームサーバー委譲の重要性
Cloudflare が提供する WAF やキャッシュは、ドメインの DNS クエリが Cloudflare のネームサーバーを経由したときに初めて有効になります。そのため、レジストラ側で NS レコードを書き換える必要があります。
手順概要
- ダッシュボード上部の 「DNS」 タブで表示される 2 つのネームサーバー(例:
ara.ns.cloudflare.comとbob.ns.cloudflare.com)をコピー。 - 使用中のレジストラ(GoDaddy、Namecheap 等)の管理画面へログインし、対象ドメインの 「Nameserver」 設定ページへ移動。
- 既存の NS レコードを削除し、先ほどコピーした Cloudflare のネームサーバーに置き換えて保存。
プロパゲーション目安:DNS の委譲は通常 12〜48 時間 で全世界に反映されます。
dig NS example.comコマンドで新しい NS が返ってくることを確認したら、次のステップへ進みましょう。
2‑2. Cloudflare 側 DNS レコードの最終チェック
委譲が完了した後も、レコードが欠落するとサイトが表示されなくなるリスクがあります。以下のポイントを必ず確認してください。
| チェック項目 | 推奨設定 |
|---|---|
A / CNAME レコード |
本番サーバー IP(例: 192.0.2.10)が正しく登録されているか |
MX レコード |
メール配送に使用するサーバー情報が残っているか |
| TTL | Auto に設定して Cloudflare が最適化できるようにする |
ベストプラクティス:レコード変更後はブラウザでサイトへアクセスし、表示やメール受信が正常に行えることを確認してください。
3. WAF の有効化と Free Managed Ruleset の設定
3‑1. WAF をオンにする手順
Cloudflare の Security → WAF メニューからワンクリックで保護を開始できます。Free プランでも「Free Managed Ruleset」(OWASP Top 10 に準拠)が自動的に適用されます。
- ダッシュボード左側メニューの 「Security」 → 「WAF」 を選択。
- 「Web Application Firewall」のスイッチを ON にするだけで即座に保護が開始。
- 画面下部の 「Managed Rulesets」 セクションで 「Free Managed Ruleset」 がチェックされていることを確認。
最新情報の確認:UI の項目名は随時変更される可能性があります。現在は「Managed Ruleset sensitivity」や「WAF Settings」などの名称が使われていますので、設定画面で該当項目を探す際は公式ヘルプページをご参照ください。
3‑2. Free Managed Ruleset と有料ルールセットの違い
Free プランでは OWASP Top 10 に対応した約 30 種類 のシグネチャが提供されます。対照的に有料プランでは PCI DSS、ISO27001、業種別シグネチャ等、100 以上 の高度なルールが利用可能です。
| 項目 | Free Managed Ruleset (OWASP Top 10) | 有料ルールセット例 |
|---|---|---|
| カバー範囲 | SQLi・XSS・CSRF 等主要 10 大脆弱性 | PCI DSS、ISO27001、業種特化シグネチャ |
| ルール数 | 約 30 種類 | 100 + 種類 |
| カスタマイズ | 有効/無効の切替のみ | 条件付き有効化・スコアベース設定 |
| コスト | 無料プランで利用可 | プロ/ビジネスプランで月額課金 |
実務上の判断:小規模サイトや個人ブログは Free Managed Ruleset だけで十分です。取引データを扱う EC サイトなどは有料ルールへのアップグレードをご検討ください。
4. カスタム Firewall Rule の作成例
Managed Rules だけでは対応できないシナリオがあります。Cloudflare の Firewall → Firewall Rules から独自条件を設定し、細かい制御が可能です。
4‑1. 特定パスへのブロック(例:/admin/)
管理画面やテスト用エンドポイントは外部から直接アクセスされると危険です。以下の手順で 403 を返すルールを作ります。
| 手順 | 操作内容 |
|---|---|
| 1 | 「Firewall」 → 「Firewall Rules」 → 「Create a Firewall Rule」クリック |
| 2 | ルール名に Block admin path を入力 |
| 3 | Expression editor に次の式を貼り付け http.request.uri.path starts_with "/admin/" |
| 4 | Action を 「Block (403)」 に設定し Save and Deploy |
4‑2. IP アドレス/サブネットのブロック例
悪意ある IP からのアクセスを一括で遮断したい場合は次のように設定します。
| 手順 | 操作内容 |
|---|---|
| 1 | 同様に「Create a Firewall Rule」クリック |
| 2 | ルール名 Block malicious IPs を入力 |
| 3 | 式を以下の通り記述 ip.src in {203.0.113.45, 198.51.100.0/24} |
| 4 | Action は 「Challenge (CAPTCHA)」 または 「Block」 を選択し保存 |
ヒント:IP リストは定期的に更新することで、継続的な攻撃からサイトを守れます。CSV ファイルで管理し、Cloudflare API から自動投入すると便利です。
5. WAF の動作確認・チューニング
5‑1. テスト方法と Security Events の見方
実際にリクエストがブロックされているかを curl でシミュレートし、ダッシュボードのイベントログで結果を確認します。
|
1 2 3 4 |
# XSS 疑似攻撃リクエスト(期待は 403) curl -s -o /dev/null -w "%{http_code}\n" \ "https://example.com/search?q=<script>alert(1)</script>" |
- 期待結果:
403が返り、Dashboard の 「Security Events」 にWAF: Blocked (OWASP‑003)と記録されます。 - 確認手順:Security Events → フィルタで
WAFを選び、Action をBlockに絞り込む。
5‑2. チューニング項目と推奨設定
| 項目 | 説明 | 推奨初期値 |
|---|---|---|
| ルール優先度 (Priority) | 小さい数ほど高優先度。競合時の適用順序を決定します。 | カスタムブロックは 1、Allow 系は 1000 以上に設定 |
| Sensitivity(感度) | Managed Ruleset の検知感度。Low/Medium/High が選択可能です。 | デフォルト Medium を使用し、誤検知が多いエンドポイントだけ Low に下げる |
| Rate Limiting の上限 | Free プランでは公式ドキュメントで「10 k リクエスト/日」程度と記載されていますが、実際の上限は変更される可能性があります。必ず最新プラン情報を確認してください。 | 必要に応じて Rate Limiting メニューからカスタムポリシーを作成 |
| アラート通知 | 「Notifications」→「Email Alerts」で WAF の Block イベントをメールや Slack へ転送できます。 | 重要なイベントは必ず Webhook(Slack)でも受信するよう設定 |
実装例:特定 API エンドポイントだけ感度を Low にすると、正当なリクエストがブロックされにくくなります。一方、管理画面や支払いページは High に保ち、攻撃検知率を上げます。
5‑3. よくあるエラーと対処法
| エラー | 主な原因 | 解決手順 |
|---|---|---|
| DNS ループ(ERR_TOO_MANY_REDIRECTS) | Cloudflare の CNAME とレジストラ側の A レコードが同時に残っている | レジストラ側の余分なレコードを削除し、Cloudflare のみで解決 |
| ルール競合(Block が Allow に上書き) | 複数の Firewall Rule が同一リクエストに対して異なるアクションを設定 | 「Priority」列でブロックルールを高優先度に変更 |
| Managed Ruleset が無効化される | プラン変更や UI の再ロード時に自動でオフになることがある | Security → WAF に戻り Free Managed Ruleset に再チェック |
6. Free プランと有料プランの機能比較(2024 年時点)
| 機能 | Free プラン | Pro / Business プラン |
|---|---|---|
| WAF (Free Managed Ruleset) | ✅ 利用可(OWASP Top 10) | ✅ さらに多くの Managed Rules が利用可能 |
| 有料 Managed Ruleset(PCI, ISO 等) | ❌ | ✅ |
| Bot Management(Advanced) | ❌ | ✅ |
| Rate Limiting(基本) | ✅ (上限は公式で確認要) | ✅ 無制限、細かい閾値設定が可能 |
| Load Balancing | ❌ | ✅ |
| カスタム SSL/TLS 設定 | ✅(標準オプション) | ✅ 高度な証明書管理・TLS 1.3 強制 |
| 24/7 優先サポート | ❌ | ✅ |
結論:まずは Free プランで WAF と基本的な Rate Limiting を導入し、トラフィックやセキュリティ要件をモニタリングします。PCI DSS 準拠が必要になる EC サイトや大規模トラフィックが発生するサービスでは、Pro/Business プランへのアップグレードを検討してください。
7. まとめと次のアクション
- 公式ドキュメントで最新情報を確認:Free プランの WAF 有無や Rate Limiting の上限は随時変更されるため、導入前に必ず Cloudflare ヘルプセンターをチェック。
- DNS 委譲が完了したら 12〜48 時間待ちし、
dig NS <domain>で正しく反映されたことを確認。 - WAF を ON にして Free Managed Ruleset が有効か検証し、必要に応じて感度や優先度を調整。
- カスタム Firewall Rule で独自要件をカバーし、IP ブロックやパス制限を実装。
- テストリクエストと Security Events のログ確認で保護が機能しているか定期的に検証。
この手順通りに設定すれば、無料プランでも主要なウェブ攻撃からサイトを守ることができます。ビジネス要件やトラフィック増加に応じて、有料プランへの段階的アップグレードを計画すると良いでしょう。