WordPressのXML-RPC機能を無効にして不正アクセスを防止

WordPress 6.4.3
広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

概要説明

xmlrpc.php攻撃の対象になる可能性があるため不要であれば無効化するカスタマイズ。ただし、Jetpack や WordPress のスマートフォンのアプリ、投稿をほかのサービスから送る機能などは、XML-RPC を使うことがあります。これらを使っているサイトでは止めないでください(止めると、つながらなくなります)。

.htaccess にてアクセスを制限する

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

functions.php にてヘッダーから削除

functions.php
/*----------------------------------------------------
 xmlrpc.phpを無効化
----------------------------------------------------*/
add_filter( 'xmlrpc_enabled', '__return_false' );
remove_action('wp_head', 'rsd_link');
htmlソース
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://xxxxxxx/xmlrpc.php?rsd" />

上記のxmlrpc.phpを含む記述がhtmlソースから消えたことを確認してください。

テーマのファイルに残っている pingback のリンクを探して消す

// 該当記述を探して削除
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>">

XML-RPCの状態を確認

https://確認したいWordPressサイトのURL/xmlrpc.php にアクセスしてみてください

ブラウザで開いて「XML-RPC server accepts POST requests only.」と出たら、止まっていません。ただし、止まっているかは、POST で確認する必要があります(下の記事 1377)。

POST での確認のしかたは「SiteGuard の XML-RPC 無効化が効かないとき:.htaccess で xmlrpc.php を止める」(記事 1377)に書いています。

xmlrpc.php のファイルを消しても、WordPress のバージョンアップのときに、また作られます。

プラグインで対応を行う場合

SiteGuard WP Plugin こちらでXMLRPCの制御が行なえます。
公式解説ページ

WordPressのXML-RPC機能を無効にして不正アクセスを防止
.htaccess
<Files xmlrpc.php>
    <IfModule authz_core_module>
        Require all denied
    </IfModule>
    <IfModule !authz_core_module>
        Order allow,deny
        Deny from all
    </IfModule>
</Files>

無効にする設定をすると、.htaccess に上のコードが追加されます。

WordPress Developer Resources

SiteBeacon(サイトビーコン)

サイトが止まったら、すぐに気づける。

ホームページを 5 分ごとにチェックして、止まったとき・エラーが出たとき・SSL やドメインの期限が近いときに、メールでお知らせします。2 サイトまでは、ずっと無料で使えます。

SiteBeacon を見る サイトを直す相談をする

監視で気づいたあとの直す作業も、同じ担当がお受けします。