はじめに
この記事は、Apache2.2でIP制限をかけるで触れられているように、Apache2.4以降で推奨されているIP制限のかけ方の記事である。
IP制限のかけ方
IP制限に関するApacheの記述は.htaccessファイル
もしくは.cofファイル
に書く。この記事では.cof
ファイルを編集する方法を紹介する。
.confファイル
の記述例
特定のドメインもしくはアドレスからのアクセスを許可するか拒否するかによって書き方は異なる。
特定のドメインもしくはIPアドレスからのアクセスを許可したい場合
<Directory /var/www/html> <RequireAny> Require ip aaa.bbb.ccc.ddd Require host www.example.com </RequireAny> </Directory>
特定のドメインもしくはIPアドレスからのアクセスを拒否したい場合
<Directory /var/www/html> <RequireAll> Require all granted Require not ip aaa.bbb.ccc.ddd Require not host www.example.com </RequireAll> </Directory>
解説
1. Directory
でIPアドレス制限を行う場所の設定
上の例の場合、/var/www/html
ディレクトリ下にある全てのファイルに対して制限がかかる。
Directory
と同じような設定でLocation
と呼ばれるものがあるが、これはパスに対して制限をかける。
2. RequireAny
:いずれかの条件にマッチすればアクセスを許可
<RequireAny> * * * * * * </RequireAny>
の間に記述された条件のうち一つでも満たすアクセスは許可をする。
注意
RequireAny
ディレクティブのブロック内でRequire not xxx
のような not を付けた Requireディレクティブを記述すると、 Apacheの起動時に次のようなエラーメッセージが出て起動することができない。negative Require directive has no effect in <RequireAny> directive
3. RequireAll
:すべての条件にマッチした場合だけアクセスを許可する。
<RequireAll> * * * * * * </RequireAll>
の間に記述されたすべての条件を満たすアクセスのみ許可をする。
注意
RequireAll
ディレクティブのブロック内でRequire not xxx
のような not を付けた Requireディレクティブだけを記述すると、 Apacheの起動時に次のようなエラーメッセージが出て起動することができない。 notを付けたRequireディレクティブを記述する場合は一緒にRequire all granted
を記述する必要がある。<RequireAll> directive contains only negative authorization directives
4. Require ip
:指定のIPアドレスからのアクセスを許可/拒否する
許可する場合
完全な指定
Require ip 192.168.0.1 Require ip 10.1.1.5
一部の指定
Require ip 192.168.0 Require ip 10
Net Mask または CIDR での指定
Require ip 172.16.0.0/255.255.0.0 Require ip 172.16.0.0/16
拒否する場合
Require not ip 192.168.0.1 Require not ip 10.1.1.5
5. Require host
:指定のドメインからのアクセスを許可する
許可する場合
Require host example.com
拒否する場合
Require not host example.com