過去にブルートフォースアタック対策用の WordPress プラグインをいくつか紹介してきました。今回は wp-config.php をカスタマイズすることで、狙われやすいユーザー名でのログインを拒否したり、特定のユーザーでしかログインできないようにするためのカスタマイズを紹介したいと思います。
admin系のユーザーを拒否する
ブルートフォースアタックの対象となるユーザーは admin が圧倒的に多いです。
wp-config.php の先頭部分に以下のコードを追加することで、admin 系のユーザーでログインできないようにすることができます。
if ( isset($_POST['log']) && preg_match('/^admin/i', $_POST['log']) ) { header("HTTP/1.1 403 Forbidden"); die(); }
admin “系” と書いたのは、”admin” で始まるユーザーはすべて拒否されるからです。administrator や adminadmin などのユーザーも拒否されることになります。
特定のユーザーのみを許可する
上記のように admin 系のユーザーログインを拒否してもいいですが、逆に特定のユーザーのみを許可する方法もあります。
同じように wp-config.php の先頭部分に以下のコードを追加することで、ホワイトリストのユーザーのみを許可することができます。
if ( isset($_POST['log']) && !preg_match('/^(user-wp1|user-wp2)$/i', $_POST['log']) ) { header("HTTP/1.1 403 Forbidden"); die(); }
上記の場合、user-wp1 と user-wp2 のみを許可することになりますので、この部分は適宜変更してください。
上述したいずれの場合も許可されていないユーザーでログインを試みると、以下のようにアクセスが拒否されることになります。
ブルートフォースアタックを対策するプラグイン
プラグインを使いたい場合は、以前紹介した以下のプラグインがおすすめです。どれを使うかはお好みで。
指定したIPアドレスやユーザーエージェントからのアクセスをブロックすることができます。
ログイン方法をユーザー名からメールアドレスに変更します。
ログイン失敗回数をカウントして不正ログインを検知します。メールでの通知も可。
連続してログインに失敗するとユーザーをロックします。
ブルートフォースアタック対策というわけではありませんが、ログイン履歴が確認できるプラグインです。
あとがき
IP アドレスなどで拒否するのもキリがないですし、wp-config.php をカスタマイズして全く受け付けないようにしちゃえばサーバーの負荷も軽減できると思います。Limit Login Attempts や Login LockDown などのプラグインと併用するとより効果的ですね。
ブルートフォースアタックで困っているという方はぜひ試してみてください。
そもそもブルートフォースアタックされているかどうかわからないという場合は、サーバーのログを見るか Crazy Bone を入れてみるとわかりますよ。当ブログも結構な攻撃を受けていました。。。