REPORT 01 / ORIGIN & EDGE LOG ANALYSIS
3日分のログ比較と
Cloudflare導入後の観測
インターネットに公開したWebサイトには、規模や業種にかかわらず、設定ファイルや既知の脆弱性を探す要求が届きます。当サイトで実際に記録された要求と応答を、観測結果として整理しました。
2026年10月16日(金)にCloudflareを導入しました。導入前の2期間と導入後の1期間のサーバーログに、CloudflareのFirewallイベントを加え、観測した攻撃試行と導入前後の変化を報告します。
KEY FINDINGS
観測の要点
総リクエスト数の比較
403・404・501の応答を記録
今回の出力データに含まれる件数
- 導入前は、総アクセスが減っていても探索が増加。10月10日分から14日分にかけて、.env関連要求は79件から434件に増え、PHP-CGI・Shellshock・SSRF型の試行も記録されました。
- 導入後は、サーバーへの到達件数と記録上の送信量が減少。総リクエストは22,027件から10,547件に減少しました。
- Cloudflare側でも探索の継続と遮断を確認。設定ファイルなどを探すアクセスに対し、カスタムルールによるブロックが記録されています。
DATA & TIME WINDOWS
資料と集計期間
一次資料は、studiomasao.comのサーバーアクセスログ3ファイル・エラーログ3ファイルと、CloudflareのFirewallイベントJSON 1ファイルです。以下の時刻はすべて日本時間(JST/UTC+9)です。
| 資料 | 実際の収録範囲 | 集計件数 |
|---|---|---|
| サーバー 10/10分(土)導入前 | 10/10 03:51:39 ~ 10/11 03:30:44 | アクセス 24,351 エラー 88 |
| サーバー 10/14分(水)導入前 | 10/14 03:18:23 ~ 10/15 03:17:01 | アクセス 22,027 エラー 344 |
| サーバー 10/18分(日)導入後 | 10/18 03:39:17 ~ 10/19 03:18:06 | アクセス 10,547 エラー 111 |
| Cloudflare JSON導入後 | 10/19 15:17:22 ~ 17:07:20 | 全ホスト 355 本体+www 244 |
サーバーの時間帯はアクセスログの収録範囲です。Cloudflareの件数は、一部サンプリングを含む今回の出力データ内の件数で、両者の収録時間帯は異なります。
BEFORE & AFTER
3期間で何が変わったか
| 指標 | 10/10分 導入前 | 10/14分 導入前 | 10/18分 導入後 |
|---|---|---|---|
| 総リクエスト | 24,351 | 22,027 | 10,547 |
| 1時間あたりの記録件数(概算) | 1,030 | 919 | 446 |
| 記録上の応答バイト数(MB) | 1,326.7 | 1,031.0 | 321.2 |
| HTTP 403 | 141 | 564 | 112 |
| HTTP 404 | 2,784 | 4,483 | 2,333 |
| HTTP 429 | 1 | 0 | 0 |
| HTTP 5xx(全件501) | 0 | 25 | 2 |
| エラーログ行数 | 88 | 344 | 111 |
| .env 関連要求 | 79 | 434 | 203 |
| .env 関連要求の割合 | 0.32% | 1.97% | 1.92% |
10/10 → 10/14:件数よりも中身が変化
総リクエストは9.5%減少した一方、.env関連要求は約5.5倍、403は4倍になりました。総アクセス数が減る一方で、設定情報を探す要求が増えていました。
10/14 → 10/18:記録件数が減少
総リクエストは52.1%、応答バイト数は68.8%減少しました。.env関連要求も434→203件に減りましたが、全記録に占める割合は1.97%→1.92%と近い値です。件数と割合の両方から変化を確認しています。
この比較は各期間の記録件数の変化を示しています。利用状況や曜日、キャッシュなども影響するため、Cloudflare単独の遮断率としては扱っていません。
OBSERVATIONS
ログから見えた探索・攻撃試行
主な探索・攻撃試行を9つに分類しました。件数は順に10/10分 → 10/14分 → 10/18分です。
Webシェル・PHP診断ファイルの探索
Web Shell / Diagnostic File Discovery
3 → 41 → 0件
既知のWebシェル名や
phpinfo.php、管理ツール名などを列挙するアクセスです。10/14分は404が24件、301が17件。ファイルの存在を調べる探索として分類しています。機密設定・認証情報の探索
Sensitive File / Credential Enumeration
.env関連:79 → 434 → 203件
データベースや外部サービスの接続情報が置かれやすい設定ファイルを、階層・拡張子・派生名を変えて探索しています。10/18分の203件は403が14件、404が187件、501が2件で、2xxはありません。Vite系のファイル・デバッグ用パスも28→56→30件あり、設定情報やプロセス情報を求める横断的な探索が続いています。
Gitリポジトリ露出の探索
Exposed Git Repository Probing
1 → 25 → 0件
.git/configなど、ソースコード管理情報の公開を探る要求です。10/14分は403が9件、404が14件、301が2件。2xxは記録されていません。301は別のURLへの転送を示す応答です。AI開発ツール・MCP設定の露出探索
AI Tool / MCP Configuration Disclosure Probing
0 → 10 → 0件
AI開発ツール、エディター、MCP連携用の設定パスを列挙する要求です。10/14分の該当10件はすべて403でした。開発用の設定情報を探すパターンとして分類しています。
SSRF型の要求・クラウドメタデータ探索
Server-Side Request Forgery / Metadata Probing
0 → 17 → 0件
クエリ等にクラウドのメタデータ取得先を指定し、サーバーから内部向け通信を起こそうとするパターンです。10/14分は200が14件、404が3件でした。200はWebページの応答を示すもので、攻撃の成功を示すものではありません。応答サイズについては後述します。
ThinkPHPのリモートコード実行試行
ThinkPHP RCE Probing
0 → 2 → 0件
ThinkPHPの関数呼び出し・ディスパッチを悪用する形の要求です。10/14分の2件は200で、通常のトップページと同じ応答サイズが記録されています。
Shellshock攻撃試行
Bash Environment Variable Command Injection
0 → 12 → 0件
User-AgentやRefererに、Bashの関数定義を悪用する特徴的な構文が含まれていました。10/14分は501が6件、404が6件です。いずれもエラー応答として記録されています。
PHP-CGI引数インジェクション
PHP-CGI Argument Injection
7 → 14 → 0件
PHPの設定値を外部入力から変更しようとする要求です。
allow_url_includeまたはauto_prepend_fileの指定を含む行を集計しました。10/14分は404が10件、405が4件。いずれもエラー応答として記録されています。クローラー名を使う自動的な横断探索
Automated Cross-Product Probing
検索・AIクローラー等を名乗るUser-Agentで、設定ファイルや複数製品向けのパスを短時間に列挙するパターンが複数日に見られました。今回の分類では、クローラーの名乗りよりも要求先や短時間の連続アクセスに着目しました。
このほか、WordPressのログイン・XML-RPC入口への要求は2→55→0件で、いずれも403でした。
RESPONSE ANALYSIS
どんな結果になったか
| 観測 | 応答の意味 |
|---|---|
| 403・404・405 | 拒否、対象未検出、メソッド不許可として応答したこと |
| 301・302 | 別の場所への遷移を指示したこと |
| 攻撃形式のクエリに200 | Webページへの要求に応答したこと |
| 501 | エラー応答が返ったこと |
| Cloudflareのblock | そのイベントでルールのブロック処理が記録されたこと |
200応答の具体例:本文サイズは通常ページと一致
10/14分のThinkPHP型2件とSSRF型13件は7,217バイト、別時刻のSSRF型1件は8,141バイトでした。それぞれ近い時刻の通常のトップページへのGETでも同じサイズが記録されています。これらは通常ページが返された可能性を示す記録です。
エラーログは、主にアクセス制御による拒否を記録
エラー543行のうち、AH01630(サーバー設定によるアクセス拒否)は83→339→110件、AH01797(アクセス制御による拒否)は2→2→1件でした。10/14分にはディレクトリ一覧の表示禁止を示すAH01276が3件あります。
10/10分には、ModSecurityがファイル部分を除くリクエスト本文について1MiBの上限超過を検出し、413で拒否した記録が3件ありました。この記録では、防御機能と拒否理由を具体的に確認できました。
会員ログインへのPOSTは67→13→35件で、すべて302(画面遷移)の応答でした。また、404には旧URLやリンク切れも含まれるため、404全件を攻撃として数えていません。
CLOUDFLARE OBSERVATIONS
導入後、エッジ側では何が見えたか
JSONの355件はすべてaction=block、source=firewallCustomでした。この資料には、カスタムルールによる遮断が記録されています。
| 対象ホスト | 海外アクセス遮断 | 設定ファイル遮断 | 計 |
|---|---|---|---|
| studiomasao.com + www | 241 | 3 | 244 |
| その他のサブドメイン | 111 | 0 | 111 |
| JSON全体 | 352 | 3 | 355 |
本体+wwwの244件を、要求内容から読み直す
| 要求の種類 | 件数 | 読み取れること |
|---|---|---|
| 設定・認証・開発情報の探索 | 120 | 環境設定64、クラウド認証13、Git・CI設定10、PHP診断6、その他開発設定27 |
| WordPress REST API関連 | 37 | CMS配下のAPI探索30件と、バッチAPIへのPOST 7件 |
| CMSの設置場所探索 | 14 | 複数の候補ディレクトリを列挙 |
| 公開ページ・公開資産など | 52 | 通常の閲覧・収集でも使われるURLへの要求 |
| トップページ | 18 | サイトのトップページへの要求 |
| HEADによる設定ファイル確認 | 3 | 同時刻・同一User-Agentの確認要求。検証アクセスの可能性があるため別枠で集計 |
特に、10/19 16:04:34〜16:04:36の間には、1つの接続元から本体とwwwに127イベント・90種類のパスが記録され、そのうち120件が設定・診断情報の探索でした。書き出し全体では同系統の探索が226件あり、サブドメインにも106件見られました。導入後も探索は継続し、この抽出分ではCloudflare側の遮断が記録されています。
海外アクセスの遮断には、設定ファイル探索だけでなく公開ページやトップページへの要求も含まれていました。このため、遮断件数は攻撃件数とは分けて掲載しています。
接続元IPの記録にも変化
10/18分では、ログに記録された接続元IPのうち10,418件(98.8%)がCloudflare公開IPv4レンジと一致しました。導入前は10/10分が0件、10/14分が2件でした。残り129件はすべて301でした。導入後はCloudflareの接続元IPが多く記録されるようになっています。Cloudflare公式IPv4レンジ
MEASURES SUGGESTED BY THE LOGS
今回のログから考えられる対策
今回の記録では、設定情報の探索と既知の脆弱性を狙う要求が目立ちました。こうしたアクセスへの備えとして、次の対策が有効と考えられます。
設定・開発用ファイルの公開を防ぐ
.envやGit、開発ツールの設定を探す要求が繰り返し届いていました。これらを公開領域に置かず、サーバー側でもアクセスを拒否する設定が、情報の持ち出しを防ぐ備えになると考えられます。
Cloudflareとサーバーの両方で防ぐ
Cloudflareでは探索の遮断を確認した一方、導入後のサーバーにも.env関連の要求が届いていました。Cloudflareのルールとサーバー側のアクセス制御を組み合わせることが、継続する探索への対策として有効と考えられます。
使用するソフトウェアを更新する
PHP-CGIやShellshockなど、既知の脆弱性を狙う形式の要求も記録されました。使用しているソフトウェアの更新も、こうした試行への備えとして有効と考えられます。
集計方法・参照資料
アクセスログ56,925行・エラーログ543行と、Cloudflareの355レコードを解析しました。アクセスはstudiomasao.comとwww.studiomasao.comを合算し、画像なども含めて1要求を1件として集計しています。エラーログは別集計です。1時間あたりの件数はアクセスログの収録時間幅から計算し、MBは1,000,000バイトとしています。
URLを最大3回パーセントデコードし、要求先やUser-Agent等の特徴から分類しました。.env関連にはクエリ内の指定や派生名も含みます。分類は重複し、再試行も別の要求として集計しています。HTTP応答は通信上の結果で、認証やサーバー内の処理結果とは区別しています。本文サイズの比較は補助情報です。
Cloudflareの選択期間は10/18 17:08:04〜10/19 17:08:04(JST)、実際の収録範囲は本文の表のとおりです。sampleIntervalは1が200件、2〜8が155件で、件数の補正はしていません。サーバーのログとは時間帯が異なり、両者を合算した攻撃総数や全通信に対する遮断率は算出していません。公開する情報は集計結果を中心とし、接続元IPや会員情報などは掲載していません。
ONGOING LOG REVIEW
今後のログ点検
今後も、探索の内容や拒否・遮断の記録を確認し、通常のご利用への影響にも配慮しながら対策を見直してまいります。
当店の取り組みと、お客様にお願いしたい対策は、以下のページでご案内しています。
