WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

.htaccessによるIPアドレス・ホストのアクセス制限

      2012/12/09

ホワイトリスト・ブラックリスト方式で特定のIPアドレス・ホストを制限する

特定のIPアドレスまたはホストからのアクセスだけを許可したいという場合は、.htaccessに以下のように記述します。
※Apacheの設定で.htaccessが有効になっていることが前提です。

$ vi /var/www/html/.htaccess
# # # # # # # # # # # # # # # # # #
# ホワイトリスト式のアクセス制限
order deny,allow
deny from all

allow from 202.215.75.207    # IPアドレス 202.215.75.207 を許可
allow from .bbtec.net        # Yahoo BB からのアクセスを許可

上記の.htaccessが置かれたディレクトリ以下は、許可したIPアドレス・ホストでアクセスしてもステータスコード403 Forbbidden が返されます。

order deny,allowという箇所がありますが、このように記載することで、すべてのアクセスを拒否し、指定したものだけを許可するホワイトリスト方式となります。

一方、order allow,denyというふうにdeny,allowを逆にして、それ以下のallow・denyを入れ替えて記述することで、指定したものだけを拒否するブラックリスト方式となります。
以下はブラックリスト方式の例です。

$ vi /var/www/html/.htaccess
# # # # # # # # # # # # # # # # # #
# ブラックリスト式のアクセス制限
order allow,deny
allow from all

deny from 202.215.75.207    # IPアドレス 202.215.75.207 を拒否
deny from .bbtec.net        # Yahoo BB からのアクセスを拒否

この方法の注意点

前述した方法は、設定の内容によってはApacheのパフォーマンスが低下する場合があります。

ミケネコの htaccess リファレンスによると、以下のような記述でホスト制限を行うと、Apacheの負荷が大きくなるとあります。

order allow,deny
allow from all
deny from .aaa.ne.jp

原因は、このような設定によって、通常無効となっているDNSの逆引き機能が有効になってしまうことのようです。

したがって、上記のような文脈でホストを制限する際はこの点を念頭に置く必要があります。

 - WEBサーバ構築 , , , ,