スポンサーリンク

wordpressのxmlrpc.phpに対する攻撃を防ぐ方法

wordpressのサーバーがたまに重くなるので調査してみると、/xmlrpc.php をPOSTしまくっている奴を発見。
なにこれ???


調べてみましたが、これはアプリなどからwordpressに投稿するための仕組みのようで、最近ここからのブルートフォースアタックが増えているようです。
うーん・・・さすがにこれはWordpress本体で対処しておいてほしいですよねぇ…。単に数回失敗したらIPごとBANにすればいいだけのように思いますが・・・。
というか、最近の更新でこの機能がOFFにできなくなったようです。
Pluginもあるらしいが完璧ではないらしい。
使ってないので消すのもアリですが、更新した場合に復活してしまうこともあるようですので以下で対応
直下の.htaccessを下記のように変更して、xmlrpcに来たリクエストを0.0.0.0に飛ばしてしまいます。

<IfModule mod_rewrite.c>
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]
</IfModule>

いろいろ調べましたがこれが一番サーバーへの負荷が少ないようです。

ただし問題がありました。
jetpackがxmlrpc.phpを使っていました。ですので、この方法を使うと使えなくなってしまうようです。
ということで、jetpackを使いたい場合はxmlrpc.phpに対してアクセス拒否を使うとよいようです。

<Files ~ "xmlrpc.php$">
  Allow from 192.0.0.0/255.255.0.0
  Allow from jetpack.wordpress.com
  Deny from All
</Files>

jetpackのIPがわからないため、ある程度の範囲を許可しておかないとだめのようです。
IPもこの範囲外に変更になる可能性があるので、もし動かなくなった場合はログなどからIPを調べて変更する必要があります。

後は、可能であればiptablesで攻撃元のIP制限アクセスもしておくとよいかと思います。