こんにちは、おおぬき(@ishlion)です。
8月に入ってから当ブログxmlrpc.phpへのブルートフォース攻撃記録が見つかり、その対策をしたので記録として残しておきます。
目次
ブルートフォース攻撃とは
https://ja.wikipedia.org/wiki/総当たり攻撃
総当たり攻撃(そうあたりこうげき)とは、暗号解読方法のひとつで、可能な組合せを全て試すやり方。力任せ攻撃、またはカタカナでブルートフォースアタック(英:Brute-force attack)とも呼ばれる。
wordpress界隈では管理画面へのユーザーID「admin」アタックでよく話題に上がるやつですね。IDをadminにしている人は変更しましょうねーっていうアレです。こんな実験をされている方もいるので読んでみてください。
【悪用厳禁】自分のWordPressブログにブルートフォースアタックをしてみた
で、wordpress上での管理画面へのブルートフォースアタック対策では下記の方法が有名だったりします。
ログインページへのブルートフォースアタック対策
ユーザーIDを「admin」以外に変更する
adminってとてもわかりやすくて覚えやすいIDなんですが、これを設定しているだけで攻撃者からの良い餌になってしまいます。ですので、adminというユーザーIDは絶対使用しないでください。もしadminでユーザーIDを作成してしまった場合は変更しましょう。
Admin renamer extended
Username Changer
プラグインは上記2種が有名どころ。また別で管理者アカウントを作り、そちらに権限を移した後に、adminを削除する方法もあります。
直接DBから変更する方法もありますね。
うちのブログではAdmin renamer extendedを使用しました。
投稿者アーカイヴのアドレスを変更させる
ユーザーIDをadmin以外のもので設定していても、デフォルト状態ではユーザーIDがもろバレになってしまいます。これはユーザーニックネームを設定していないため、ブログ上での表示名がユーザーIDそのもので表示されてしまうからです。ですので、wordpressインストール後には必ずユーザーニックネームを入力して、wordpress上で表示する投稿者名をニックネームにすることを推奨します。
投稿記事から「(ログイン)ユーザー名」がバレるのを防ぐ
WordPressの「ブログ用の表示名」と「ユーザー名」は、別のものにしておこう
この対策で表面上ではユーザーIDがバレることはないのですが、wordpressでは投稿者アーカイヴというものが作成されるため、ブログアドレスに「/?author=1」をくっつけてアクセスされるとここでユーザーIDがバレてしまいます。(数字はIDが作られた順番に振られているようです)そこでプラグインを使って、投稿者アーカイヴのURLに変更をかけます。
Edit Author Slug
この対策を行うことで、「/?author=1」にアクセスされてもユーザーIDが表示されなくなります。
プラグイン「SiteGuard」によるログインページ変更

SiteGuard WP Plugin
一番お手軽にできるブルートフォース対策だと思います。SiteGuardに付いている他の機能と複合することでより高い防御力になります。
Google認証システムでログインを2段階認証化する

これは管理画面へログインする際、任意の6桁の数字を入力するいわゆる「ワンタイムパスワード」を使用したログイン方式です。Google認証システムについては、Seki’s noteさんの「Google 認証システムの仕組み」で詳しく説明されています。
Google Authenticator
使い方はこちらで詳しい説明が書かれています。
2段階認証の必須アプリ! 「Google Authenticator(Google 認証システム)」の使い方と裏ワザ、注意点
スマホでワンパスを確認する場合はスマホ用アプリも同時にインストールしましょう。
Google 認証システム – Google Play の Android アプリ
Google Authenticatorを App Store で
今回狙われたのは「xmlrpc.php」ファイル
で、前置きが長くなりましたが。今回狙われたファイルが「xmlrpc.php」。
xmlrpc.phpって何のファイル?
xmlrpcとは、スマートフォンアプリや外部システムから、リモートで記事投稿や画像のアップロードを行う際に利用されるプロトコルです。
WordPressにおけるxmlrpcへの脆弱性対応のお願い | スマートコネクト マネージドサーバ
http://support.mngsv.jp/info/news/1429/
基本Macや自宅のWinで記事を書いているので、「xmlrpc.php」ファイルはあまり気にしていなかったのですが結構来てたんですよね。で、上で挙げた対策をしても規制対象が違うのでこの「xmlrpc.php」ファイルへのブルートフォースアタックは行われてしまいます。(ちなみに当ブログにて、サムネで表示されてる失敗部分のログイン名は「Edit Author Slug」で変更かけたものになっていました。)
このまま放っておくとサーバへの負荷になるようでブログの表示が遅くなる原因にもなるらしい。
サーバーが高負荷の原因はWordPressのxmlrpc.phpを狙った攻撃だった
ということで、対策を行ってみました。
.htaccessファイルでxmlrpc.phpへのアクセスをリダイレクトする
.htaccessにこの一文を追加すると、xmlrpc.phpにアクセスすると0.0.0.0にリダイレクトしてくれます。実際に、.htaccessへ書き込むとこのような形になります。

このような感じでリダイレクトされます。
まとめ
うちはまだそんなにアクセス数が多いわけではないんですが、それでも不正アクセス対策はしておいたほうがいいと思って今回対策をとりました。これでSiteGuardのログも少しは静かになってくれるかな…。