Apacheのアクセス制御は、バージョン2.4から採用されたmod_authz_host
が推奨され、mod_access_compat
は非推奨となった。その大きな変更点と、推奨されているアクセスIP制限の設定方法。
コンテンツ
Apache2.4で、Order、Allow、Denyによるアクセス制限は非推奨に
アクセス制限でよく使われているOrder、Allow、Denyは、Apacheのバージョンアップにより非推奨となった。
代わりにApache2.4ではmod_authz_host
モジュールが採用され、Requireディレクティブの使用が推奨されている。
しかし実際は、Apache 2.2でもmod_access_compat
が組み込まれていれば、従来のアクセスコントロールが可能である。
Apache | モジュール | ディレクティブ | 推奨 |
---|---|---|---|
2.2 | mod_access_compat | Order Allow Deny | 非推奨 |
2.4 | mod_authz_host | Require | 推奨 |
RequireによるIPアクセス制限の設定方法
Apache2.2系と2.4系の記述方法を比較していく。
すべての接続元を許可する
# 2.2系以前
Allow from All
# 2.4系以降
Require all granted
すべての接続元を拒否する
# 2.2系以前
Deny from all
# 2.4系以降
Require all denied
ローカルのみアクセスを許可する
# 2.2系以前
Order deny,allow
Deny from all
Allow from localhost
# 2.4系以降
Require all denied
Require local
特定の接続元のみアクセスを許可する
# 2.2系以前
Order Deny,Allow
Deny from all
Allow from example.com
Allow from 192.0.2.0
Allow from 192.0.2.
Allow from 192.0.2.0/24
# 2.4系以降
<RequireAny>
Require host example.com
Require ip 192.0.2.0
Require ip 192.0.2.
Require ip 192.0.2.0/24
</RequireAny>
特定の接続元からのアクセスを拒否する
# 2.2系以前
Order Allow,Deny
Allow from all
Deny from example.com
Deny from 192.0.2.0
Deny from 192.0.2.
Deny from 192.0.2.0/24
# 2.4系以降
<RequireAll>
Require all granted
Require not host example.com
Require not ip 192.0.2.0
Require not ip 192.0.2.
Require not ip 192.0.2.0/24
</RequireAll>
コード解説
<RequireAny>…</RequireAny>
- このディレクティブに囲まれたいずれかの条件にマッチすればアクセスを許可します。このディレクティブは省略することができます。
- Require host example.com
- ホスト名による指定。接続元ホスト名がexample.comまたは.example.comであることを表します。 Require ip 192.0.2.0 完全なIPアドレスによる指定。接続元IPアドレスが192.0.2.0であることを表します。 Require ip 192.0.2. IPアドレスの前方一致による指定。接続元IPアドレスが192.0.2.であることを表します。
- Require ip 192.0.2.0/24
- IPアドレスのネットマスクを使った指定。接続元IPアドレスが192.0.2.0から192.0.2.255の範囲内であることを表します。
<RequireAll>…</RequireAll>
- このディレクティブに囲まれたすべての条件にマッチすればアクセスを許可します。このディレクティブは省略できません。
- Require all granted
- すべての接続を許可することを表します。以下の接続拒否条件に当てはまらない接続を許可するために必要な条件です。
- Require not host example.com
- ホスト名による指定。接続元ホスト名がexample.comまたは.example.comでないことを表します
- Require not ip 192.0.2.0
- 完全なIPアドレスによる指定。接続元IPアドレスが192.0.2.0でないことを表します。
- Require not ip 192.0.2. IP
- アドレスの前方一致による指定。接続元IPアドレスが192.0.2.でないことを表します。
- Require not ip 192.0.2.0/24
- IPアドレスのネットマスクを使った指定。接続元IPアドレスが192.0.2.0から192.0.2.255の範囲内でないことを表します。