Apacheのログを解析していたら大変なことに気が付きました。
xmlrpc.phpへのアクセスログが多量です!
前にWordpressのプラグインのDisable XML-RPC Pingbackは入れていたのですが、これだけでは不十分なようです。
過去にDoSの踏み台にされたかどうかのチェックを行いました。
http://labs.sucuri.net/?is-my-wordpress-ddosing
Warning: Your Website https://brokendish.org was USED for DDOS.
ああーやっちまったな。。超反省です。。
ということで、早速対応しなければなりません。(今日はDIY(棚作ろう)と思ってたんですけどね・・・)
僕の場合は管理画面以外の外部から投稿したりしないので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> #------------------------------------------------------- |