デフォルトでは、WAF マネージドルールは Cloudflare ダッシュボードで一括管理され、ほとんどの Web サイトと Web アプリケーションと互換性があります。ただし、誤検知と見逃しが起きることがあります。
- 誤検知: 正当なリクエストが悪意のあるものとして検出され、フィルターされること。
- 見逃し: フィルターされなかった悪意のあるリクエスト。
何を疑わしい内容とするかは、Web サイトごとに異なります。たとえば、PHP コードの投稿は通常は疑わしいです。一方、コーディングを教えるサイトでは、訪問者からの PHP コード投稿が必要になることがあります。この場合は、通常のサイト運用を妨げないよう、関連するマネージドルールを無効にしてください。
誤検知を調べるには、WAF マネージドルールを Simulate モードにします。このモードでは、受信リクエストをチャレンジしたりブロックしたりせず、想定される攻撃への応答を記録できます。あわせて、Security Events の サンプリングログ を確認し、どのマネージドルールが誤検知の原因かを特定します。
誤検知が見つかった場合の対処は、次のとおりです。
- クライアントの IP アドレスを IP Access Rules の許可リストに追加する: ブラウザーやクライアントが同じ IP アドレスからアクセスする場合は、許可するのがおすすめです。
- 該当するマネージドルールを無効にする: 誤検知のブロックやチャレンジは止まりますが、サイト全体のセキュリティは下がります。ルール ID
981176でブロックされたリクエストは OWASP ルールを指します。解消するには、OWASP の感度を下げます。 - ファイアウォールルール(非推奨)で WAF マネージドルールをバイパスする: Bypass アクションの ファイアウォールルールを作成 し、特定の条件の組み合わせで WAF マネージドルールを無効にします。たとえば、特定の URL と特定の IP アドレスまたはユーザーエージェントに対して マネージドルールをバイパス します。
- (非推奨)ある URL へのトラフィックで WAF マネージドルールを無効にする: その URL エンドポイントのセキュリティが下がります。Page Rules で設定します。
追加の指針は次のとおりです。
- 特定の 1 本のルールが誤検知の原因なら、ルール Group 全体を Off にするのではなく、そのルールの Mode を Disable にします。
- Web サイトの管理者領域で誤検知が起きる場合は、管理セクション(例:
example.com/admin)に対して Disable Security する Page Rule を作成します。
見逃しを特定するには、オリジン Web サーバー上の HTTP ログを確認します。見逃しを減らすには、次のチェックリストを使います。
-
Security > WAF > Managed rules で WAF マネージドルールは有効ですか?
-
Page Rules で WAF マネージドルールが無効になっていませんか?
-
すべてのマネージドルールがデフォルトで有効なわけではないので、各マネージドルールのデフォルトアクションを確認します。
- たとえば、Cloudflare は空のユーザーエージェントのリクエストをデフォルトで許可します。空のユーザーエージェントをブロックするには、ルールの Mode を Block に変更します。
- 別の例: 緩和されていない SQL インジェクション攻撃をブロックしたい場合は、Cloudflare Specials グループ内の該当する SQLi ルールが有効で、Block になっていることを確認します。
-
HTTP トラフィックを扱う DNS レコードは、Cloudflare 経由でプロキシされていますか?
-
ファイアウォールルールがマネージドルールを バイパス していませんか?
-
IP Access rules または ファイアウォールルール で許可した国、ASN、IP 範囲、IP アドレスが、攻撃トラフィックと一致していませんか?
-
悪意のあるトラフィックがオリジンの IP アドレスへ直接届き、Cloudflare の保護を迂回していませんか? オリジン Web サーバーでは、Cloudflare の IP アドレス 以外のトラフィックをすべてブロックします。