WordPressのサイトが表示されない?!

最近、Wordpressで作成したサイトの表示が著しく遅くなったり、503エラーになって表示されない、という事件が相次ぎ報告されています。

なんでも、WordPressの「xmlrpc.php」というファイルがウェブサイト攻撃の「踏み台」に使われているため、らしいです。wordpressの「xmlrpc.php」にブルートフォースアタックをかけられて、メモリ不足をおこし、サイトが表示されなくなるようです。。。

ちなみに、「xmlrpc.php」というファイルは、スマフォから記事投稿したりする際に必要となるファイルです。弊社でもスマフォからの記事投稿機能は使用することがあるので、「xmlrpc.php」を削除する、というわけにもいかず、削除したところでWordpressのバージョンアップを行うと復活するようなので、毎回毎回削除するのも手間。

そこで、google先生に聞いて、対策法を色々調べてみました!
備忘録としてメモしておきます。

●xmlrpc.phpにアクセスすると、http://0.0.0.0/にリダイレクトするよう、.htaccessで設定。

※アクセス制限をして、サーバーへの負荷を減らす作戦です。


RewriteEngine On
RewriteBase /
RewriteRule ^xmlrpc\.php$ "http\:\/\/0\.0\.0\.0\/" [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

●子テーマ(あれば)のfunctions.phpに下記を追記してxmlrpc.phpを無効にする。

add_filter(‘xmlrpc_enabled’, ‘__return_false’);

※ただし、デメリットとして、スマフォから記事投稿ができなくなります…。

●その他、攻撃材料になりそうなheaader情報を削除する。子テーマ(あれば)functions.phpに下記を追記。

//generator(meta のバージョン)
remove_action('wp_head', 'wp_generator');
//wlwnanifest
remove_action('wp_head', 'wlwmanifest_link');
//外部ツールを使ってWordPressに記事を投稿するときのアドレス
remove_action('wp_head', 'rsd_link');

●その他 子テーマ(あれば)のheader.phpから下記を削除して、pinbackの痕跡をなくす。

※念押しです。profileも特に設定の必要を感じないのでついでに削除。(ver.4.4以前?はfunctions.phpに色々記載すると削除できたようですが、現在作用しないため、直に削除するしかありませんでした)



●その他 WPプラグイン「login Rebuilder」のXML-RPC 設定でいろいろ設定する。

※弊社ではプラグインを使って、ログインURLを変更していました。そのプラグインにXML-RPC 設定がついていたので、設定してみました。

※この方法だと、スマフォから記事投稿も可能でした。

●その他 WPプラグイン「Disable XML-RPC Pingback」を利用する

※ただし、GETにしか対応していなく、POSTで攻撃されると効果がないそうです…。

以上、必要にあわせて上記を組み合わせて、様子見をしたいと思います!