「Apacheのアクセスコントロール」の版間の差分

提供: セキュリティ
移動: 案内検索
(セキュリティの注意事項)
 
行11: 行11:
 
* ホストによるアクセスコントロール
 
* ホストによるアクセスコントロール
 
* ユーザー認証によるアクセスコントロール
 
* ユーザー認証によるアクセスコントロール
 
 
=== ホストによるアクセスコントロール ===
 
=== ホストによるアクセスコントロール ===
 
* 2.2系まで Allow,Deny,Order
 
* 2.2系まで Allow,Deny,Order
行17: 行16:
 
=== ユーザー認証によるアクセスコントロール ===
 
=== ユーザー認証によるアクセスコントロール ===
 
* [[Basic認証]]
 
* [[Basic認証]]
* [[Digest認証]]
+
* Digest認証
 
== 使い方 ==
 
== 使い方 ==
 
=== アクセスをすべて許可する ===
 
=== アクセスをすべて許可する ===
行108: 行107:
  
 
=== 任意の変数によるアクセスコントロール ===
 
=== 任意の変数によるアクセスコントロール ===
[[ユーザーエージェント]](ブラウザタイプ)によるアクセスの拒否の例です。
+
ユーザエージェント(ブラウザタイプ)によるアクセスの拒否の例です。
 
<syntaxhighlight lang="apache">
 
<syntaxhighlight lang="apache">
 
<If "%{HTTP_USER_AGENT} == 'BadBot'">
 
<If "%{HTTP_USER_AGENT} == 'BadBot'">
行114: 行113:
 
</If>
 
</If>
 
</syntaxhighlight>
 
</syntaxhighlight>
[[ユーザーエージェント]](User-Agent, UA)によるアクセスコントロールは、信頼出来ないテクニックです。それは、誰でも、この[[ユーザーエージェント]]を任意の値に指定できるからです。
+
ユーザエージェント(User-Agent, UA)によるアクセスコントロールは、信頼出来ないテクニックです。それは、誰でも、このユーザエージェントを任意の値に指定できるからです。
 
+
 
== 関連項目 ==
 
== 関連項目 ==
 
{{apache}}
 
{{apache}}
 
<!-- vim: filetype=mediawiki
 
<!-- vim: filetype=mediawiki
 
-->
 
-->

2015年9月23日 (水) 15:50時点における最新版

Apacheのアクセスコントロール とは、Apacheの2.2まではOrder/Deny/Allowディレクティブで行われてきましたが、2.4からはRequireを使用します。

読み方

Apacheのアクセスコントロール
あぱっちのあくせすこんとろーる

概要

Apache HTTP Serverの設定は、2.4からRequireを使用して、アクセスコントロールを設定します。

Apacheのアクセスコントロールの種類

Apache HTTP Serverには、以下のアクセスコントロールがあります。

  • ホストによるアクセスコントロール
  • ユーザー認証によるアクセスコントロール

ホストによるアクセスコントロール

  • 2.2系まで Allow,Deny,Order
  • 2.4系から Require

ユーザー認証によるアクセスコントロール

使い方

アクセスをすべて許可する

Apache 2.4ですべてのアクセスを許可する例です。

Require all granted

2.2系では、以下のように書いていました。

Order allow,deny
Allow from all

アクセスをすべて拒否する

Apache 2.4ですべてのアクセスを拒否する例です。

Require all denied

2.2系では、以下のように書いていました。

Order deny,allow
Deny from all

ほとんどアクセスを許可し、一部を拒否する

Require all granted
Require not ip 10.1.2.3

ドメインベースのアクセス制御

Apache 2.4でexample.orgドメインのすべてのホストのみを許可する例です。それ以外は、拒否します。

Require host example.org

2.2系では、以下のように書いていました。

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

Requireで複数書く場合には、以下の通りです。

Require host .net example.org

ホストを拒否する例です。

Require not host host.example.org

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

完全なIPアドレスでアクセスを許可する場合です。

Require ip 10.1.2.3
Require ip 192.168.0.101 192.168.0.102

部分的なIPアドレスでアクセスを許可する場合です。

Require ip 10.1
Require ip 10 172.20 192.168.0

ネットワーク/ネットマスクのペアで許可する場合です。

Require ip 10.1.0.0/255.255.0.0

network/nnn CIDR で指定する例です。

Require ip 10.1.0.0/16


IPv6アドレスやIPv6サブネットで指定する例です。

Require ip 2001:db8::a00:20ff:fea7:ccea
Require ip 2001:db8::a00:20ff:fea7:ccea/10

ローカルホストのアクセスを許可する Require local

localプロバイダは、以下の条件がなりたつときに、サーバへのアクセスを許可します。

  • クライアントのアドレスが 127.0.0.0/8 に一致する場合
  • クライアントのアドレスが ::1 の場合
  • コネクションのクライアントとサーバのアドレスが一致する場合

ローカルホストから発生するコネクションに許可する便利な方法です。

Require local

セキュリティの注意事項

サーバへのアクセスがプロキシされるときに、クライアントのアドレスがプロキシサーバのアドレスになることを注意しなければなりません。 この問題に対する1つの解決策としてApache mod_remoteipを確認してください。

任意の変数によるアクセスコントロール

ユーザエージェント(ブラウザタイプ)によるアクセスの拒否の例です。

<If "%{HTTP_USER_AGENT} == 'BadBot'">
    Require All Denied
</If>

ユーザエージェント(User-Agent, UA)によるアクセスコントロールは、信頼出来ないテクニックです。それは、誰でも、このユーザエージェントを任意の値に指定できるからです。

関連項目