Basic認証の設定
戻る
Basic認証の概要
Basic認証とは、Webサーバ上の特定のファイルへのアクセスに対しパスワードを要求する仕組みの一つです。Basic認証は殆んどのWebブラウザがサポートしていますが、パスワードを暗号化せずに送ってしまうために経路上のホストで読まれるというセキュリティ上の弱点もあります。このセキュリティ上の弱点は、SSLを使うと回避することができます。SSLで暗号化せずにBasic認証を使うことができるのは、パスワードが経路上のホストに知られても困らないケースに限定されます。
パスワードファイルの作成
Basic認証の設定をおこなうにはまず、アクセスを許可するユーザ名とパスワードの組のリストを書き込んだパスワードファイルを作成します。これはesehttpd付属のesepasswdコマンドで作ることができます。esepasswdコマンドは、
/usr/local/sbin/esepasswd
/usr/sbin/esepasswd
のいずれかの場所にあります(インストール方法によって異なります)。たとえばファイルpasswordにユーザfooのパスワードを書き込むには、
$ /usr/local/sbin/esepasswd -c password foo
New password:********
Re-type new password:********
あるいは
$ /usr/local/sbin/esepasswd -c -m password foo
New password:***********
Re-type new password:***********
のようにします。『-m』オプションを使うと暗号化にMD5を利用するようになります(GNU libcを使っているOSでのみ利用できます)。パスワードの入力が促されますので同じパスワードを2回入力します。パスワードが一致していればpasswordというファイルが作成されます。コマンド行の『-c』はファイルを新規に作ることを指示するオプションで、すでに存在するファイルにパスワードを書き込む場合はこれを付ける必要はありません。一つのファイルに複数のユーザとパスワードを書き込むこともできます。『-m』を付けなかった場合はパスワードの長さは最大で8文字で、それ以上の部分は無視されます。『-m』を付けた場合の長さには制限はありません。
esehttpdの設定ファイル
パスワードファイルを作成したら、esehttpdの設定ファイルに次のような内容を書き加えます。
<Directory /usr/local/lib/esehttpd/www/html/bar/>
AuthUserFile /usr/local/lib/esehttpd/conf/password
AuthName "TEST"
Require user foo
</Directory>
この例はディレクトリ/usr/local/lib/esehttpd/www/html/bar/に対し、パスワードを読み込むファイルとして/usr/local/lib/esehttpd/conf/passwordを指定し、ユーザfooの正しいパスワードをクライアントが示した場合にのみアクセスを許可するように設定しています。AuthName
に指定されている文字列は、Webブラウザでユーザ名とパスワードの入力を促すダイアログのタイトルに使われます。Require
行には
Require user foo bar baz
と
Require valid-user
の二つの書き方があり、前者はfoo, bar, bazのユーザにアクセスを許可し、後者はpasswordファイルに書かれている全てのユーザにアクセスを許可します。もちろんいずれもパスワードが正しくなければアクセスは許可されません。ディレクトリ全体でなく特定のファイルにだけBasic認証を設定したい時にはRequire
行を<FilesMatch>
セクションに書きます。詳細は設定ファイルのディレクティブ一覧を参照してください。
セキュリティ
HTTP接続でBasic認証によるパスワードの送信をすると、通信経路でパケット監視することによって簡単にパスワードが知られてしまいます。経路上のホストが信頼できる場合以外は、Basic認証はHTTPS接続でのみ安全に利用できます。HTTPSとHTTPの両方を接続できるように設定したサーバでBasic認証を使う際、誤ってHTTP接続利用時にパスワードを送信してしまうのを避けるために、esehttpdはAuthRequireSSL
オプションを用意しています。
<Directory /usr/local/lib/esehttpd/www/html/bar/>
AuthUserFile /usr/local/lib/esehttpd/conf/password
AuthRequireSSL On
...
</Directory>
このように設定しておけば、HTTP接続利用時はBasic認証のための要求をブラウザに返すかわりに、リクエストを拒否するようになります。一方HTTPS接続利用時にはBasic認証を行います。
戻る
Akira Higuchi