[PR] 本記事にはプロモーションが含まれています。

【GoAccess】後編:レポートで怪しいアクセスとWordPressの負荷を調べる|404の一覧・IPごとのアクセス・よく呼ばれるURL

GoAccess

【2026年8月12日時点の情報です】

前編では、GoAccess のHTMLレポートの全体の見方を紹介しました(「前編:HTMLレポートの見方」)。後編では、同じレポートを使って、怪しいアクセスとWordPressの負荷になっているアクセスを調べる方法をまとめます。

GA4はページのJavaScriptが動いたアクセスしか数えないので、存在しないファイルを探し回るボットなどは見えません。サーバーのログを数える GoAccess だと、そういうアクセスも見えます。

怪しいアクセスを調べる

404の一覧:存在しないファイルを探すボット

「見つからなかったURL(404)」のパネルには、サイトに存在しないパスへのアクセスが並びます。

後編:レポートで怪しいアクセスとWordPressの負荷を調べる:404の一覧:存在しないファイルを探すボット

このブログでよく見かけるのは、次のようなアクセスです。

  • /.env:データベースのパスワードやAPIキーを書いておく設定ファイルを探すアクセス
  • /.git/config:Gitの管理情報を探して、ソースコードや秘密の情報を取り出そうとするアクセス

どちらも特定のサイトを狙っているのではなく、インターネット中のサイトに自動で試しているボットです。404になっていれば、ファイルは読まれていません。大事なのは、こういうファイルが外から読める状態になっていないかを、自分でも確かめておくことです。

Bash
# 外からアクセスしたときのステータスコード(200 でなければ読めていない)
curl -s -o /dev/null -w "%{http_code}\n" https://softdev-learn.cc/.env
curl -s -o /dev/null -w "%{http_code}\n" https://softdev-learn.cc/.git/config

# サーバーの公開フォルダに、そもそも置いていないか(何も表示されなければOK)
ls -a /var/www/html | grep -E '^\.(env|git)$'

200 が返ってきたら、そのファイルは誰でも読める状態なので、すぐに公開フォルダの外に移します。このブログでは、/.env へのアクセスは Cloudflare のWAFでも確認画面(チャレンジ)を出しているので、家の外から試すと 403 になります(「WAFのカスタムルールで自宅サーバーのWordPressを守る」)。

IPごとのアクセス:突出して多い相手を見つける

「訪問者のホスト名とIPアドレス」のパネルでは、IPアドレスごとのリクエスト数と転送量が分かります。Cloudflare Tunnelを使っている場合、ここに読者のIPアドレスが出るのは mod_remoteip の設定があるためです(「Cloudflare Tunnel経由のアクセスログに読者のIPアドレスを残す(mod_remoteip)」)。

後編:レポートで怪しいアクセスとWordPressの負荷を調べる:IPごとのアクセス:突出して多い相手を見つける

他より突出してリクエストが多いIPアドレスがあったら、そのIPアドレスでApacheのログを絞り込み、User-Agentとアクセス先のURLを見ます。検索エンジンやSEO会社のクローラーのこともあれば、ログイン画面や設定ファイルばかりを狙うボットのこともあります。実際に調べた例は「レポートに見知らぬ海外のIPv6アドレス、正体はMJ12bot」で紹介しています。

止めるなら、サーバーではなくCloudflareで

怪しい相手を止めたいとき、Cloudflare Tunnelを使っていると、サーバーのファイアウォール(firewalld)でIPアドレスを指定しても止まりません。サーバーに実際に接続してくるのは、いつも同じサーバーの中の cloudflared だからです。

止め方Tunnelで効くか備考
CloudflareのWAFでIPアドレスや国を指定する効くサーバーに届く前に止まるので、負荷もかからない
Apacheの Require ip(.htaccess など)効く(mod_remoteip があれば)サーバーまでは届くので、負荷は減らない
サーバーのファイアウォール(firewalld)効かない接続元はいつも cloudflared

クローラーなら、まず robots.txt で断るのが穏やかです。指示に従わない相手や、明らかに攻撃目的の相手は、CloudflareのWAFで止めます。

WordPressの負荷になっているアクセスを調べる

よく呼ばれるURL:ページを開くたびに動く処理

「リクエストされたファイル(URL)」のパネルでは、アクセスの多いURLが並びます。記事のページに混じって、人が直接開かないURLが上位にいたら、ページの裏で動いている処理です。

後編:レポートで怪しいアクセスとWordPressの負荷を調べる:よく呼ばれるURL:ページを開くたびに動く処理

このブログでは、/wp-json/wp-statistics/v2/hit が上位に出ていました。アクセス解析のプラグイン「WP Statistics」が、ページが開かれるたびに記録のために呼ぶURLで、呼ばれるたびにPHPとデータベースの処理が動きます。

GA4とGoAccessでアクセスを見られるなら、同じような解析をするプラグインを止めると、その分の処理を減らせます。私は今も使っているので、止めるか検討しています。

なお、このブログのレポートでは管理画面(/wp-admin/)を除外しているので、admin-ajax.php を使うプラグインの通信はここには出ません(「レポートから自分のアクセスやWordPressの内部通信を除外する」)。

静的ファイル:転送量の多い画像やスクリプト

「静的ファイル」のパネルでは、画像やCSS、JavaScriptのリクエスト数と転送量を確かめられます。

後編:レポートで怪しいアクセスとWordPressの負荷を調べる:静的ファイル:転送量の多い画像やスクリプト
  • 転送量の多い画像:
    上位の画像は、小さくするか、WebPに変えると転送量を減らせます
  • どのページでも読み込まれるスクリプト:
    問い合わせフォームなど、一部のページでしか使わないプラグインのJavaScriptやCSSが、全ページで読み込まれていないかを見ます

ただし、このブログは前にCloudflareを置いているので、画像やCSSの多くはCloudflareが保存して返していて、サーバーまで来ません。このパネルに出るのは、「Cloudflareにまだ保存されていなかった分」だけです。読者に届いている量そのものではないので、「どのファイルが重いか」の目安として見ています。

まとめ

  • 404の一覧には、/.env や /.git/config を探すボットが出る。外から読めないことを curl で確かめておく
  • IPごとのパネルで突出した相手を見つけたら、ログでUser-Agentとアクセス先を確かめる
  • Cloudflare Tunnelでは、止めるのはサーバーのファイアウォールではなくCloudflareのWAF
  • よく呼ばれるURLに、ページごとに動くプラグインの処理がないかを見る
  • 静的ファイルは、Cloudflareに保存されていない分だけが出る。重いファイルの目安として見る

前編:HTMLレポートの見方|リクエスト数・訪問者数・時間帯・OSとブラウザ

コメント