プロローグ
AWSのLightsailでWordPress(by Bitnami)を立ち上げました。
私のセキュリティ対策の一つとしてwp-login.php
のファイルへBASIC認証をかけているのですが、他社レンタルサーバーでやっている普段の通りの方法では、うまくできなかったので、課題となりました。本稿は、その課題の解き方です。
Lightsail で WordPress のある場所(ディレクトリ)
まず、WordPressがあるディレクトリの確認です。
$ cd /opt/bitnami/apps/wordpress/htdocs
htdocs
ディレクトリ下にWordPressのファイル群があります。
WordPressのファイル群に .htaccess を入れてもダメ
私は普段、wp-admin
やwp-login.php
のある階層に.htaccess
を置いてBASIC認証をかけていましたが、この方法はAWSのLightsailでは不可のようです。
参考サイト:AWS LightsailのWordPressにBasic認証を設定する
BASIC認証の導入手順
手順は
-
/opt/bitnami/apps/wordpress/conf
へ.htpasswd
を置く - 同ディレクトリにある
htaccess.conf
に追記する - Apacheを再起動する
です。
1) .htpasswd の作成
$ cd /opt/bitnami/apps/wordpress/conf
$ htpasswd -c .htpasswd user123 # htpasswd -c "ファイル名" "ユーザー名"
/opt/bitnami/apps/wordpress/conf
ディレクトリへ移動し、htpasswd
コマンドで.htpasswd
ファイルを生成しています。
※ .htaccess による認証用 パスワード暗号化ツール などを使って、手動で.htpasswd
ファイルを作成し、/opt/bitnami/apps/wordpress/conf
へアップしてもOKです。
2) htaccess.conf へ追記
$ cd /opt/bitnami/apps/wordpress/conf
$ vi htaccess.conf
/opt/bitnami/apps/wordpress/conf
ディレクトリ内にあるhtaccess.conf
ファイルに追記します。
# BASIC認証の追加
<FilesMatch "^wp-login\.php$"> # wp-login.php ファイルの指定
AuthType Basic
AuthName "Basic Auth"
AuthUserFile /opt/bitnami/apps/wordpress/conf/.htpasswd # .htpasswd のパスを間違えないように!
AuthGroupFile /dev/null
Require valid-user
</FilesMatch>
3)Apacheを再起動
$ sudo /etc/init.d/bitnami restart apache
このコマンドで Lightsail の Apache を再起動できます。
再起動後に WordPress のログイン画面(wp-login.php)へアクセスし、BASIC認証が掛かっていれば成功です。
Digest認証の導入手順
BASIC認証とDigest認証の違いは、サーバーへ平文で送信するか暗号化して送信するか、の違いのようです。BASIC認証でもSSL化していれば問題ないと思いますが、Digest認証の導入でも1工程多いだけなので、どうせならDigest認証を採用してもいいのではないでしょうか?
手順は
- Digest認証を使えるように
httpd.conf
を一部変更 -
.htpasswd
ファイルの作成 -
htaccess.conf
へ追記 - Apacheを再起動
です。(2)〜(4)は、BASIC認証とほぼ同じです。
1) httpd.conf の一部変更
$ vi /opt/bitnami/apache2/conf/httpd.conf
Lightsail の Apache はデフォルトでDigest認証がONになっていません。
/opt/bitnami/apache2/conf/httpd.conf
ファイルのDigest認証部のコメントアウトを外します。
86行目あたりにLoadModule auth_digest_module modules/mod_auth_digest.so
がコメントアウトされています。#
を外して保存します。
2) .htpasswd の作成
$ cd /opt/bitnami/apps/wordpress/conf
$ htdigest -c .htpasswd "Digest Auth" user123 # htdigest -c "ファイル名" "realm(領域)" "ユーザー名"
/opt/bitnami/apps/wordpress/conf
ディレクトリへ移動して、ココに.htpasswd
を作成します。
Digest認証の場合はhtdigest
コマンドです。
Digest認証の場合は"realm(領域)"
を入れないといけません(上記例では"Digest Auth"
の部分)。この文字列は、後ほどに使うので、どこかにコピペしておいてください。
↑ ユーザー名とパスワードの他に、Digest Auth
という文字列(realm)が確認できますね
3) htaccess.conf へ追記
$ cd /opt/bitnami/apps/wordpress/conf
$ vi htaccess.conf
/opt/bitnami/apps/wordpress/conf
ディレクトリ内にあるhtaccess.conf
ファイルに追記します。
AuthName
には、先程の"realm(領域)"
と同じ文字列を入れます(上記例では"Digest Auth"
)
# Digest認証の追加
<FilesMatch "^wp-login\.php$"> # wp-login.php ファイルの指定
AuthType Digest
AuthName "Digest Auth" # ココへ先程のrealm(領域)のテキストを入れる
AuthUserFile /opt/bitnami/apps/wordpress/conf/.htpasswd # .htpasswd ファイルへのパスを間違えないように注意!
Require valid-user
</FilesMatch>
4)Apacheを再起動
$ sudo /etc/init.d/bitnami restart apache
このコマンドで Lightsail の Apache を再起動できます。
再起動後に WordPress のログイン画面(wp-login.php)へアクセスし、Digest認証が掛かっていれば成功です。
いやいや.htaccessを使いたいねん
本稿ではhtaccess.conf
を変更してBASIC認証/Digest認証を実装する方法を記載しました。
しかし、「いやいや.htaccess
を使いたいねん」「.htaccess
の方が使い慣れてるねん」という方もいらっしゃるのではないでしょうか(私がそうなので)
そんな方へ...
Lightsail|WordPress - bitnami|.htaccessを有効化する方法
ぜひ、↑こちらもあわせてご覧ください。