プラグインなしでWordPressのログイン画面にBasic認証を設定する方法

Basic認証のイラスト

WordPressのログイン画面URLへのアクセスは簡単で、ウェブサイトのURLの末尾に/admin/(例:www.sample.jp/admin/)または/login/(例:www.sample.jp/login/)と入力することで、ログイン画面にリダイレクトされます。

その為、ログイン画面に辿り着けてしまえば、脆弱なパスワードはプログラムで驚くほどの短時間で破ることができ、ユーザー名については調べたいサイトURL/?author=1 と入力することで調べることができてしまいます。

この情報を基に、ブルートフォースアタックと言われるありとあらゆるユーザーIDとパスワードを使ってログインを試みる手法でログインされてしまった場合、悪意のあるコードの埋め込みや、サイトの消去もされてしまう可能性があるので対策が必要です。

そこで今回は、プラグインなしでWordPressのログイン画面にBasic認証を設定する方法についてご紹介します。

Basic認証とは?

Basic認証とは、WEBサイトのページやファイルにアクセス制限をかけることができる認証方法の1つで、ほとんどのサーバーで設定することが可能です。

Basic認証の画面

Basic認証を設定することで、ユーザー名・パスワードで認証させる簡易的なアクセス制限が可能ですが、ディレクトリ単位で制限をかけたりすることができます。

設定は簡単で、設定の記述を行う .htaccess ファイルを設置してBasic認証の範囲とすることができます。

Basic認証を設定することのメリット

WordPressはログイン画面に、ID・パスワードを入力した場合、一回一回データベースを参照します。

その為、前述したブルートフォースアタックをされてしまうと、サーバーに負荷がかかます。

Basic認証を設定することで、セキュリティ面での恩恵が得られるのはもちろんですが、Basic認証によってサーバーへの負担を大幅に軽減することができます。

その為、不正なアクセスによる負荷が考えられる場合も、Basic認証を設定することを検討しましょう。

Basic認証の設定方法と手順

Basic認証の設定は、.htaccess.htpasswd ファイルを作成して、wp-adminへの設置をすることで設定が完了します。

.htpasswdにログイン用のIDとパスワードを記載

はじめに BASIC認証のユーザー名とパスワードを記載した .htpasswd ファイルを作成します。

例えば、下記のIDとパスワードを設定するとします。
・ログインID:sampleid
・パスワード:samplepasu

BASIC認証は盗聴や改竄が簡単であるという欠点を持ってる為、IDの「sampleid」とパスワード「samplepasu」を、以下のようなサイトを使いIDとパスワードを暗号化する必要があります。

写真:htpasswd用パス作成ツール より

すると「sampleid:4261Dy9QtAEmY」のようなIDと暗号化されたパスワードが生成されるので、メモ帳などでファイル .htpasswd を用意して、生成されたIDとパスワードを記入します。

wp-adminに.htpasswdをアップロード

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 には、.htpasswd を設置したファイルパスを指定する必要があります。

設置したファイルパスが不明な場合、 sample.php というファイルに次のコードを追加してして、.htpasswd を設置したディレクトリにsample.phpも設置しましょう。

CSS

<?php echo __FILE__; // フルパスを表示 ?>

設置した sample.php ヘブラウザでアクセスすると、sample.php までのフルパスが表示されるので、そのパスを参照して AuthUserFile で指定しましょう。

.htaccessを wp-admin のディレクトリにアップロード

設置した.htpasswd ファイルと同じ階層のディレクトリ「wp-admin」に .htaccess をアップロードすれば完了です。

WordPressのログイン画面にアクセスして、ID、パスワードを求められるアラートが表示されるので、.htpasswd で設定したIDとパスワードを入力してログイン画面が表示されれば成功です。