18 January 2008

Apache初期設定(アクセス制限)

ユーザ名・パスワードによるアクセス制限を掛ける

(1)ベーシック認証

ユーザ名とパスワードのセットを作成する


[root@localhost ~]# cd /var/www

[root@localhost www]# mkdir auth

[root@localhost www]# htpasswd -b -c /var/www/auth/.htpasswd user-name user-password
Adding password for user user-name

httpd.conf でアクセス制限を掛ける場合 (すべてのホームページ)

/etc/httpd/conf/httpd.conf

<Directory "/var/www/html">

AuthType Basic
AuthUserFile /var/www/auth/.htpasswd
AuthGroupFile /dev/null
AuthName "Authentication Required Site"
Require valid-user

</Directory>

特定のディレクトリ以下にアクセス制限掛ける場合は、そのディレクトリのセクションを作成して、そこに記述する。

.htaccess ファイルでアクセス制限掛ける場合は、アクセス制限かけたいフォルダに .htaccess ファイルを作成し、次のように記述する

/var/www/html/任意のディレクトリ/.htaccess

AuthType Basic
AuthUserFile /var/www/auth/.htpasswd
AuthGroupFile /dev/null
AuthName "Authentication Required Site"
Require valid-user

ベーシック認証ではユーザー名とパスワードは平文(Base64で符号化)されて送信される。パケットキャプチャで簡単にユーザ名・パスワードのセットが見られてしまいます。

そこで、次の(2)で説明するパスワードのMD5暗号化が必要になる。

(2)ダイジェスト認証 (MD5暗号化利用)

新しいブラウザでは、パスワード送信を暗号化するダイジェスト認証が利用できる

ユーザ名とパスワードのセットを作成する


[root@localhost ~]# cd /var/www

[root@localhost www]# mkdir auth

[root@localhost www]# htdigest -c /var/www/auth/.htdigest 'MD5 Digest Authentication' user_name
Adding password for user_name in realm MD5 Digest Authentication.
New password:
Re-type new password:

httpd.conf でアクセス制限を掛ける場合 (すべてのホームページ)

/etc/httpd/conf/httpd.conf

<Directory "/var/www/html">

AuthType Digest
AuthUserFile /var/www/auth/.htdigest
AuthName "MD5 Digest Authentication"
Require valid-user

</Directory>

(3)クライアント証明書の検証を追加

Apache(CAの設置と認証)に記述