こんにちは、@Manabu です。
WordPressでブログを書き始めたは良いけど、管理画面にアクセス制限をかけなくていいのかな?
ブログを始めたばかりの人で、このような心配をされている方もいると思います。
今回は、.htaccessファイルに追加するだけで簡単に設定できる、Basic認証というアクセス制限について紹介していきます。
制限を掛ける方法さえ知っていれば、外からの攻撃に対して少しは安心できると思うので、ぜひ参考にして下さい!
基礎知識
まず、Basic認証や.htaccessファイルについて、どう言ったものなのか紹介したいと思います。
Basic認証とは?
Basic認証は、Webサーバーがユーザーに対して行う基本的な認証方式の一つです。
特定のページやディレクトリにアクセスする際に、ユーザー名とパスワードを使用してWebサイトへのアクセスを制限を行います。
この方法は、HTTPヘッダーを使って認証情報を送信するため、設定が比較的簡単で広く利用されています。
また、設定が簡単な分、以下のような注意点に気をつけましょう。
:Basic認証は認証情報をBase64でエンコードするだけで、暗号化されていないため、平文で送信されます。そのため、HTTPSを使用して通信を暗号化することが推奨されています。
:認証情報を保存する仕組みがないため、アクセスするたびに認証を要求される場合があります。ブラウザによっては保存機能がありますが、セキュリティ面で注意が必要です。
※Google Chromeでは情報が保存されるようです。
.htaccessとは?
.htaccessファイルは、Apache Webサーバーで使用される設定ファイルで、ディレクトリ単位でサーバーの動作を制御するために使われます。
以下のような制御を行うことができます。
- アクセス制御
- Basic認証
- リダイレクト
- カスタムエラーページ
WordPressサイトだと、最初にパーマリンク設定を行うために.htaccessファイルを作成することが多いと思います。
今回は、こちらのファイルに設定を追加して、Basic認証を導入します。
Basic認証の導入手順
以下、設定方法になります。
ディレクトリは、ご自身の環境に適したところで設定するようにお願いします。
.htpasswdファイルの作成
.htpasswdファイルは、Basic認証を行う際に使用されるファイルです。
ユーザー名とパスワードのペアが保存されています。
以下のコマンドを実行することで作成できます。
htpasswd -c /var/www/html/.htpasswd test
// cオプションは、新規作成のオプションです。既存のファイルがある場合、削除されてしまうため注意してください。
// パスワードの入力を求められるため、ログイン時に使用するパスワードを2回入力してください。
// .htpasswdファイルの中身は以下のようになります。
test:$apr1$somehash$3ZnQq7FhuP6Y6zUprQwnT0
※パスとユーザー名は、ご自身の方で変更してください。
※ユーザー名とパスワードは、Basic認証の認証時に使用する値になります。
.htaccessファイルの設定
作成した、.htpasswdファイルを使用したBasic認証の設定を.htaccessファイルに追加します。
以下の設定を追加します。
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /var/www/html/.htpasswd
Require valid-user
※AuthUserFileは.htpasswdファイルのあるパスに設定してください。
WordPressサイトで管理画面にBasic認証を設定する場合、wp-adminディレクトリ配下に.htaccessファイルを配置する必要があります。
例)wp-admin/.htaccess
Apacheの再起動
ここまでくると設定自体は完了しているため、Apacheを再起動して設定を反映させます。
sudo systemctl restart httpd
確認
ブラウザで、Wordpressの管理画面にアクセスしてみましょう。
以下のような入力画面が表示されると設定完了です。
上手く動作しない場合
Basic認証の設定がうまくいかない場合は、以下の項目を確認しましょう。
ファイルのパーミッションの確認
.htaccessファイルや.htpasswdファイルの権限によっては、Apacheユーザーで閲覧できていない可能性があります。
権限を確認して、上位ユーザーが設定されている場合、chownコマンドなどでApacheユーザーに変更するようにしましょう。
AllowOverrideディレクティブの確認
Apacheの設定に、AllowOverrideディレクティブという設定があります。基本的に、httpd.confに記載があると思います。
このディレクティブは、.htaccessファイルでどのディレクティブを許可するかという設定になります。これが適切に設定されていない場合、.htaccessに設定した内容が使用できない場合があります。
特に指定のない場合、Allに設定しておきましょう。
Apacheの再起動
設定が問題なくても、再起動を行わない限り、追加した設定が反映されることはありません。
必ず再起動して、設定を反映させるようにしましょう。
ブラウザのキャッシュ削除
Apacheを再起動して、設定自体におかしなところが確認できない場合、ブラウザのキャッシュやcookieが影響している場合があります。
ブラウザのキャッシュを削除するか、違うブラウザで確認してみましょう。
まとめ
ここまで、.htaccessでのBasic認証について紹介してきました。
網羅的に確認事項もまとめているので、上手くいかない場合は各項目について必ず確認するようにしましょう。
また、Apacheの設定ファイルなど、サービスに影響を大きく与えるようなファイルについては、必ずバックアップを取ってから実行することをお勧めします。