Linuxユーザの立場から、役立つ情報や困ったときの解決方法を分かりやすく、かつ簡潔に記事にまとめています。主に、Ubuntu 8.04(→9.04)やCentOS 5.2(→5.3)で確認したことですが、他のディストリビューションでも応用できると思います。内容は(1)設定ファイルの書き方(2)役立つソフトウェア紹介やインストール方法(3)便利なコマンドの使い方や活用例(4)困ったときの解決方法です。このページの末尾にキーワード別で記事を分類してあります。また、真上の「ブログ検索」フォームからブログ内の記事を検索できます。

2009年9月24日木曜日

WebサーバでDigeset認証をつかってアクセス制御する。 このエントリーを含むはてなブックマーク

本記事では、Webサイトのとあるディレクトリ以下をパスワードで保護したいときに、認証によりアクセス制御する方法をまとめる。

認証方式にはいろいろある。おそらく最も基本的なのはBasic認証だが、パスワードを平文のまま送信するので、盗聴の危険性がある。そこで、今回は、MD5でハッシュ化してパスワードとユーザ名を送信するDigest認証を使ったアクセス制御をまとめる。参考URL:「Digest 認証の仕組み」。

まず、Webサーバで公開しているディレクトリで、パスワードで保護したいディレクトリを作成する(既にある場合はもちろん作成不要)。ここでは、ユーザ(hoge)のpublic_html以下をWebに公開しており、その直下のprivateをパスワード保護する場合を説明する。

$ cd 
$ pwd
$ /home/hoge
$ cd public_html
$ mkdir private

次に、apacheの設定ファイル/etc/httpd/conf/httpd.confでDigest認証をどこそこで利用するといった設定を記述する。保護したいディレクトリ毎にhtaccessファイルを配置してもよいが、大元のhttpd.confに記述しておくの良いとどこかに書いてあった(保守性?)。

<Directory /home/*/public_html/private>    <--- 念のためhogeユーザだけでなく任意のユーザに対してルールを設定
    AuthType Digest
    AuthName "Secret Zone"
    AuthDigestDomain /private/
    AuthUserFile /etc/httpd/conf/.htdigest   <--- 後で作成するパスワードファイル
    Require user ユーザ名
</Directory>

次に、パスワードファイルを作成する。既にパスワードファイルがある場合は、cオプションは不要。cオプションを付けないと、新規ユーザの情報を書き込むことになる。レルムは、httpd.confでAuthNameに設定した文字列"Secret Zone"を指定する。パスワードファイル名も、上の設定ファイルで指定した名前とする。

# cd /etc/httpd/conf
# htdigest -c パスワードファイル レルム ユーザー名

最後に、apacheをリロードする。

#/etc/rc.d/init.d/httpd reload

試しに動かしてみる。うまく動かないときは、AllowOverride all になっていないか確認する。

参考URL:Apacheでユーザー認証を行うには(Digest認証編)WebDAV時代のセキュリティ対策[後編]

0 コメント:

キーワード

キーワード別に記事を分類してあります。クリックすると各キーワードに該当する記事たちが表示されます。

筆者について

自分の写真
趣味はコンピュータ、音楽、写真などです。