xmlrpc.phpへの攻撃による高負荷 WordPressが重くなる原因のひとつ
wmlrpcはスマフォアプリや外部システムから記事を投稿したり画像をアップしたりする際に使われる通信プロトコルです。
実際、WordPressのPingbackなどさまざまな機能にwmlrpc.phpが使われていて、WordPress3.5 以降は初期設定で有効になっており、無効化する機能はありません。
xmlrpcの脆弱性について
引数にユーザ名やパスワードを羅列したテキストを与えると、リスト型ブルートフォース攻撃ができてしまいます。
加えて、1回のリクエストで多数のIDやパスワードを試すことができてしまうので、情報漏洩につながる可能性が高くなります。
ブルートフォース攻撃とは
暗号やパスワードを解読するための手法の一つで、自動化されたプログラムを使って膨大な数の文字列を送信していくもの。
パスワードなどの文字列が長くなれば解読までに長い時間を要するものの、自動化プログラムで実行するため時間をかければいずれは解読できてしまう。
ブルートフォース攻撃を感知すると、解読されてしまう前にサーバ側がリクエストを遮断する策をとってはいるものの、この間、膨大な数のリクエストがサーバに送信されるため、サーバに高負荷がかかってしまいます。
対策はxmlrpcへのアクセスを禁止すること
先に記した通り、WordPressのさまざまな機能に使われているため、xmlrpcを完全に無効化すると使い勝手の悪さにつながってしまいます。
とは言え、xmlrpcの脆弱性を悪用した攻撃により自サイトが被害にあうだけでなく、DDoS攻撃の踏み台になってしまう可能性もあるため、なにがしかの対策を講じなければなりません。
WordPress3.5 未満、WordPress 3.5以降の場合の対策と、プラグインを使った対策を紹介します。
WordPress 3.5未満の場合
WordPress管理画面で、xmlrpc機能を無効にします。
「設定」>「投稿設定」で、XML-RPCのチェックボックスからチェックを外します。
WordPress 3.5以降の場合
管理画面では設定できないので、「.htaccess」でxmlrpcへのアクセスを禁止する記述を追加します。
xmlrpc.phpがあるディレクトリの.htaccessに下記の記述を追加します。
<Files xmlrpc.php>
Order Deny,Allow
Deny from All
</Files>
xlmrpc.phpファイルは、WordPressをインストールしたディレクトリの直下にあります。
プラグイン「Disable XML-RPC Pingback」を導入する
Disable XML-RPC Pingback は、攻撃者が使うメソッドのいくつかを除外することでXML-RPCへの攻撃を防御しようというプラグインです。
XML-RPCはプラグインやアプリでも使われているため、XML-RPCを完全に無効化するよりもサイトオーナーにとってフレンドリーな対策だと言えるでしょう。
このプラグインは、XML-RPCインターフェースから下記のメソッドを除外します。
- Disable XML-RPC Pingback
- pingback.extensions.getPingbacks
- X-Pingback from HTTP headers.
これにより、ボットによる xmlrpc.php file の接続を阻止します。
Disable XML-RPC Pingback は、WordPress 3.8.1以降に対応したプラグインです。
以上
「WordPress困った!」をまとめました。ご参考になさってください。