WordPress:xmlrpc.phpの対策(Debian)

Apacheのログを解析していたら大変なことに気が付きました。
xmlrpc.phpへのアクセスログが多量です!
前にWordpressのプラグインのDisable XML-RPC Pingbackは入れていたのですが、これだけでは不十分なようです。
過去にDoSの踏み台にされたかどうかのチェックを行いました。
http://labs.sucuri.net/?is-my-wordpress-ddosing

Warning: Your Website http://brokendish.org was USED for DDOS.

ああーやっちまったな。。超反省です。。
ということで、早速対応しなければなりません。(今日はDIY(棚作ろう)と思ってたんですけどね・・・)

wordpress-logo-stacked-rgb

僕の場合は管理画面以外の外部から投稿したりしないのでxmlrpc.phpを削除してもいいのですが、
Wordpressをアップデートした時にxmlrpc.phpが復活して来るので以下の方法で行います。
基本的な対応方法としてはApacheの設定で行います。

xmlrpc.phpにアクセスしてきた者の対応方法としては以下があると思います。
①変な所に飛ばしてしまう
②あるけど無いよ!にする

 

だとxmlrpc.phpはこのサーバにあるということになるので攻撃者は別のサーバで処理してるのかな?とか思って諦めない可能性があります。
Apacheのログは
“POST /xmlrpc.php HTTP/1.0” 301 541 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”
とかで出続けます。

 

だとxmlrpc.phpはこのサーバに無いということになるので、それでも攻撃を続けるのは404 NotFoundを判定出来ないようなイケてないツールを使っているのでしょう。
Apacheのログは
“POST /xmlrpc.php HTTP/1.0” 404 491 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”
とかで出続けます。
これが頻繁にあるようであれば最終手段のiptablesでこのIPアドレスはDROPする処置を取るしか無いと思います。

 

以下、設定です。

mod_rewriteを使って制御する。

mod_rewriteを有効にしていない場合は有効にする
a2enmod rewrite

.htaccessに記載する

#-------------------------------------------------------
# xmlrpc.phpへのアクセスを制限
#①>> http://0.0.0.0/に飛ばす リターン:301リダイレクト
#②>> リターン:404 NotFound
#-------------------------------------------------------
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /
#①----------------------S
#	RewriteRule ^xmlrpc\.php$ "http\:\/\/0\.0\.0\.0\/" [R=301,L]
#①----------------------E
#②----------------------S
	RewriteRule ^xmlrpc\.php$ "*/" [R=404,L]
#②----------------------E
	RewriteRule ^index\.php$ - [L]
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule . /index.php [L]
</IfModule>
 
#-------------------------------------------------------
 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です