セキュリティ診断サービスで「xmlrpcが有効になっている」と怒られました。
以前はプラグインで停めていたのですが、外したときに忘れてしまったようです。
Nginxなら簡単なので、すぐさま対処しました。
本記事ではKUSANAGI(Nginx)環境でxmlrpc.phpを無効化する方法を紹介します。
xmlrpcを無効にする理由
どうしてxmlrpcを無効にしなくてはならないか?
ざっくり言えば、

DDoS攻撃やプルートフォースアタックの対象になるから!
現在はREST APIが主流でxmlrpcを利用する場面はほとんどありません。
そのため、利用していないのであれば停止しておくのが無難です。
xmlrpcを無効にする方法
Nginxの設定ファイルに追記する
サーバー側でアクセスを禁止してしまいます。
以下はKUSANAGIの配置です。
お使いの環境にあわせて読み替えてください。
/etc/opt/kusanagi/nginx/conf.d/【プロファイル名】.conf
を開き、ssl設定(全体から見て2つある設定の下の側)に記述します。
location = /xmlrpc.php {
deny all;
return 404;
}
終わったら、
# kusanagi restart
一般的なNginxの場合は、
# nginx -t # systemctl reload nginx
ブラウザからアクセスしてxmlrpcが無効になったか確認します。
【自サイトのURL】/xmlrpc.php
404が返ってくればOKです。
備考 functions.phpに追記する方法について
調べたなかで前項の方法よりも広く紹介されているのはフックに引っかけて停止させる方法。
以下を子テーマのfunctions.phpに追記します。
add_filter( 'xmlrpc_enabled', '__return_false' );
ただ以前にWPSCANでテストしたときは「部分的にしか止まってない」と怒られました。
それでも構わなければ、簡易的には用をなします。
xmlrpcを部分的に無効にする方法
完全には止めたくないという方もいらっしゃると思います。
その場合はプラグインを使う方が簡単です。
私が使っていたのはLogin rebuilder。
作者様による説明はこちら。
きめ細やかな設定が可能です。
JetPackプラグインの「is not connected.: 200」がサイトヘルスで出る際の対処法
JetPackプラグインを使っていてxmlrpcを停止すると、サイトヘルスで「is not connected.: 200」と怒られます。
これについてですが、

実運用に問題が出ていなければ放置でいいと思います
少なくとも統計情報と死活監視は動いてます。
もしかしたらプラグインのインストール時に一度はxmlrpcを停止して接続する必要はあるかもですが。
停止を再開したらメッセージは再び現れます。
現状で動いているなら問題ないです。
まとめ
使っていない機能を放置するのは、攻撃対象を増やすに等しい行為です。

対処は簡単、忘れずにやっておきましょう!
VPSは、もう「黒い画面」だけじゃない。
「VPSは難しそう」と諦めていませんか? ConoHaのKUSANAGIなら、ブラウザ上の管理画面(KUSANAGI Manager)で、ドメイン設定からSSL発行まで直感的に操作可能です。
コマンド操作なしで世界最速級の環境を構築できる、今の時代の初心者にとっての最適解。私が長年愛用している理由がここにあります。
※当サイト経由で新規申し込みいただくと、特典として1000円分のクーポンをもらえます。
