.htaccess によるアクセス制限

WWW によるアクセスを制限したい場合の方法です。 .htaccess を使いますが、その前に WWW サーバ(Apache)の設定が必要です。

なお、ここの記述は RedHat Linux Sparc 上での httpd の制御を基にしています。 FreeBSD ではありませんが、おそらく同様に動くでしょう。


httpd.conf

httpd のコンフィギュレーションファイルは httpd.conf です。
#RedHat Linux Sparc では /etc/httpd/conf/httpd.conf にありました。
このファイルの一部を変更します。
httpd.conf
AllowOverride None
→ AllowOverride Limit AuthConfig

参考: http://www.itnavi.com/irohaApache.htm

このあと、httpd を再起動します。
# /somewhere/apachectl restart

.htaccess

アクセス制限するには、.htaccess と言うファイルを 制限したいディレクトリに置きます。 すると、そのディレクトリ以下がこの .htaccess で制限できることになります。

IP アドレスによるアクセス制限

.htaccess
<limit GET>
order deny,allow
deny from all
allow from 123.45.67.89
</limit>
2行目から意味を説明します。

2行目: order deny,allow
アクセスを、制限する(deny)と許可する(allow) を 評価する順番を決めます。今の場合、deny の後に allow が評価されます。 つまり、後の allow で前の deny を上書きします。

3行目: deny from all
すべてのホストからのアクセスを制限します。 ホスト一台ずつ制限をかけたい場合は、
deny from 123.45.67.90
などです。ホスト名(FQDN)でもOKです。

4行目:allow from 123.45.67.89
IP アドレスが 123.45.67.89 のホストからのみアクセスを許可します。 ホスト名(FQDN)でもOKです。ちなみにここを
allow from all
としておくと、3行目を上書きするのですべてのホストからの アクセスを許可します。

ユーザ名とパスワードによるアクセス制限

  1. パスワードファイルを作る
    apache のインストール先を /APACHE とします。
    ユーザ名: hoge
    パスワード: hogepasswd
    という設定を、/home/hogehoge/.htpasswd というパスワードファイルに 書き込みます。
    % /APACHE/bin/htpasswd -bc /home/hogehoge/.htpasswd hoge hogepasswd
    オプション -b はパスワードをコマンドラインで指定するため、 -c は .htpasswd があっても上書きするためのものです。 /home/hogehoge は WWW で公開していないディレクトリである方が セキュリティー上好ましいでしょう。

  2. .htaccess ファイル
    認証を必要とするディレクトリに以下の内容を持った .htaccess ファイルを置いておきます。
    .htaccess
    AuthUserFile /home/hogehoge/.htpasswd
    AuthGroupFile /dev/null
    AuthName "Hoge"
    AuthType Basic
    require valid-user

.htaccess を隠す

Apache-1.3.22 では以下の設定は必要ありませ ん。

さて、.htaccess でアクセス制限できた訳ですが、 古いバージョンの Apache では.htaccess 自体はアクセス制限できていません。 URL として、ダイレクトに .htaccess を指定すると見えてしまいます。 セキュリティーにかかわる事であり、これでは困ります。 例えば、許可しているホストのフリをして覗き見る事も可能です。 そこで、.htaccess を隠してしまいましょう。

やはり、httpd.conf(もしくは access.conf) をいじります。 そこに、次のように書きます。
access.conf
<Files .htaccess>
deny from all
</Files>
これでOKです。後は、httpd を起ち上げ直します。
# killall -HUP httpd

参考ページ:
http://tethys.st.ryukoku.ac.jp/~kjm/security/www/htaccess.html


FreeBSD の部屋


Jul. 10, 2000