サーバーが高負荷の原因はWordPressのxmlrpc.phpを狙った攻撃だった

ブログにアクセスしたらなかなか読み込まない。なんか重たくなってる!異変にきづいてサーバーにターミナルでアクセスを試みるもつながらず。サーバーのコンパネから強制的に再起動をして復旧した。その原因を調べたらWordPressのxmlrpc.phpにあった。
xmlrpc.phpに大量のアクセス
apacheのログを調べたら、このように断続的に大量のアクセスがあった。apacheのエラーログをみると「server reached MaxClients setting, consider raising the MaxClients setting」と設定数以上のアクセスで、高負荷状態になり接続できなくなっていた模様。
xmlrpc.phpはそもそも、これを使うことで標準の管理画面以外からもAPIを使って、記事の投稿ができるようになるもの。どうやらここへのブルートフォースアタックでのっとりをしようとしているか、Pingback機能を悪用して当サーバーを踏み台にして攻撃に利用するためにアタックされる事例が多いようだ。xmlrpc.phpは使わないので、早速対策をとった。
[対策その1] プラグインで無効化
Disable XML-RPC Pingbackというプラグインがあり、これを利用すればピンバック機能を無効にしてくれるため、踏み台にされることはなくなる。まずはこれを設定した。
[対策その2] xmlrpc.phpへのアクセス禁止
そもそもxmlrpc.phpへアクセスできないようにした。これはhtaccessに
<Files "xmlrpc.php"> order deny,allow deny from all </Files>
のように記述すれば、xmlrpc.phpへアクセスしても403forbiddenエラーとなる。
[対策その3] 攻撃元IPを遮断
htaccessでアクセス拒否しても、apacheは経由するので負荷がかかることにかわりはない。そこで、iptable(ファイアーウォール)で攻撃してきているIPを遮断することにした。
//遮断したいIP iptables -I INPUT -s 185.62.189.47 -j DROP //設定を保存 service iptables save //設定を反映 service iptables restart
攻撃してくるIPはその時によって変わってくるので、高負荷になった時にアラートをいれたり、監視できる仕組みをいれないといけない。面倒だな…。
その後、サーバー攻撃を受けたので繰り返さないようLogwatchで監視をはじめてみました。
WordPressのセキュリテイ関連では、WordPress Popular Postsプラグインにも脆弱性がみつかりましたので、利用している方はご注意を。
WordPressの高速化についてはこちら。
[sc name=”engeneer”]
SHARE
PROFILE

Webサービスを作るのが大好きです。制作会社10年→フリーランス→受託をやめサービス開発に専念。プログラミングのメンターサービスMENTAは月間流通額約1,300万を突破🚀 YouTubeでは個人開発について語ってます / 「自分のサービスで生きていく」をコンセプトに個人開発オンラインサロン「入江開発室」を運営(詳しいプロフィール)