WordPressのxmlrpc.phpを悪用したDDoS攻撃を受けたので対策した

Share me

数日前にWordPressを狙ったDDos攻撃を受けてサーバがダウンしていました。

とりあえず復旧したので備忘録として対策をまとめておきます。

屏幕截图 2016-04-28 10.39.37

問題の検知

サイトにアクセスするとWordPressの「データベース接続エラー」の表示が発生。

AWSのEC2でInstanceの状況をチェックしたところ、Status Checks>Instance Status Checksに「Instance reachability check failed」のエラーが発生していた。

また、AWS>EC2>Instance>Instance Setting>Get System Logを確認

Out of memory: Kill process 27074 (httpd) score 30 or sacrifice child

どうやらメモリ不足?で落ちているっぽい?

暫定対策

AWS>EC2>Instance>Instance Stateで、restartをすると、Instance Status Checksのエラーは消えたがWebへのアクセスはできず。

更に、Stop&Startをした結果、一瞬だけアクセス可能になるが1分ほどで再度アクセス不可能な状態に。

ログを確認するために、サーバにsshを試みるも、高負荷によるタイムアウトでログインできず。

しょうがないので、いったんEC2のInstanceをStop。

Instance Setting>Change Instance Typeで、一時的に容量を拡大して、Instanceを再起動した結果、Webもsshもアクセスできるようになる。

原因調査

sshにサーバに入ってログを確認

/etc/httpd/logs/error_log

zend_mm_heap corrupted

Cannot allocate memory: fork: Unable to fork new process

などのログが発生していた。やはりサーバのメモリを使いきっている模様。

/etc/httpd/logs/access_log

185.103.252.170 – – [27/Apr/2016:23:41:28 +0000] “POST /xmlrpc.php HTTP/1.0” 500 263 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”

アクセスログを見ると、ロシア、ウクライナ、フランスなどから、「xmlrpc.php」に対して大量なアクセスを受けていることが判明。

どうやら、リモートで記事を投降するための、「xmlrpc.php」を悪用したDDos攻撃を受けていた模様。

対策1:.htaccessアクセス制限

リモート記事投稿は使っていいないため、xmlrpc.phpへのアクセスをブロックすることに。

/var/www/html/.htaccessに追記

<Files "xmlrpc.php">
order deny,allow
deny from all
</Files>
これで、とりあえず事象が解消した。
一時的に拡張したEC2の Instance Typeを元に戻す。
対策2:プラグインの導入
念のための対策として、Disable XML-RPC Pingbackをインストール
.
.
.
以上、WordPressを狙ったDDoS攻撃の対策でした。
===
もしこの記事が気に入って頂けましたら、はてなブックマークやツイッター等でシェアをお願い致します。非常にはげみになります。