テック技報最新号へ →
セキュリティ

Cloudflare 無料プランで「探索系スキャン」を塞ぐ(ブロックログ起点のカスタムルール)

WordPress でも何でもない静的サイトにも wp-config.php~ や /.git/HEAD を探す自動スキャンが毎日届く。セキュリティ分析画面で実際に狙われたパスを確認し、自サイトに存在しえないパスをカスタムルールで弾き、そもそも残りやすいファイルを置かない。

@yousukezan · 2026-10-13
#cloudflare#waf#recon#static-site#hardening

実際に届いていたもの(元記事の 7 日間の集計)

Cloudflare 無料プランの静的サイトで、7 日間に約 540 件がブロックされた。内訳は WAF Managed Rules 約 280 件、WAF Custom Rules 約 250 件、Rate Limiting 0 件。

  • 設定・バックアップファイル探索(最多): wp-config.php~、拡張子なし、.bak、.save、.old、.swp、_old2021、.zip、.orig、.txt など。エディタの一時ファイルや手作業バックアップの名前を総当たりしている。
  • 機密・開発用ファイル: /.git/HEAD、/wp-json/batch/v1、/_next、/@fs/wp-config.php(Vite 開発サーバーの /@fs/ 経由の読み出し狙いと思われる)。
  • ログイン・管理画面・API: /login、/dashboard、/api、/api/auth、/admin。
  • サイト構成と無関係な一般的パスばかりなので、特定サイト狙いではなく不特定多数への自動スキャン。アクセス元の国(中国・シンガポール・オランダ等)は経由地であって攻撃者の所在地とは限らない。

手順

  1. まず見る: ダッシュボードの Security → Analytics(セキュリティ分析)で直近 7 日を選び、ブロックされたパス・国・検知元(Managed / Custom / Rate Limiting)を確認する。表示されるのはブロック分だけなので、通過したリクエストはアクセスログで別途確認する。
  2. 既定の防御を確認: Free Managed Ruleset は全プランで使え、無料プランでは既定で有効。Bot Fight Mode は無料プランでオン/オフのみ(細かい調整やカスタムルールでのスキップは不可)なので、正規ボットや API クライアントへの影響を見てから入れる。
  3. カスタムルールで「存在しないはずのパス」を弾く(以下は筆者が組み立てた式の例。サイトに合わせて調整):
    (http.request.uri.path contains "wp-config")
    or starts_with(http.request.uri.path, "/.git/")
    or starts_with(http.request.uri.path, "/@fs/")
    or starts_with(http.request.uri.path, "/wp-")
    or ends_with(http.request.uri.path, ".bak")
    or ends_with(http.request.uri.path, ".swp")
    or ends_with(http.request.uri.path, ".old")
    or ends_with(http.request.uri.path, "~")

    いきなり Block にせず、まず Log で数日回して正規アクセスが引っかからないことを確かめてから Block / Managed Challenge に切り替える。無料プランのルール数上限は公式ドキュメントで確認する。

  4. ログイン画面・API があるなら Rate Limiting: 無料プランは「IP 単位・10 秒間のカウント・Block・ブロック 10 秒」の固定設定(元記事が公式ドキュメントから引用)。ブルートフォースの初期段階を鈍らせる用途。
  5. 根本対策はファイルを置かないこと: 公開ディレクトリにバックアップ・一時ファイルを残さない、.git や .env をデプロイ対象に含めない、ライブラリを最新に保つ。WAF は「漏れていたら困るファイルが実在する」状態の保険にすぎない。

注意点

  • Bot Fight Mode やパス一致のブロックは、監視サービスや自前の CLI からのアクセスまで止めることがある。導入直後は Security Events を確認する。
  • 集計画面ではどの Managed Rule が何件ブロックしたかの内訳までは追えない場合がある(元記事でも未確認)。
  • 公開直後からスキャンが来る前提での準備は 公開した HTTPS サイトは「即」スキャンされる前提で準備する も参照。

出典

X の元の投稿を開く