Apacheのアクセスコントロール
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
ユーザー認証によるアクセスコントロール
- Basic認証
- Digest認証
使い方
アクセスをすべて許可する
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
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)によるアクセスコントロールは、信頼出来ないテクニックです。それは、誰でも、このユーザエージェントを任意の値に指定できるからです。
関連項目
- Webサーバ
- Apache HTTP Server
- Apacheのアクセスコントロール
- Mod モジュール
ツイート