7.4 認証と認可の適用 認証と認可の適用 認証と認可の適用 認証と認可の適用
7.4.1 ホストベースのアクセス制御 ホストベースのアクセス制御 ホストベースのアクセス制御 ホストベースのアクセス制御
リクエスト処理サイクルの初期にアクセス制御が適用されます。これにより、ホスト名、IPア ドレスまたはその他の特性(ブラウザ・タイプなど)に基づいて、後続の処理を禁止できます。
このタイプのアクセス制御を設定するには、deny、allowおよびorderディレクティブを使 用します。この制限はOracle HTTP Server構成ディレクティブを使用して構成します。例7-1 に示すように、<Files>、<Directory>および<Location>コンテナ・ディレクティブを使用し、
特定のファイル、ディレクトリまたはURL形式に基づいて制限できます。
例 例 例
例7-1 ホストベースのアクセス制御ホストベースのアクセス制御ホストベースのアクセス制御ホストベースのアクセス制御
<Directory /internalonly/>
order deny, allow deny from all
allow from 192.168.1.* us.oracle.com
</Directory>
例7-1で、orderディレクティブは、Oracle HTTP Serverがdenyおよびallowディレクティ ブの条件を読み取る順序を決定します。denyディレクティブは、すべてのリクエストがアクセ スを拒否されるようにします。次に、allowディレクティブを使用して、192.168.1.*範囲内の 任意のIPアドレスから送信されるリクエストまたはドメイン名us.oracle.comを持つリク エストに対して、ディレクトリ/internalonly/内のファイルへのアクセスが許可されます。
ホスト・ベースの認証では、アクセス・ポリシーを明確にするために、allowとdenyの両方 を使用するのが一般的な方法です。
ファイル・システム・レベルでオブジェクトを比較する場合は、<Directory>または
<Files>を使用する必要があります。URLレベルでオブジェクトを比較する場合は、
<Location>を使用する必要があります。
7.4.1.1 仮想ホストのアクセス制御 仮想ホストのアクセス制御 仮想ホストのアクセス制御 仮想ホストのアクセス制御
仮想ホストにアクセス制御を設定するには、サーバー構成ファイルhttpd.conf内の仮想ホス ト・コンテナの中にIncludeディレクティブを指定します。Includeディレクティブを仮想 ホスト・コンテナ内で使用すると、ファイル内に含まれるアクセス制御ポリシーが指定されま す。例7-2は、httpd.confファイルからの抜粋です。Includeをこの方法で使用するための 構文が示されています。
例例
例例7-2 AccessConfigを使用したアクセス制御の設定を使用したアクセス制御の設定を使用したアクセス制御の設定を使用したアクセス制御の設定 ...
<VirtualHost ip_address_of_host.some_domain.com>
... virtual host directives ...
Include conf/include.conf
</VirtualHost>
注意 注意 注意
注意: インターネット・アクセスの場合、ホスト名に基づいてアクセスを 許可または制限するのは、セキュリティを提供する方法として優れている とはみなされません。ホスト名は簡単にスプーフィング(なりすまし)さ れるためです。IPアドレスでもこれは同じですが、妨害行為はより難しく なります。ただし、同じリスクを伴わないため、イントラネットのIPア ドレス範囲を使用してアクセス制御を設定するのは合理的です。この場合 は、ファイアウォールが正しく構成されているものとします。
認証と認可の適用
7.4.1.2 ホストベースのアクセス制御のための ホストベースのアクセス制御のための ホストベースのアクセス制御のための ホストベースのアクセス制御のための mod_access と と と と mod_setenvif の使用 の使用
の使用 の使用
ホストベースのアクセス制御方法を使用すると、HTTPリクエストの発信元に基づいて制限領 域へのアクセスを制御できます。Oracle HTTP Serverではmod_accessとmod_setenvifを使用 して、ホストベースのアクセス制御を実行します。mod_accessは、クライアントのホスト 名、IPアドレスまたはクライアント・リクエストのその他の特性に基づいてアクセス制御を提 供し、mod_setenvifは、リクエストの属性に基づいて環境変数を設定する機能を提供しま す。これらのモジュールを使用する構成ディレクティブをhttpd.confファイルに入力する と、サーバーでは、ホストのアドレス、名前またはHTTPリクエスト・ヘッダーの内容に基づ いて、リクエストを実行あるいは拒否します。
ホストベース・アクセス制御を使用すると、静的なHTMLページ、アプリケーションまたはコ ンポーネントを保護できます。
Oracle HTTP Serverは、次の4種類のホストベースのアクセス制御方法をサポートします。
■ IPアドレスによるアクセス制御
■ ドメイン名によるアクセス制御
■ ネットワークまたはネットマスクによるアクセス制御
■ 環境変数を使用したアクセス制御
これらの方法ではすべて、保護領域へのアクセス権が付与または拒否されるマシンを指定でき ます。ホストベースのアクセス制御方法のどれを選択するか(複数も可)は、制限されている コンテンツやアプリケーションをどの方法が最も効率的に保護するか、またはどの方法が最も 保守しやすいかによって決まります。
7.4.1.2.1 IPアドレスによるアクセス制御アドレスによるアクセス制御 アドレスによるアクセス制御アドレスによるアクセス制御 IPアドレスを使用したアクセス制御は、ホストベー スのアクセス制御でよく使用される方法です。この方法では、DNS参照を必要としません。
DNS参照には時間とシステム・リソースがかかり、サーバーがDNSスプーフィング攻撃を受 けやすくなります。
例例
例例7-3 IPアドレスによるアクセス制御アドレスによるアクセス制御アドレスによるアクセス制御アドレスによるアクセス制御
<Directory /secure_only/>
order deny,allow deny from all
allow from 207.175.42.*
</Directory>
例7-3では、207.175.42.*範囲を除く全IPアドレスからのリクエストは、/secure_only/
ディレクトリへのアクセスを拒否されます。
7.4.1.2.2 ドメイン名によるアクセス制御ドメイン名によるアクセス制御ドメイン名によるアクセス制御ドメイン名によるアクセス制御 ドメイン名ベースのアクセス制御をIPアドレス・
ベースのアクセス制御とともに使用すると、IPアドレスが警告なしで変更される問題が解決し ます。この2つの方法を組み合せると、IPアドレスが変更される場合でも、排除するドメイン 名はアクセスを拒否されるため、サイトの制限領域が保護されます。
ドメイン名ベースとIPアドレス・ベースのアクセス制御を組み合せるには、例7-4に示されて いる構文を使用します。
例 例 例
例7-4 ドメイン名によるアクセス制御ドメイン名によるアクセス制御ドメイン名によるアクセス制御ドメイン名によるアクセス制御
<Directory /co_backgr/>
認証と認可の適用
な予防措置ではありませんが、malicious.cracker.comがIPアドレスを変更している場合 でも、ここからの攻撃に対してサイトを保護します。
7.4.1.2.3 ネットワークまたはネットマスクによるアクセス制御ネットワークまたはネットマスクによるアクセス制御ネットワークまたはネットマスクによるアクセス制御ネットワークまたはネットマスクによるアクセス制御 ネットワークのサブセット(IP アドレスにより指定)に基づいてアクセスを制御できます。この構文を例7-5に示します。
例例
例例7-5 ネットワークまたはネットマスクによるアクセス制御ネットワークまたはネットマスクによるアクセス制御ネットワークまたはネットマスクによるアクセス制御ネットワークまたはネットマスクによるアクセス制御
<Directory /payroll/>
order deny,allow deny from all
allow from 10.1.0.0/255.255.0.0
</Directory>
例7-5では、ネットワークとネットマスクのペアからのアクセスが許可されます。ネットマス クは、IPアドレスをネットワーク、サブネットおよびホスト識別子に分割する方法を示したも のです。ネットマスクを使用すると、IPアドレスのホストID部分のみを参照できます。
例7-5のネットマスク255.255.0.0は、クラスBアドレスのデフォルト・ネットマスク設定で す。バイナリの1(10進の255)がネットワークIDをマスクし、バイナリの0(ゼロ)(10進 のゼロ)が、指定されたIPアドレスのホストIDを保持します。
7.4.1.2.4 環境変数を使用したアクセス制御環境変数を使用したアクセス制御環境変数を使用したアクセス制御環境変数を使用したアクセス制御 アクセス制御には、IPアドレスやドメイン名のか わりに任意の環境変数を使用できます。このタイプのアクセス制御には、BrowserMatchおよ びSetEnvIfディレクティブを使用します。
BrowserMatchは、リクエストの送信に使用するブラウザのタイプに応じてアクセスを許可す るときに使用します。たとえば、Netscapeブラウザからのリクエストのみにアクセスを許可す る場合は、例7-6に示されている構文を使用します。
例 例 例
例7-6 環境変数を使用したアクセス制御環境変数を使用したアクセス制御環境変数を使用したアクセス制御環境変数を使用したアクセス制御 BrowserMatch ^Mozilla netscape_browser
<Directory /mozilla-area/>
order deny,allow deny from all
allow from env=netscape_browser
</Directory>
SetEnvIfは、HTTPリクエストに含まれているヘッダー情報に応じてアクセスを許可すると きに使用します。たとえば、HTTPバージョン1.0以前を使用するブラウザからのアクセスを拒 否する場合は、例7-7に示されている構文を使用します。
例 例 例
例7-7 SetEnvによるアクセス制御によるアクセス制御によるアクセス制御によるアクセス制御
SetEnvIf Request_Protocol ^HTTP/1.1 http_11_ok
<Directory /http1.1only/>
order deny,allow deny from all
allow from env=http_11_ok
</Directory>
注意 注意 注意
注意: 通常、BrowserMatchおよびSetEnvIfはセキュリティ・ポリ シーの実装には使用されません。これらは、ブラウザのタイプとバージョ ンに応じて異なるリクエスト処理を提供するために使用されます。