[WordPress] 404も無視してはいけない! 定期的に同じファイル名にアクセスしていればブロックの対策を考える必要性が高い [2025/04/16]

Itc it network security

あやしい定期的なアクセスをブロックする

WP-OptimizeはWordPressのサイトヘルスに,404(ページがない)を報告してくれているよだ.

いっこうに404アクセスが減らないので,少しちゃんと内容を確認してみた.記録には,xmlrpc.phpともう一つのファイルにアクセスしているようだが,それが定期的であると判断できた.そこで,Aiに聞いてみると.セキュリティ的にリスクがあるのでブロックすることを勧められた.

サイトヘルスの内容

WP-Optionパフォーマンス -> Issues impacting your site performance “123 URLs with many 404 Not Found requests確認”

数日間の記録であるが,123 URLsにサーチを掛けているようである.

対策は,

「.htaccess」に以下のコードを追記した.これによりxmlrpc.phpへのアクセスは門前払いとなる.

今後,様子をみることにする.

<Files "xmlrpc.php">
  Require all denied
</Files>

AIに聞いてみた!

その内容は以下の通り

AIに聞いてみた! [Q1]・・・

Q : xmlrpc.phpに対して定期的な時間でアクセスされている記録がある.wordpressのサイトヘルスにはnot found requestとして記録されている.セキュリティー上リスクが高いと考えられか

ChatGPT:

はい、ご指摘の通り、xmlrpc.php に対して 定期的なアクセス(特に Not Found として記録されるようなリクエスト) がある場合、セキュリティリスクの兆候である可能性が高いです。
特に WordPress サイトにおいては、xmlrpc.php は過去に多くの悪用事例があるため、使用していない場合は無効化することが強く推奨されます


✅ なぜ xmlrpc.php へのアクセスはリスクになるのか?

リスク内容
🔐 ブルートフォース攻撃XML-RPC は system.multicall という機能で「1リクエストに複数ログイン試行」が可能。大量のログイン試行を効率的に実施される可能性があります。
🌐 DDoS攻撃の踏み台pingback.ping を悪用し、他サイトへのDDoSに加担させられる(反射型攻撃)
👻 自動Botによる脆弱性探索実際に xmlrpc.php が有効かどうかをスキャンするBotが多数存在します

✅ 「Not Found Request」に出ているのに危険?

はい、それでも危険性はあります。

  • xmlrpc.php が実際には削除・ブロックされている(またはルールで遮断されている)ために「Not Found」になっていても、
  • 攻撃対象としてスキャンされ続けているという事実自体が、Botから監視対象にされていることを意味します。

✅ 推奨対応策(使っていない場合)

🔒 1. アクセス完全遮断(.htaccessで)

apache:
全部のアクセスを制限する場合(以下のコード)

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>


一部サービスを許可する場合(以下のコード)

<Files "xmlrpc.php">
Order Deny,Allow
Deny from all
Allow from 203.0.113.5
</Files>

🔒 2. Nginx でブロック

nginx:(以下のコード)

location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}

🔒 3. プラグインでブロック(コード不要)

プラグイン説明
Disable XML-RPC完全無効化。軽量で安全。
Wordfence Securityxmlrpc.php に対する攻撃検出・制限・通知が可能
All In One WP Securityブロック設定のGUI対応あり。簡単に遮断可

✅ 使用しているか確認するべきサービス

サービスxmlrpc.php 必要か?
Jetpack(旧バージョン)✅ 必要(新バージョンは REST API 対応済)
WordPressモバイルアプリ✅ 必要
IFTTTなど連携投稿系✅ 場合によっては使用
それ以外/使っていない❌ 無効化推奨

🛡 サイトヘルスでNot Foundと記録される場合の意味

  • サイト自体が「xmlrpc.php はもう存在しない(またはアクセスできない)」と認識している
  • しかし外部からリクエストが来続けている(Bot or 攻撃者)

アクセスはブロックしつつ、ログに残さないようにすることがベスト


✅ まとめ

質問回答
xmlrpc.php への定期的アクセスはリスク?✅ はい、攻撃スキャンの可能性が高い
Not Foundでも問題ある?✅ アクセスしようとしている事実自体が警戒対象
対策は?❌ 使用していなければ .htaccess またはプラグインで遮断すべき

AIに聞いてみた! [Q2]・・・

Q2 : wordpressのルートディレクトリにある”.htaccess”ファイルに”xmlrpc.php”へのアクセスをブロックする設定を記載するのでよいか?

ChatGPT:

はい、WordPress のルートディレクトリにある .htaccess ファイルに xmlrpc.php へのアクセスブロックを記載するのは、非常に適切なセキュリティ対策です。
.htaccess は Apache サーバーでのディレクトリごとのアクセス制御が可能な設定ファイルで、xmlrpc.php への不要なアクセスを効率的に遮断できます。


✅ 推奨される .htaccess の記述例

以下のコードを .htaccess の末尾または WordPressのデフォルトルールの**外側(下)**に追加します:

apache:

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

🔒 より新しい Apacheバージョン(2.4 以降)向けの記述(推奨)

Apache 2.4 以降を使用している場合はこちら:

apache:
<Files "xmlrpc.php">
Require all denied
</Files>

📌 記述場所の注意点

.htaccess ファイルの構成:

apache:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
...
</IfModule>
# END WordPress

# xmlrpc.php アクセス拒否(←このように WordPressブロックの外に記述)
<Files "xmlrpc.php">
Require all denied
</Files>

✅ ブロックされるとどうなる?

  • https://yourdomain.com/xmlrpc.php にアクセスしても、403 Forbidden が返されます
  • ブラウザやBotからのアクセスも無効化されます
  • WordPressサイトの通常の動作には影響ありません(xmlrpc.php を使っていない限り)

✅ 例外:xmlrpc.php が必要な場合は?

一部サービスだけ許可するには IP制限付き設定も可能:

apache:
<Files "xmlrpc.php">
Order Deny,Allow
Deny from all
Allow from 203.0.113.5
</Files>

✅ まとめ

項目内容
.htaccess に書いてよいか?✅ 問題なし。最もシンプルで効果的な遮断方法
推奨の書き方Apache 2.4 以降なら Require all denied
影響xmlrpc.php を使用していなければサイトには一切影響なし
目的不正アクセス、スキャン、DDoS踏み台化などのリスクを軽減

編集履歴

2025/04/16 Mrはりきり