注意!ログインの攻撃は wp-login.php だけではない。 Basic 認証で WordPress サイトを守る方法

BASIC 認証を使って WordPress サイトをブルートフォースアタックから守る対策を紹介します。

 

この WordPress ブログもセキュリティーには気をつけています。きちんとしたプラグインのみを使い、WordPress の安定版がリリースされたり、プラグインの互換性を確認したらすぐにアップデートを心がけています。

しかし、去年辺りから Brute Force 攻撃が盛んになってきました。Login Security Solutions というプラグインを入れていて、攻撃があるときは知らせてくれるんですが、その通知メールが尋常ではなくなってきたので、ログイン画面からアクセス制限をかけることにしました。

WordPress でも、BASIC 認証をかけることができるプラグインが存在しますが、それだと、負荷がかかります。なので、ちょっと面倒ですが、.htaccess ファイルをサーバーに直において対策をするほうが良いと思い。その対策を行いました。

ログインページにBASIC認証を付けて、Brute Force 攻撃をさせないようにしているつもりだったんだけど、なぜか攻撃が続いていて、先週末の CMS Fun の時に、20分で1000アタックとかされてて、「BASIC 認証破られたのかな〜」と思ってたんだけど、アクセスログを見てたら xmlrpc.php への Brute Force アタックだった。

早速 .htaccess で xmlrpc.php もBASIC認証設定しました。(xmlrpc.php 自体を BASIC 認証する意味はあまりないのですが、なんか今後、使う時があればと思って、BASIC 認証にしました。)

WordPress のルート・ディレクトリで設定している .htaccess

.htpasswd ファイルの作成方法は Google 検索するといろいろでてきます。パスワードファイルへのパスは、HTML で記述するパスではなく、サーバー上のパスとなるので、記述方法が違います。レンタルサーバーのマニュアルに作成方法が載っているかもしれないので、そちらを参考にしてください。

# wp-login.php basic auth
AuthUserFile [パスワードファイルへのパス]/.htpasswd
AuthGroupFile /dev/null
AuthName "WordPress"
AuthType Basic
<Files ~ "(wp-login.php|xmlrpc.php)$">
    require valid-user
</Files>

/wp-admin/に設置している .htaccess

AuthUserFile [パスワードファイルへのパス]/.htpasswd
AuthGroupFile /dev/null
AuthName "WordPress"
AuthType Basic
require valid-user

ちなみに concrete5 はデフォルトで IP ブロック機能とかついていたりします。concrete5 は良い CMS ですね〜(ステマ)

以上