【この記事を読むのに必要な時間は約 5 分です。】
WordPressプラグインを利用してコメント欄にcaptcha認証システムを設置した。(参考記事「WordPressプラグイン パズル型captcha認証「Captcha Garb」を導入してみた」「WordPressプラグイン スライダー型captcha認証「minteye」が面白い(広告収入も得られる?)」)
そのついでみたいな感じで当初あまり必要性を感じていなかったログイン画面にも何か二重で認証できるようなものを設置するか迷いながらネットをさまよっていたところログイン履歴を表示してくれるWordPressプラグインを発見。(参考記事「WordPressプラグイン ログイン履歴を表示する「Crazy Bone(狂骨)」で不正アクセスを確認」)
ログイン画面の認証は通常のパスワードだけではなく、二重の認証システムの設置が不可欠と痛感した。私の場合、ログイン画面は私だけが使用するので、面倒臭い認証でも問題ないと考え、色々検索して調べてBasic認証を設置することにした。
目次
Basic認証とは
.htaccess
ファイルで設定する認証方式。別に用意する.htpasswd
ファイルにユーザ名とパスワードをコロン “:” でつないだものを記載し、Base64でエンコードして送信する。盗聴や改竄が簡単であるという欠点を持つが、ほぼ全てのWebサーバ(Apache等)およびブラウザで対応している。
Basic認証にした理由
たいした理由ではないが、
・使用者が自分一人なので多少面倒くさくても構わない。
・WordPressプラグインを使用して、動作しなかったりすると面倒。
・Basic認証は、テストサイトで既に利用しているので、個人的にわかりやすい 等の理由から。
設定方法
概要
必要事項を記載した.htaccess
と.htpasswd
ファイルを作成し、サーバーにアップロードする。これにより、WordPressのログイン画面にアクセスすると、最初に以下のようなBasic認証が表示される。
.htaccessファイルの作成
テキストエディターで、AuthUserFile /var/www/.htpasswd
以外は特に変更せずに.htaccess
と名前を付けて保存する。既に、サーバーに.htaccess
ファイルがある場合は、追記する。
※アップロード場所はwp-login.phpと同じディレクトリ。
<Files wp-login.php>
AuthName "Input ID & Password"
AuthType Basic
AuthUserFile /var/www/.htpasswd
Require valid-user
</Files>
# Exclude the file upload and WP CRON scripts from authentication
<FilesMatch "(async-upload\.php|wp-cron\.php|xmlrpc\.php)$">
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</FilesMatch>
補足1-ファイル名「.htaccess」
環境によって「.」が最初に付くファイルが非表示となったり、「拡張子のない」ファイルを作成できない場合、「htaccess.txt」として名前をつけ、サーバーにアップロードした後で「.htaccess」と名前を変更すればよい。
補足2-「.htaccess」の内容説明
<Files wp-login.php></Files>
WordPressログイン画面だけにBasic認証を設定。
AuthName
何でもよいが”Input ID & Password”と記載するとBasic認証時に「Input ID & Password」と表示される。日本語に変更すると文字化けする可能性あり。
AuthTypeとRequire
変更しないこと。
AuthUserFile
多少やっかいで、次で作成する.htpasswd
ファイルのアップロード先をフルパス(サーバー上の絶対パス)で記載する必要がある。フルパスについては契約しているサーバーの設定やよくある質問などに必ず記載があるので、確認すること。
例)ValueSeverの場合
ホームディレクトリが、「/virtual/ユーザーID/」となるので、ValueServerだと、以下のようになる。
/virtual/ユーザーID/public_html/jump-up.info/.htpasswd
#以下の8行目からの記載について
.htaccess
でBasic認証設定をした場合、その影響で、WordPressの予約投稿に失敗したり、Flashアップローダーが正常に動作しなかったり、XML-RPCからの投稿が出来なかったりといった問題が発生するようだ。これらの問題の対処としての記述。この対処方法は、WordPress Codexに掲載されている。
.htpasswdファイルの作成
次にBasic認証用のIDとパスワードを記述した.htpasswd
ファイルを以下のように作成する。パスワードは暗号化したものを記述する。
Basic認証用ID:パスワード
暗号化
パスワードの暗号化はオンライン上で生成するサービスがたくさんある。下のCGIを利用しても設定できる。設定したい「Basic認証用ID」と「パスワード」を記載して暗号化をクリックするとよい。
.htpasswd用パスワードの暗号化
暗号化できたら上記をコピペして、.htpasswd
として保存する。アップロード場所は.htaccess
ファイルと同じ場所でかまわない。最近のレンタルサーバーは.htaccess
ファイルや.htpasswd
ファイルは非表示、アクセス制限がかかっているはずなので。
これでWordPressログイン画面で二重のセキュリティを施すことができた。以上