WordPressのxmlrpc.phpに対する攻撃で503エラーが頻発するようになったので、サーバの.htaccessでアクセスを制限しました。
以前にいわしブログで503エラーが頻発した時は、.htaccessを使って怪しい海外IPのアクセスを制限しましたが、今回は方法を変えて、xmlrpc.phpに対するアクセスを制限しました。
.htaccessを使ったアクセス制限は、WordPressを使ったウェブサイトやブログで増加中のxmlrpc.php攻撃対策として有効な手段です。
最近やたら503エラーが出るようになったという方は、一度サーバーの情報を確認してみてください。
いわしブログで再度503エラーが頻発
以前、いわしブログで503エラーが頻発するようになったのですが、この時は海外同一IPからのアクセス激増が原因でした。このIPアドレスを.htaccessに記述してアクセスを制限すると、503エラーは表示されなくなりました。
「アクセス制限で解決 503エラーの原因と対処法」という記事で対処法を紹介してます。
そして、一旦去ったはずの503エラーがまた再来しました。いわしブログで使用中のさくらインターネットのサーバーコントロールパネルでリソース情報を確認すると、「HTTP 503 エラー発生回数」が激増しています。
今回の503エラー頻発も、海外同一IPからのアクセス激増が原因なのですが、その矛先はWordPressのxmlrpc.phpという1つのファイルだけに向かっています。
最近はWordPressのxmlrpc.phpに対する攻撃が増えているようで、どうやらいわしブログもその攻撃対象になってしまったようです。
ちなみに、xmlrpc.phpが攻撃されると、XML-RPCの機能を悪用したスパムメール送信やDDoS攻撃の踏み台になる恐れがあります。
エラーログを見ると、ご覧のとおりxmlrpc.phpに対してアクセスが集中していることがわかります。
これが原因だとすると、xmlrpc.phpに対するアクセスを制限してやれば済む話です。というわけで、今回は.htaccessを使ってxmlrpc.phpに対する攻撃を回避することにしました。
WordPressにはxmlrpcを無効化することができるプラグイン「Disable XML-RPC Pingback」もありますが、あまりプラグインは増やしたくないので、.htaccessで対処することにします。
.htaccessへの記述でxmlrpcを無効化
では、.htaccessを使ってxmlrpc.phpへのアクセスを制限してみましょう。サーバーから.htaccessをダウンロードして、以下を追記すればOKです。
#xmlrpc無効化 <Files "xmlrpc.php"> order deny,allow deny from all </Files>
終わったら元の位置に上書きしてください。これでxmlrpc.phpへのアクセスが無効になります。
xmlrpc.phpを無効化することで、ご覧のとおり503エラーが激減しました。やっぱり原因はコイツでしたね。
ちなみに、アクセス制限なしの状態でxmlrpc.phpへアクセスすると、「XML-RPC server accepts POST requests only.」というメッセージが表示されますが、アクセス制限後は「Forbidden You don’t have permission to access /blog/xmlrpc.php on this server.」と表示されます。
.htaccessに追加したアクセス制限がきちんと有効化されているかどうかは、このメッセージで判断してください。
xmlrpc.phpへの攻撃は.htaccessで対処しよう
xmlrpc.phpは、スマホや外部アプリから記事の更新、画像の投稿を行う際に必要なファイルで、削除しても特に問題はありません。
ただ、削除してもWordPressをアップデートすると復活するので面倒ですが、.htaccessでアクセスを制限しておけば、そのまま放置でも大丈夫です。
xmlrpc.phpに対する攻撃対策としては、他にもfunctions.phpに記載する方法や、「Disable XML-RPC Pingback」といったプラグインを使う方法もありますが、一番のオススメは、やっぱり.htaccessを使ったアクセス制限です。
ちなみに、エックスサーバーでは5月19日から国外IPアドレスからの「XML-RPC」に対するアクセス制限を実施しています。さすがエックスサーバー、対処が早い・・・