WordPressのXML-RPCとREST API(WP-JSON)を無効にする(Nginxの設定)

wordpress_attackWordPressを使ってホームページを立ち上げるときに不要な機能へアクセスされるのを防ぐ設定をしたときの覚書。

環境: CentOS 7.3.1611, nginx 1.10.2, WordPress 4.7.1

 


1.XML-RPCを無効にする

WordPressのXML-RPCはアプリから記事を投稿したりするのに使われていいる。

外部から頻繁にアクセスされてるのでサーバー側(nginx)でブロック。
# less /etc/nginx/conf.d/global/wordpress_restrictions.conf

# Deny all xmlrpc.php access
location = /xmlrpc.php {
    deny all;
    access_log off;
}

 


2.REST APIを無効にする

これも外部アプリとの連携用API。Jetpackで使っている?

下記のようなURLでユーザーの一覧を取得できてしまう。

http://hoge.jp/wp-json/wp/v2/users/

まだこれをターゲットとした不正なアクセスログはないけど、そのうち増えてくると思うのでnginxでブロックする。
# less /etc/nginx/conf.d/global/wordpress_restrictions.conf

# Deny all REST API access
location = /wp-json/ {
    deny all;
    access_log off;
}

 

nginxの全設定ファイルはGistに置いてあるので参考に

 

プラグインやテーマの中でブロックする場合は公開されているプラグインが参考になる。

これを設定してもadmin-ajax.phpへのアクセスは影響しない。

 

最後にヘッダーに出力されるリンク関連を表示しないようにfunctions.phpなどで設定。

remove_action( 'wp_head', 'rest_output_link_wp_head' );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
remove_action( 'template_redirect', 'rest_output_link_header', 11 );

 

< Related Posts >