WWW によるアクセスを制限したい場合の方法です。 .htaccess を使いますが、その前に WWW サーバ(Apache)の設定が必要です。
なお、ここの記述は RedHat Linux Sparc 上での httpd の制御を基にしています。 FreeBSD ではありませんが、おそらく同様に動くでしょう。
httpd のコンフィギュレーションファイルは httpd.conf です。
#RedHat Linux Sparc では /etc/httpd/conf/httpd.conf にありました。
このファイルの一部を変更します。
httpd.conf
AllowOverride None
→ AllowOverride Limit AuthConfig
参考: http://www.itnavi.com/irohaApache.htm
- Limit: IP アドレスによるアクセス制限を許可する
- AuthConfig: ユーザ名とパスワードによるアクセス制限を許可する
このあと、httpd を再起動します。
# /somewhere/apachectl restart
アクセス制限するには、.htaccess と言うファイルを 制限したいディレクトリに置きます。 すると、そのディレクトリ以下がこの .htaccess で制限できることになります。IP アドレスによるアクセス制限
2行目から意味を説明します。
.htaccess
<limit GET>
order deny,allow
deny from all
allow from 123.45.67.89
</limit>
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行目を上書きするのですべてのホストからの アクセスを許可します。ユーザ名とパスワードによるアクセス制限
- パスワードファイルを作る
apache のインストール先を /APACHE とします。
ユーザ名: hoge
パスワード: hogepasswd
という設定を、/home/hogehoge/.htpasswd というパスワードファイルに 書き込みます。オプション -b はパスワードをコマンドラインで指定するため、 -c は .htpasswd があっても上書きするためのものです。 /home/hogehoge は WWW で公開していないディレクトリである方が セキュリティー上好ましいでしょう。
% /APACHE/bin/htpasswd -bc /home/hogehoge/.htpasswd hoge hogepasswd
- .htaccess ファイル
認証を必要とするディレクトリに以下の内容を持った .htaccess ファイルを置いておきます。
.htaccess
AuthUserFile /home/hogehoge/.htpasswd
AuthGroupFile /dev/null
AuthName "Hoge"
AuthType Basic
require valid-user
Apache-1.3.22 では以下の設定は必要ありませ ん。さて、.htaccess でアクセス制限できた訳ですが、 古いバージョンの Apache では.htaccess 自体はアクセス制限できていません。 URL として、ダイレクトに .htaccess を指定すると見えてしまいます。 セキュリティーにかかわる事であり、これでは困ります。 例えば、許可しているホストのフリをして覗き見る事も可能です。 そこで、.htaccess を隠してしまいましょう。
やはり、httpd.conf(もしくは access.conf) をいじります。 そこに、次のように書きます。
これでOKです。後は、httpd を起ち上げ直します。
access.conf
<Files .htaccess>
deny from all
</Files>
# killall -HUP httpd 参考ページ:
http://tethys.st.ryukoku.ac.jp/~kjm/security/www/htaccess.html