今回は、.htaccessによるベーシック認証(Basic認証)の方法について書き留めておきます。
まず、ベーシック認証(Basic認証)とは、
Webサイトの閲覧に使うプロトコル「HTTP」が備える、最も基本的なユーザ認証方式。
アクセスの制限されたWebページにアクセスしようとすると、Webブラウザでユーザ名とパスワードの入力を求め、サーバでアクセスを許可しているユーザに一致すると、ページを閲覧することができる。
こ のとき、ユーザ名とパスワードは暗号化やハッシュ化がされていない生の状態(クリアテキスト、プレーンテキスト)で送受信されるため、簡単に盗聴・改ざん されてしまう。どのWebサーバもWebブラウザも対応しており、簡単に利用することができるが、あくまで簡易な方式だという認識が必要であり、重要な データの保護に利用してはならない。
『BASIC認証 【 基本認証 】 basic authentication / ベーシック認証 / HTTP基本認証』
下記の様にユーザー名とパスワードを求めるダイアログでユーザー認証が必要となります(下記はfirefoxの場合)。
また、このベーシック認証を行った場合の特徴を大きく下記3つにまとめます。
●
アクセス制限は検索エンジンのクローラーもブロックする
●
ユーザー認証はブラウザを終了するまで有効
●IDやパスワードはブラウザに記憶できる
それでは、下記にLinuxコマンドで行うベーシック認証の手順を書き留めておきます。
①.htpasswdを作成する
.htpasswdとは、ベーシック認証に使用されるユーザ名とパスワードが記述されたファイルです。
書式は、
「ユーザ名:パスワード」となります。
ファイルへのアクセス制御を行いたいファイルがあるディレクトリが.htaccessと.htpasswdを設置する場所となります。
htpasswd -b -c /[htpasswdを設置する場所のパス]/.htpasswd [追加するユーザ名] [パスワード]
ちなみに作成した.htaccessの中を見ると、下記の様に「ユーザー名:パスワード」で1行記載されています。
パスワードは暗号化されています。
root:cwbaE1SGialpo
②.htaccessを作成する
.htaccessとは、Webサーバで使用できる、Webサーバの動作をディレクトリ単位で制御するためのファイルです。
ファイルへのアクセス制御を行いたいファイルがあるディレクトリに.htaccessと.htpasswdが設置する場所となります。
vim .htaccess
これで、.htaccessというファイルが作成され開きますので下記を記載します。
AuthType Basic
AuthName "Input your ID and Password."
AuthUserFile /home/[ドメイン名]/[フォルダ名]/.htpasswd
require valid-user
記載する内容は次の通りです。
AuthType
認証方式の指定。
今回は、ベーシック認証なので「Basic」と指定。
AuthName
認証画面に表示されるメッセージ。基本的に日本語(全角文字)は避け、半角英数字を記入。
AuthUserFile
作成済みのパスワードファイルのパスを指定。
require
アクセスを許可するユーザーを指定。
「valid-user」とは、パスワードファイルに含まれるすべてのユーザーに許可することを意味する。
※注意点
なお、注意点として既に.htaccessが存在しないかを、.htaccessなどの隠しファイル (ディレクトリ)も含めた一覧を表示する下記コマンドで確認します。
ls [ファイルへのアクセス制御を行いたいファイルがあるディレクトリ] -a
下記の様に、表示されます。
[root@localhost test]# ls -a
. .. .htaccess .htpasswd index.php
.htaccessがある場合には、まず、.htaccessを開きます。
vim .htaccess
開いたら、既存の記述の最後に、上記と同じ下記記述を追加します。
AuthType Basic
AuthName "Input your ID and Password."
AuthUserFile /home/[ドメイン名]/[フォルダ名]/.htpasswd
require valid-user
③httpd.confを編集する
もし、ベーシック認証ができない場合は、Apacheの設定を変更します。
Apacheの設定ファイル、/etc/httpd/conf/httpd.confには、.htaccessファイルを使用するように設定します。
httpd.confファイルのAllowOverride
を、下記のようにNoneからAllへ
変更します。
vim /etc/httpd/conf/httpd.conf
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
↓
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
その後、Apacheの再起動を行います。
sudo service httpd restart
これで、設定が反映されます。
以上です!
【参考サイト】
『ApacheでBasic認証を設定する方法』
『基本認証でアクセス制限をかける方法』
『【Linux】コマンドで.htpasswdにユーザを追加してパスワードを設定する方法』
『.htaccess による認証用 パスワード暗号化ツール』
『lsコマンドにオプションをつけて隠しファイル(フォルダ)を表示する方法(Linux)』