WordPressのログインにBasic認証を設定する
プラグインに影響しないBasic認証をWordPressに設置する方法です
WordPressのログインにBasic認証を設定すると、プラグインによっては「admin-ajax.php」にアクセスできなくなることがあり、プラグインが正常に動作しなかったり、下層ページにアクセスするたびに「ログイン」を求めてきたりします。
admin-ajax.phpにも影響しないように.htaccessでBasic認証を設定します。
用意するファイルは「.htpasswd」と「.htaccess」の2つになります。
.htpasswdにログイン用のIDとパスワードを記載する
例えば、下記のIDとパスワードを設定するとします。
■ログインID:zxman
■パスワード:tR4Nhy7U
IDの「zxman」とパスワード「tR4Nhy7U」を暗号化します。
下記のサイトで暗号化できます。
すると「zxman:rvg4S7uNzX.AM」のようなIDと暗号化されたパスワードが生成されます。
.htpasswdを用意する
ファイル「.htpasswd」を用意して、生成されたIDとパスワードを記入します。
.htpasswd
zxman:rvg4S7uNzX.AM
WordPressのディレクトリ「wp-admin」に.htpasswdをアップロードします。
.htaccessにBasic認証を設定する
ファイル「.htaccess」を用意して、下記をコピペします。
.htaccess
AuthUserFile ファイルまでのパス/wp-admin/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
<FilesMatch "(admin-ajax.php)$">
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</FilesMatch>
一行目のAuthUserFileは、サーバーの環境によって異なります。
「/home/www/wp-admin/.htpasswd」や「/var/www/vhosts/hogehoge.com/httpdocs/wp-admin/.htpasswd」など、適宜変更してください。
.htaccessを「wp-admin」ディレクトにアップロード
「.htpasswd」ファイルと同じ階層のディレクトリ「wp-admin」に「.htaccess」をアップロードして完了です。
WordPressのログイン画面にアクセスして、ID、パスワードを求められるアラートが表示されるので、ID、パスワードでログインできれば成功です。
ログイン画面にBasic認証を設定するメリット
WordPressは、ログイン、パスワードを入力されると一回一回データベースを参照します。
このためブルートフォースアタックをされるとデータベース参照に負荷がかかり、サーバーがダウンすることになります。
ログイン画面への不正アクセスが多い場合は、Basic認証による2段階ログインを設定するとサーバーへの負担を大幅に軽減することができます。