WordPressへのログイン方法をユーザー名ではなくメールアドレスにしてなんちゃってブルートフォースアタック対策

最近、WordPressサイトへのブルートフォースアタックが急増してるみたいな情報がちらほら聞こえるようになってきました。

実はこのサイトもおもいっきりadminユーザーが存在しておりまして、僕が管理してるほかのサイトではwebmasterなんてのもいたりして、こんだけいろいろ情報を耳にするといいかげん心配になってきました。

そんなわけで、やや安易な対策かもしれませんが、ユーザー名ではなくメアドでログインするように変更するプラグインを作りました。
(あんま効果なかったらごめんねw)

WordPress › Force email login « WordPress Plugins

このプラグインの機能は大きく分けて以下の二つです。

  • 従来のユーザー名によるログインをすべて拒否して、メールアドレスによるログインを強制します。
  • ログインに失敗すると、ログイン処理に対して10秒間 wp_die() を発火させて膨大な量のブルートフォースアタックによるサーバー負荷を軽減します。
  • メールアドレス以外のログインは、問答無用で wp_die() を発火させて、同じくサーバー負荷を軽減します。

あと、ソースはGitHubで公開してます。

https://github.com/miya0001/force-email-login

やってること

WordPressのログイン処理直前のフックで、入力されたメールアドレスからユーザー名を引っ張りだして、内部的にはそのユーザー名でログインを試みています。

なので、テーブルを書き換えたりとかそういうことは全くしていませんので、ログイン後の挙動は従来と同じはずです。

カスタマイズ

ログイン処理失敗後のロック時間はデフォルトで10秒と微妙に短かめ(長め?)ですが、これは以下の様なフィルターフックでカスタマイズ出来ます。

(管理画面つくるのめんどくさかった!)

<?php
    add_filter("force_email_login_lockdown", "my_force_email_login_lockdown");
    function my_force_email_login_lockdown($seconds) {
        return 60; // default 10
    }

注意

  • このプラグインを有効化すると、iOSやAndroidのWordPressアプリからのログインもメールアドレスで行う必要があります。
  • どっちにしろパスワードは強固なものにしておきましょう!
  • たとえば他のソーシャルサービス等とメアド&パスワードの組み合わせが同じだったりすると、かえってドツボになるかもしれませんから注意しましょう。

メールアドレスについては、たとえばGmailなら miya+myblog@example.com みたいに myblog の部分を好き勝手に変更できますので、こういうテクニックと組み合わせるとさらに平和になります。

あと、それなりにスキルがある人はこんなプラグインを使わないで、二段階認証とかをつかったほうが安全ですよ。