某サイトがつながりにくい状態が最近出てきました。
本当は以前からつながりにくい状態が続いていたかもしれません。(サイトの性質上、アクセスの振れ幅が大きいのも発見が遅れた要因ですorz)
最初はベンダーがメンテナンスしているのだろうと思い込んでいたのですが、
(メンテナンス情報にも記載があったので。。)
実際は(ブルートフォースなのかDDosなのか不明ですが)攻撃を受けてました。
以下、攻撃されていた時のログ。
これが毎秒流れてました(汗
127.0.0.1 - - [09/May/2016:17:49:56 +0900] "POST /xmlrpc.php HTTP/1.1" 200 392 "-" "Googlebot/2.1 (+http://www.google.com/bot.html)" 127.0.0.1 - - [09/May/2016:17:49:56 +0900] "POST /xmlrpc.php HTTP/1.1" 200 392 "-" "Googlebot/2.1 (+http://www.google.com/bot.html)" 127.0.0.1 - - [09/May/2016:17:49:56 +0900] "POST /xmlrpc.php HTTP/1.0" 200 392 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)" 127.0.0.1 - - [09/May/2016:17:49:56 +0900] "POST /xmlrpc.php HTTP/1.0" 200 392 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)" 127.0.0.1 - - [09/May/2016:17:49:56 +0900] "POST /xmlrpc.php HTTP/1.0" 200 392 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)" 127.0.0.1 - - [09/May/2016:17:49:56 +0900] "POST /xmlrpc.php HTTP/1.0" 200 392 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)" 127.0.0.1 - - [09/May/2016:17:49:56 +0900] "POST /xmlrpc.php HTTP/1.0" 200 392 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)" 127.0.0.1 - - [09/May/2016:17:49:56 +0900] "POST /xmlrpc.php HTTP/1.0" 200 392 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)" 127.0.0.1 - - [09/May/2016:17:49:56 +0900] "POST /xmlrpc.php HTTP/1.0" 200 392 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)" 127.0.0.1 - - [09/May/2016:17:49:56 +0900] "POST /xmlrpc.php HTTP/1.0" 200 392 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
wordpressのfunctions.phpにxmlrpcを無効にできるような記事もありますが
Jetpackが使えなくなる等、少々心許ないのでhtaccessにてアクセス制御かけることにしました。
<Files xmlrpc.php> Order allow,deny Deny from all </Files>
これで、アクセスステータスが200から403に変わります。
大量に沸いたhttpdプロセスも落ち着きを取り戻しました。
ログを辿ると、かなり前から攻撃されていた模様。
全く気づかなかった。。。
[root@****** httpd]# ls -alh /var/log/httpd/ total 4.4G drwx------ 2 root root 4.0K May 8 05:10 . drwxr-xr-x. 10 root root 4.0K May 8 05:10 .. -rw-r--r-- 1 root root 476M May 9 18:09 access_log -rw-r--r-- 1 root root 437M Apr 17 05:09 access_log-20160417 -rw-r--r-- 1 root root 1.9G Apr 24 06:42 access_log-20160424 -rw-r--r-- 1 root root 661M May 1 04:47 access_log-20160501 -rw-r--r-- 1 root root 1005M May 8 05:10 access_log-20160508
アクセス制御しただけですので、依然としてアクセスログは残ってしまいます。
記録しないようにアクセスログからxmlrpcに対してフィルターをかけます。
httpd.confに以下のように設定しました。
1行目はvarnish導入していた頃の名残です。
2行目でxmlrpcがリクエストURIに含まれる場合はnologとしています。
SetEnvIf User-Agent "internal dummy connection" nolog SetEnvIf Request_URI "xmlrpc" nolog CustomLog logs/access_log combined env=!nolog #CustomLog logs/access_log common
便利とはいえ何が起こるか不透明なオープンソース。
定期的に見ないとですね。。。