ApacheでIP制限をかける(2022/11/2 追記)

IP制限とは

特定のドメインやIPアドレスからのアクセスを許可したり、拒否したりすることでサーバーを守ること。

IP制限のかけ方

IP制限に関するApacheの記述は.htaccessファイルもしくは.cofファイルに書く。この記事では.cofファイルを編集する方法を紹介する。

.confファイルの記述例

特定のドメインもしくはアドレスからのアクセスを許可するか拒否するかによって書き方は異なる。

[2022/11/2 追記]

下記のようなorder/allow/denyを使った書き方はApache2.2以前のもので、Apache2.4以降では推奨されていないため、環境によってはエラーが出ることもある。

Apache2.4以降で推奨されている書き方の記事はこちら

特定のドメインもしくはIPアドレスからのアクセスを許可したい場合

<Directory /var/www/html>
  order deny,allow
  deny from all
    allow from aaa.bbb.ccc.ddd
  allow from www.example.com
</Directory>

特定のドメインもしくはIPアドレスからのアクセスを拒否したい場合

<Directory /var/www/html>
  order allow,deny
  allow from all
    deny from aaa.bbb.ccc.ddd
  deny from www.example.com
</Directory>

解説

1. DirectoryでIPアドレス制限を行う場所の設定

上の例の場合、/var/www/htmlディレクトリ下にある全てのファイルに対して制限がかかる。

Directoryと同じような設定でLocationと呼ばれるものがあるが、これはパスに対して制限をかける。

Locationディレクティブ/LocationMatchディレクティブ:設定が適用されるURLパスを指定する

2. orderによるアクセス制御

 order deny,allow拒否に該当したら許可を判定するため、許可が優先となる。逆の場合も然り。 よって、order allow,deny拒否を設定し、            order deny,allow許可を設定する。

3. allowdeny

allow from ***deny from ***で許可する範囲や拒否する範囲を指定する。全てのアクセスを許可もしくは拒否したい場合はallを使う。

参考文献