WordPressでログイン画面にベーシック認証をつけて、ブルートフォースアタックを防ぐ

最近、このブログの管理者用ログイン画面にやたらログインしようとする輩が増えた。

もちろん、パスワードは簡単なものではない。
充分に長く、強度もある。
ランダムに生成したものなので類推は不可能だ。

しかも、五回以上ログインを失敗したら一定時間そのIPからのアクセスを遮断するプラグインも導入済み(Simple Login Lockdownというプラグイン

だけれども、最近は一回のログイン試行でIPを変えてくる攻撃者もいる。
いま話題のTorってやつか…
それでも安全だとは思うが、やはり気持ちいがいいものではない。

ころころIPがかわるとIP遮断も難しいので、ログイン画面自体に入りにくくすることにしよう。

ベーシック認証

ベーシック認証というのはhttpサーバーに備わっている簡易的な認証の仕組み。
簡単なものなので盗聴されやすかったりするので、認証方法としては弱いもの。

だけれどもログイン画面に入る前に一回認証をしなければならないということで、攻撃者の手間は増やせる。
扉に鍵を二個つけるようなものだな。

設定方法

設定は簡単だ。
以下に自分がやった設定をメモしておく(※ディレクトリ、ID,パスワードなどはすべて例)

.htaccessの設定

まず、wp−login.php(ログイン画面)があるディレクトリにある、「.htaccess」というファイルに以下のような内容を追記する。無かったら新規作成して書く。

<Files wp-login.php>
AuthName "MyLogin"
AuthType Basic
AuthUserFile /var/www/.htpasswd
Require valid-user
</Files>

AuthNameは認証ダイアログに出てくる文字らしいので、適当に決める。
AuthUserFileは後述するパスワードファイルの場所を指定する。

パスワードの設定

以下のコマンドを実行する。

htpasswd -b -c /var/www/.htpasswd hogeuser hogepassword

hogeuser hogepasswordがIDとパスワードになる。
このコマンドは暗号化したパスワードをパスワードを記述するファイル(.htpasswd)に記述するコマンドだ。

httpd.confの設定

Apacheの設定ファイルであるhttpd.confの設定もおこなう。

<Directory>
 #中略
 AllowOverride None
 #中略
</Directory>

Directoryのタグ(ディレクティブっていうらしい)に囲まれているところに
AllowOverrideというのがあるが、これがnoneだと.htaccessが有効にならない。

[Apache] Options と AllowOverRide の設定値を改めて整理してみる

↑この記事で詳しい設定のことが書いてあったので色々試してみた。
Allだと全部ができてしまうけれど、ベーシック認証をさせるだけならばAuthConfigをつけておけばいいと思う。

<Directory>
#中略
AllowOverride AuthConfig
#中略
</Directory>

あとはApacheを再起動するだけ。

スポンサードリンク

関連コンテンツ