Movatterモバイル変換


[0]ホーム

URL:


モジュール |ディレクティブ |FAQ |用語 |サイトマップ

Apache HTTP サーバ バージョン 2.4

<-
Apache >HTTP サーバ >ドキュメンテーション >バージョン 2.4 >モジュール

Apache モジュール mod_access_compat

翻訳済み言語: en  | fr  | ja 

この日本語訳はすでに古くなっている 可能性があります。 最近更新された内容を見るには英語版をご覧下さい。
説明:ホスト (名前もしくは IP アドレス) に基づいたグループ承認
ステータス:Extension
モジュール識別子:access_compat_module
ソースファイル:mod_access_compat.c
互換性:Apache 2.3 (Apache 2.x の以前のバージョンとの互換性のためのモジュールとして)。このモジュールで提供するディレクティブは、承認の仕組みの一新に伴い、非推奨になったものです。mod_authz_host も見てください。

概要

mod_access_compat により提供されるディレクティブは サーバの特定の部分への アクセスを制御するために<Directory>,<Files>,<Location>.htaccess ファイルで使用されます。クライアントのホスト名、IP アドレスや、環境変数などのリクエストの特徴に基づいて アクセス制御を行なうことができます。AllowDeny ディレクティブを使って、 どのようなクライアントにアクセスを 許可する、しないを指定します。またOrder ディレクティブを使って、 デフォルトのアクセス状態と、Allow ディレクティブとDeny ディレクティブとのお互いへの影響の仕方を設定します。

ホストによるアクセス制限とパスワードによる認証を、 同時に組み合わせて使うこともできます。 この場合、その二つの制限の関係を指定するためにSatisfy ディレクティブを使用します。

Note

mod_access_compatが提供するディレクティブは、 承認の仕組みの一新に伴い、非推奨になったものです。mod_authz_host も見てください。 デフォルトの承認の取り扱い機能を使用するためにmod_authz_default モジュールもロードされなければなりません。

一般的には、アクセス制限ディレクティブはすべてのアクセスメソッド (GET,PUT,POST など) に適用されます。そして、ほとんどの場合これが望ましい動作です。 しかし、<Limit> セクションの中にディレクティブを書くことで、 一部のメソッドにのみ制限をかけることもできます。

Support Apache!

ディレクティブ

Bugfix checklist

参照

top

Allowディレクティブ

説明:サーバのある領域にアクセスできるホストを制御する
構文: Allow from all|host|env=[!]env-variable[host|env=[!]env-variable] ...
コンテキスト:ディレクトリ, .htaccess
上書き:Limit
ステータス:Extension
モジュール:mod_access_compat

Allow ディレクティブは、どのホストが サーバのある領域にアクセスできるかに影響を与えます。 アクセスはホスト名、IP アドレス、IP アドレスの範囲や、 環境変数などのクライアントのリクエストの 特徴に基づいてアクセス制御することができます。

このディレクティブの最初の引数は常にfrom です。 それに続く引数は三つの違った形式があります。Allow from all が指定されていれば、すべてのホストにアクセスを許可し、 アクセス制限は下で説明されているように、Deny ディレクティブとOrder ディレクティブの設定で決まります。 特定のホストやホスト群にのみサーバへのアクセスを許可するためには、 以下のどれかの形式でhost を指定することができます:

ドメイン名 (の一部)

Allow from apache.org
Allow from .net example.edu

この文字列に合うか、これで終わる名前のホストのアクセスが許可されます。 各部分が完全に合うものだけに適用されますので、上の例はfoo.apache.org にはマッチしますが、fooapache.org にはマッチしません。 この設定をすると、Apache はHostnameLookups の設定に関わらず、クライアントの IP アドレスに対して DNS の 2 重逆引きを行ないます。 ホスト名からオリジナルの IP アドレスを順引きします。 順引きと逆引きが一致し、ホスト名が該当した場合にのみ、 アクセスが許可されます。

完全な IP アドレス

Allow from 10.1.2.3
Allow from 192.168.1.104 192.168.1.205

アクセスを許可する IP アドレスです。

IP アドレスの一部

Allow from 10.1
Allow from 10 172.20 192.168.2

サブネットの制限用の、IP アドレスの最初の一つから三つまでのバイトです。

ネットワーク/ネットマスク の対

Allow from 10.1.0.0/255.255.0.0

ネットワーク a.b.c.d とネットマスク w.x.y.z です。 より細粒度のサブネット制限用です。

ネットワーク/nnn CIDR 指定

Allow from 10.1.0.0/16

ネットマスクが nnn の上位ビットが 1 となっているものからなること以外は前のものと同じです。

注: 最後の三つの例はまったく同じホストに合います。

IPv6 アドレスと IPv6 のサブネットは以下のように指定できます:

Allow from 2001:db8::a00:20ff:fea7:ccea
Allow from 2001:db8::a00:20ff:fea7:ccea/10

Allow ディレクティブの引数の三つ目の形式は、環境変数 の存在によりアクセスの制御を行なえるようにするものです。Allow from env=env-variable が指定されていると、環境変数env-variable が存在した場合にリクエストはアクセスを許可されます。Allow from env=!env-variable が指定されていると、環境変数env-variable が存在しない場合にアクセス許可されます。 サーバはmod_setenvif のディレクティブにより、クライアントのリクエスト の特徴に基づいて柔軟に環境変数を設定する機能を提供します。 ですから、このディレクティブはクライアントのUser-Agent (ブラウザの種類)、Referer や他の HTTP リクエストのヘッダフィールドなどに基づいて アクセス許可をするために使うことができます。

Example:

SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
<Directory /docroot>
Order Deny,Allow
Deny from all
Allow from env=let_me_in
</Directory>

この場合、user-agent の文字列がKnockKnock/2.0 で始まるブラウザのみがアクセスが許可され、 他のものはアクセスが拒否されます。

top

Denyディレクティブ

説明:サーバがアクセスを拒否するホストを制御する
構文: Deny from all|host|env=[!]env-variable[host|env=[!]env-variable] ...
コンテキスト:ディレクトリ, .htaccess
上書き:Limit
ステータス:Extension
モジュール:mod_access_compat

このディレクティブはホスト名、IP アドレス、環境変数に基づいてサーバへのアクセスを制限します。Deny ディレクティブの引数はAllow ディレクティブとまったく同じです。

top

Orderディレクティブ

説明:デフォルトのアクセス可能な状態と、AllowDeny が評価される順番を制御する
構文: Orderordering
デフォルト:Order Deny,Allow
コンテキスト:ディレクトリ, .htaccess
上書き:Limit
ステータス:Extension
モジュール:mod_access_compat

Order ディレクティブはAllow ディレクティブとDeny と共に"3段階アクセス制御システム" を制御します。第1段階目ではOrder ディレクティブで1番目に 指定したディレクティブ(Allow またはDeny)を全て処理します。 第2段階目で、残りのディレクティブ(Deny またはAllow) を全て処理します。第3段階目で、第1段階目と第2段階目で マッチしなかったリクエストを処理します。

全てのAllowDeny が処理され、結局のところ最後にマッチ した条件が有効となることに注意してください。これは最初にマッチした条件だけが有効 となる、典型的なファイアウォールの動作とは異なっています。 また、設定ファイルに書く順番には意味はありません。Allow 行は全部一つのグループとして扱われ、Deny 行はもう一つのグループとみなされます。 またデフォルト状態は単独で一つのグループとみなされます。

Order 設定は以下のどれかです。

Allow,Deny
まずAllow ディレクティブが適用されます。どれにもマッチしなかった場合、この時点で リクエストは拒否されます。次に、全ての Deny ディレクティブが適用されます。どれか一つでもマッチした場合は、 リクエストは拒否されます。 最後に、Allow にもDeny にもマッチしなかったリクエストは デフォルト設定が適用されるので拒否されます。
Deny,Allow
まずDeny ディレクティブが適用されます。どれか一つでもマッチした場合は、Allow のどれにも マッチしなければ、アクセスは拒否されます。 どのAllow にもDeny にもマッチしないリクエストは 許可されます。
Mutual-failure
これはOrder Allow,Deny と全く同じ効果を持ち、 そのため非推奨となっています。

キーワードの間に置けるのはコンマだけです。 間に空白があってはいけません

マッチAllow,Deny 時の結果Deny,Allow 時の結果
Allow だけにマッチ許可許可
Deny だけにマッチ拒否拒否
どちらにもマッチしない2番目のディレクティブがデフォルト: 拒否2番目のディレクティブがデフォルト: 許可
Allow と Deny 両方にマッチ最後にマッチしたほう: 拒否最後にマッチしたほう: 許可

以下の例では、apache.org ドメインのすべてのホストはアクセスを許可されます。 他のすべてのホストはアクセスを拒否されます。

Order Deny,Allow
Deny from all
Allow from apache.org

次の例では、foo.apache.org サブドメインにあるホスト以外の、 apache.org ドメインのすべてのホストがアクセスを許可されます。 apache.org ドメインでないホストは、デフォルトの状態がDeny のため、 サーバへのアクセスを拒否されます。

Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org

一方、上の例のOrderDeny,Allow に変わっていれば、すべのホストにアクセスが許可されます。 これは、設定ファイル中の実際の順番に関わらず、Allow from apache.org が最後に評価されて、Deny from foo.apache.org を上書きするからです。apache.org ドメインにないホストも、デフォルトの状態がAllow なので、アクセスを許可されます。

Order ディレクティブはデフォルトのアクセスの状態に影響を与えるので、Allow ディレクティブとDeny ディレクティブが無くても、サーバのアクセスに影響を与えることができます。 たとえば、

<Directory /www>
Order Allow,Deny
</Directory>

はデフォルトのアクセス状態がDeny になるため、/www ディレクトリへのすべてのアクセスを拒否します。

Order ディレクティブはサーバの設定処理の各段階でだけ アクセスディレクティブの処理の順番を変更します。これは、たとえば、Order ディレクティブの設定に関わらず、<Location> セクションのAllow ディレクティブやDeny ディレクティブは、Directory セクションや.htaccess ファイルのAllow ディレクティブやDeny ディレクティブよりも常に後に評価されるということを意味します。 設定セクションのマージの詳細については、Directory,Location, Files セクションの動作方法 を参照してください。

top

Satisfyディレクティブ

説明:ホストレベルのアクセス制御とユーザ認証との相互作用を指定
構文:Satisfy Any|All
デフォルト:Satisfy All
コンテキスト:ディレクトリ, .htaccess
上書き:AuthConfig
ステータス:Extension
モジュール:mod_access_compat
互換性:バージョン 2.0.51 以降では<Limit> ディレクティブと<LimitExcept> ディレクティブの影響を受ける

AllowRequire の両方が使われているときの アクセスポリシーを設定します。パラメータはAllAny です。このディレクティブはある場所へのアクセスがユーザ名/パスワードクライアントのホストのアドレスで制限されているときにのみ 役立ちます。デフォルトの動作 (All) はクライアントがアドレスによる アクセス制限を満たし、かつ正しいユーザ名とパスワードを入力することを 要求します。Any では、クライアントはホストの制限を満たすか、 正しいユーザ名とパスワードの入力をするかをすればアクセスを許可されます。 これは、ある場所をパスワードで保護するけれど、特定のアドレスからの クライアントにはパスワードの入力を要求せずにアクセスを許可する、 というようなときに使用できます。

例えば、同じネットワーク上にいる人にはウェブサイトのある部分について 無制限のアクセスを許したいけれど、外のネットワークの人には パスワードを提供させるようにするためには、次のような設定をすることが できます:

Require valid-user
Allow from 192.168.1
Satisfy Any

バージョン 2.0.51 からは<Limit> セクションと<LimitExcept> セクションを使用することでSatisfy ディレクティブが 適用されるメソッドを制限することが できるようになりました。

参照

翻訳済み言語: en  | fr  | ja 

top

コメント

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to ourmailing lists.

Copyright 2025 The Apache Software Foundation.
この文書はApache License, Version 2.0 のライセンスで提供されています。.

モジュール |ディレクティブ |FAQ |用語 |サイトマップ


[8]ページ先頭

©2009-2025 Movatter.jp