2017年09月05日

Apache2 で Basic認証 を設定

apache2 で Basic認証を設定する方法には
confに設定する方法と、.htaccessファイルを使う方法の2つの方法がある。
Basic認証(ベーシックにんしょう、Basic Authentication)とは、HTTPで定義される認証方式の一つ。基本認証と呼ばれることも。
Basic認証では、ユーザ名とパスワードの組みをコロン ":" でつなぎ、Base64でエンコードして送信する。このため、盗聴や改竄が簡単であるという欠点を持つが、ほぼ全てのWebサーバおよびブラウザで対応しているため、広く使われている。引用:Wikipedia


環境:
  • Ubuntu 16.04
  • Apache 2.4.18




ユーザーとパスワードの設定


どちらの方法でも認証のために、ユーザーとパスワードの設定は必要。先に作成しておく。


ユーザー管理ファイルを作成


管理ファイルを新規作成する場合、

$ sudo htpasswd -c ファイル名 ユーザー名

実行すると、パスワードの入力を求められるので2回入力する。

$ sudo htpasswd -c /etc/apache2/.htpasswd user1
New password:
Re-type new password:
Adding password for user user1


既に管理ファイルが存在していて、2回目以降のユーザー作成では、オプション -C を付けない。
$ sudo htpasswd /etc/apache2/.htpasswd user2
New password:
Re-type new password:
Adding password for user user2


ユーザー管理ファイルの置き場所はどこでもいいが、セキュリティ上、公開されていないディレクトリ上に作成すること。


パスワードの変更


パスワードを変更したい場合も、同様のコマンドで更新する。
$ sudo htpasswd /etc/apache2/.htpasswd user1
New password:
Re-type new password:
Updating password for user user1






ユーザーの削除


オプション -D を付ける。
$ sudo htpasswd -D /etc/apache2/.htpasswd user1
Deleting password for user user1





.htaccessファイルを使った認証方法


認証をかけたいディレクトリに .htaccess ファイルを置き、以下の内容を記述する。

AuthType Basic
AuthName "Please Enter Your ID and pass"
AuthUserFile /etc/apache2/.htpasswd
require valid-user


AuthType

認証方式を指定。 Basic認証の場合 Basic とする。

AuthName

認証画面に表示されるメッセージ。

AuthUserFile

作成したユーザー管理ファイルを指定。

require

アクセスを許可するユーザーやグループを指定。 valid-user の場合、ユーザー管理ファイルに含まれるすべてのユーザーを対象とする。


システムが .htaccess ファイルを見つけた時、このファイルの中で定義された設定を、既にこのディレクトリに対して定義されていた設定に対して上書きする必要がある。
これは apacheのディレクティブ設定で行う。

"/etc/apache2/sites-available/" に置いたconfファイルで設定する。
<Directory パス> 
  ~ 省略 ~
  AllowOverride AuthConfig ← None を変更する
  ~ 省略 ~
</Directory>

  • None :上書きを禁止
  • AuthConfig :認証に関する変更を許可
  • All :すべての設定の変更を許可


設定後、apacheを再起動する。

.htaccess ファイルを置いたディレクトリにアクセスする。
apache_basic01.png
設定した通り認証を求められるので、登録したユーザーとパスワードを入力すればいい。






confファイルで設定する方法


"/etc/apache2/sites-available/" に置いたapacheのディレクティブ設定で行う。

記述する内容は、.htaccess ファイル内に記述したものとほぼ同じ。
<Directory 認証を設定するディレクトリパス>
  AuthType Basic
  AuthName "Please Enter Your ID and pass"
  AuthUserFile /etc/apache2/.htpasswd
  require valid-user
</Directory>


設定後、apacheを再起動すれば、認証を設定するディレクトリに認証がかけられている。




まとめ


apache では .htaccessファイルの使用を推奨していません。
apacheでは認証用のディレクティブを書く方法が推奨され、.htaccess ファイルはサーバの設定ファイルを変更できない場合に使用すべきとしている。

理由としては、apacheが各ディレクトリで.htaccessファイルを探し、設定を書き換えるためサーバに余計な負荷をかけるというパフォーマンス上の問題や、.htaccessファイルは一般ユーザーが設置、編集できるのでセキュリティ上の問題があるため。
これらのことを理解したうえで、Basic認証を使い分けながら使用していく。


Ubuntu サーバの設定 Webサーバー


posted by Zorinos at 20:00| Comment(0) | Linux | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください
ブログランキング・にほんブログ村へ
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。