Oracle HTTP Server スタンドアロン・デプロイの管理Apache 2.0ベース 10g(10.1.3.1.0) B31848-02 |
|
この章では、Oracle HTTP Serverのセキュリティ機能、およびセキュアなWebサイトを設定するための構成情報について説明します。
記載されている内容は、次のとおりです。
セキュリティ機能は、認証、認可および機密保護という3つのカテゴリに分類できます。Oracle HTTP Serverでは、この3つのカテゴリのすべてをサポートします。Oracle HTTP ServerはApache Web Serverがベースで、そのセキュリティ・インフラストラクチャは、主にApacheモジュールのmod_authとmod_access、およびOracleモジュールのmod_osslとmod_ossoにより提供されています。mod_auth
はユーザー名とパスワードのペアに基づく認証を提供し、mod_access
はリクエストの特性(ホスト名またはIPアドレスなど)に基づいてサーバーへのアクセスを制御します。mod_ossl
はSSLを介してX.509クライアント証明書を使用した機密保護と認証を提供し、mod_osso
はWebアプリケーションでシングル・サインオン認証を使用可能にします。
Apacheモデルに基づいて、Oracle HTTP Serverではアクセス制御、認証および認可の各メソッドを提供しています。これらのメソッドは、httpd.confファイルのアクセス制御ディレクティブを使用して構成できます。Oracle HTTP ServerにURLリクエストが着信すると、サーバーのデフォルトと構成パラメータで決定される一連の手順で処理されます。URLリクエストの処理手順は、多くのWebリスナーに共通のモジュール(プラグイン)アーキテクチャを使用して実装されています。
図7-1は、サーバーによるURLリクエストの処理方法を示したものです。このプロセスの各手順は、サーバー・モジュールによりサーバーの構成に応じて処理されます。たとえばBasic認証が使用される場合、図7-1の認証および認可という手順は、mod_auth
モジュールの処理を示します。
Oracle HTTP Serverはユーザーを認可および認証します。ユーザーは、認可および認証後にサーバー上のリソースにアクセス、またはこれを変更できます。Oracle HTTP Serverを使用してサーバーにアクセスするユーザーの3つのクラスとその権限は、次のとおりです。
mod_auth
およびmod_ossl
により認証されているユーザーが含まれます。このようなユーザーは、http.conf
ファイルに定義されているURLにアクセスできます。mod_osso
およびSingle Sign-On Serverを使用して認証されているユーザー。このユーザーは、Single Sign-Onにより許可されているリソースにアクセスできます。Oracle HTTP Serverは、次のようなリソースを保護するように構成されています。
.gif
ファイルおよびOracle HTTP Serverが直接提供するその他の静的ファイルなど。
Oracle HTTP Serverは、ユーザーの認証と認可を2段階で提供します。
リクエスト処理サイクルの初期にアクセス制御が適用されます。これにより、ホスト名、IPアドレスまたはその他の特性(ブラウザ・タイプなど)に基づいて、後続の処理を禁止できます。このタイプのアクセス制御を設定するには、deny
、allow
およびorder
ディレクティブを使用します。この制限はOracle HTTP Server構成ディレクティブを使用して構成します。例7-1に示すように、<Files>、<Directory>および<Location>コンテナ・ディレクティブを使用し、特定のファイル、ディレクトリまたはURL形式に基づいて制限できます。
<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
>を使用する必要があります。
仮想ホストにアクセス制御を設定するには、サーバー構成ファイルhttpd.conf
内の仮想ホスト・コンテナの中にInclude
ディレクティブを指定します。Include
ディレクティブを仮想ホスト・コンテナ内で使用すると、ファイル内に含まれるアクセス制御ポリシーが指定されます。例7-2は、httpd.conf
ファイルからの抜粋です。Include
をこの方法で使用するための構文が示されています。
... <VirtualHost ip_address_of_host.some_domain.com> ... virtual host directives ... Include conf/include.conf </VirtualHost>
ホストベースのアクセス制御方法を使用すると、HTTPリクエストの発信元に基づいて制限領域へのアクセスを制御できます。Oracle HTTP Serverではmod_accessとmod_setenvifを使用して、ホストベースのアクセス制御を実行します。mod_access
は、クライアントのホスト名、IPアドレスまたはクライアント・リクエストのその他の特性に基づいてアクセス制御を提供し、mod_setenvif
は、リクエストの属性に基づいて環境変数を設定する機能を提供します。これらのモジュールを使用する構成ディレクティブをhttpd.conf
ファイルに入力すると、サーバーでは、ホストのアドレス、名前またはHTTPリクエスト・ヘッダーの内容に基づいて、リクエストを実行あるいは拒否します。
ホストベース・アクセス制御を使用すると、静的なHTMLページ、アプリケーションまたはコンポーネントを保護できます。
Oracle HTTP Serverは、次の4種類のホストベースのアクセス制御方法をサポートします。
これらの方法ではすべて、保護領域へのアクセス権が付与または拒否されるマシンを指定できます。ホストベースのアクセス制御方法のどれを選択するか(複数も可)は、制限されているコンテンツやアプリケーションをどの方法が最も効率的に保護するか、またはどの方法が最も保守しやすいかによって決まります。
IPアドレスを使用したアクセス制御は、ホストベースのアクセス制御でよく使用される方法です。この方法では、DNS参照を必要としません。DNS参照には時間とシステム・リソースがかかり、サーバーがDNSスプーフィング攻撃を受けやすくなります。
<Directory /secure_only/> order deny,allow deny from all allow from 207.175.42.* </Directory>
例7-3では、207.175.42.*範囲を除く全IPアドレスからのリクエストは、/secure_only/
ディレクトリへのアクセスを拒否されます。
ドメイン名ベースのアクセス制御をIPアドレス・ベースのアクセス制御とともに使用すると、IPアドレスが警告なしで変更される問題が解決します。この2つの方法を組み合せると、IPアドレスが変更される場合でも、排除するドメイン名はアクセスを拒否されるため、サイトの制限領域が保護されます。
ドメイン名ベースとIPアドレス・ベースのアクセス制御を組み合せるには、例7-4に示されている構文を使用します。
<Directory /co_backgr/> order allow,deny allow from all # 141.217.24.* is the IP for malicious.cracker.com deny from malicious.cracker.com 141.217.24.* </Directory>
例7-4では、ディレクトリ/co_backgr/
に対するリクエストは、ドメイン名malicious.cracker.com
またはIPアドレス範囲141.217.24.*からのリクエストを除いて、すべて受信されます。これは、ドメイン名またはIPアドレスのスプーフィングに対する絶対的な予防措置ではありませんが、malicious.cracker.com
がIPアドレスを変更している場合でも、ここからの攻撃に対してサイトを保護します。
ネットワークのサブセット(IPアドレスにより指定)に基づいてアクセスを制御できます。この構文を例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を保持します。
アクセス制御には、IPアドレスやドメイン名のかわりに任意の環境変数を使用できます。このタイプのアクセス制御には、BrowserMatch
およびSetEnvIf
ディレクティブを使用します。
BrowserMatch
は、リクエストの送信に使用するブラウザのタイプに応じてアクセスを許可するときに使用します。たとえば、Netscapeブラウザからのリクエストのみにアクセスを許可する場合は、例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に示されている構文を使用します。
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>
Basic認証では、HTTPリクエストにサービスを提供する前に、ユーザー名とパスワードを求めるプロンプトを表示します。ブラウザが保護領域のページをリクエストすると、Oracle HTTP ServerはWWW-Authenticate:
ヘッダーと構成ディレクティブAuthName
により構成されているレルムの名前を含む、不認可のメッセージ(ステータス・コード401)をレスポンスとして返します。ブラウザはこのレスポンスを受信すると、ユーザー名とパスワードを求めるプロンプトを表示します。ユーザーがユーザー名とパスワードを入力した後、ブラウザはこの情報を認可ヘッダーに入れてサーバーに返します。認可ヘッダー・メッセージ内では、ユーザー名とパスワードはBASE64エンコード文字列としてエンコードされます。
ユーザー認可では、特定のサーバー・リソース(ファイルやディレクトリなど)に関連付けられているアクセス制御リストに照らして、認証済ユーザーがチェックされます。ユーザー認可を構成するには、通常は仮想ホスト・コンテナ内にあるhttpd.conf
ファイルにrequire
ディレクティブを指定します。ユーザー認可は、一般に、ユーザー認証と組み合せて使用されます。サーバーはユーザーの名前とパスワードを認証した後、リクエストされたサーバー・リソースに関連付けられているアクセス制御リストとそのユーザーを比較します。Oracle HTTP Serverにより、リスト上にユーザーまたはユーザー・グループが見つかると、そのユーザーがリソースを使用できるようになります。
ユーザー認証はユーザー名とパスワードに基づきますが、この2つは既知のユーザーおよびパスワードのリストに照らしてチェックされます。このユーザー名とパスワードのペアは、テキスト・ファイル、データベースまたはディレクトリ・サービスなど様々な形で格納できます。次に、構成ディレクティブがhttpd.conf
ファイルで使用され、サーバー上にこのタイプのユーザー認証を構成します。mod_auth
では、Basic認証の設定にAuthUserFile
ディレクティブを使用します。これは、ファイルのみをサポートします。
どの認証方法の場合にも、表7-1に示される構成ディレクティブを組み合せて使用する必要があります。
mod_osso
により、Oracle HTTP Serverでシングル・サインオンがオンになります。mod_osso
では、受信リクエストを検査してリクエストされたリソースが保護されているかどうかを判断し、保護されている場合はユーザー用のOracle HTTP Server Cookieを取得します。
Oracle HTTP Serverは、mod_osso
を使用して、シングル・サインオン(SSO)パートナ・アプリケーションになります。このアプリケーションは、ユーザーの認証とユーザー識別情報の取得にOracle Single Sign-Onを使用し、ユーザー識別情報をApacheヘッダー変数としてWebアプリケーションに提供することができます。
Webアプリケーションは、mod_osso
を使用してSSO認証が必要なURLを登録できます。Oracle HTTP ServerがURLリクエストを受信すると、mod_osso
はSSO認証の必要なリクエストを検出し、このリクエストをSSOサーバーにリダイレクトします。SSOサーバーがユーザーを認証した後、サーバーはユーザーの認証識別情報をセキュリティで保護されたトークンまたはCookieに入れてmod_osso
に返します。mod_osso
はCookieからユーザーの識別情報を取り出し、Oracle HTTP Serverインスタンス内で実行中のアプリケーションにユーザーの識別情報を伝播します。mod_osso
は、CGIで実行中のアプリケーションとOC4Jで実行中のアプリケーションにユーザーの識別情報を伝播することができ、また、静的ファイルにアクセスするユーザーを認証することもできます。
mod_ossl
はOracle HTTP Serverへのプラグインで、サーバーがSSLを使用できるようにします。Oracle HTTP Server製品では、mod_ssl
がmod_ossl
に置き換わっています。mod_ssl
はサポートされていません。
ポート・トンネリングを使用すると、Oracle HTTP ServerとOC4J間のすべての通信を1つまたは少数のポート上で行えます。以前は、Oracle HTTP Serverと複数のOC4Jインスタンス間の通信を処理するには、ファイアウォール構成に多数のポートのポート情報を含める必要がありました。
ポート・トンネリングを構成するには、次の3つのタスクを実行します。
中間層(スタンドアロンのOracle HTTP Server 2.0ではない)に対して次の手順を実行し、1つ以上のiaspt
デーモンを起動します。
iaspt
のopmn.xml
エントリがあります。opmn.xml
を編集し、status="disable"
をstatus="enable"
に変更して、iaspt
を有効化します。
iaspt
デーモンで使用されるTCP/IPポートを変え、numprocsを変更してiaspt
デーモン・プロセスの数を変えることができます。 次に、iaspt
デーモンの完全な構成例を示します。このコンポーネントとともに使用できるすべての構成要素または属性が含まれています。
<module path="/ORACLE_HOME/opmn/lib/libopmniaspt"> <module-id id="IASPT" /> </module> <ias-component id="IASPT" status="enabled" id-matching="false"> <process-type id="IASPT" module-id="IASPT"> <port id="ajp" range="6701-6703"/> <process-set id="IASPT" restart-on-death="true" numprocs="3"/> </process-type> </ias-component>
opmnctl reload
中間層(スタンドアロンのOracle HTTP Server 2.0ではない)に対して次の手順を実行し、iaspt
デーモンが使用するSSLウォレットを指定するためのiaspt.conf
の構成を行います。
mod_oc4j
とiaspt
間の通信は、必ず暗号化されます。そのため、SSLウォレット・ファイルはiaspt
デーモン用に構成する必要があります。デフォルトでは、このウォレットはOracle HTTP Serverウォレットと同じです。このデフォルトは、iaspt.conf
の次の値を編集すると変更できます。
wallet-file=<path to wallet file> wallet-password=<password>
iaspt
デーモンを起動します。
opmnctl startall
スタンドアロンのOracle HTTP Server 2.0(中間層ではない)に対して次の手順を実行し、iaspt
を使用してリクエストをルーティングするためのmod_oc4j.conf
の構成を行います。
mod_oc4j.conf
に追加して、ポート・トンネリングを有効にします。
Oc4jiASPTActive on
mod_oc4j.conf
に追加して、SSLウォレットおよびウォレット・パスワードをmod_oc4j.conf
に指定します。
Oc4jiASPTWalletFile <path to wallet file> Oc4jiASPTWalletPassword <password of wallet>
このウォレットは、Oracle HTTP Serverまたはiaspt
(あるいはその両方)で使用されるものと同じでもかまいません。
関連資料
|
iaspt
デーモンのホストおよびポート・アドレスを指定します。たとえば、次の行をmod_oc4j.conf
に追加します。
Oc4jiASPTProcess myhost.us.oracle.com:6701
保持するiaspt
デーモンと同じ数のOc4jiASPTProcess
の行を追加できます。ホストおよびポート・アドレスは、構成されたiaspt
デーモンのものと一致する必要があります。たとえば、「タスク1: opmn.xmlの構成」の手順2の例で構成した3つのiaspt
デーモンにリクエストをルーティングするには、次の3行を追加します。
Oc4jiASPTProcess myhost.us.oracle.com:6701 Oc4jiASPTProcess myhost.us.oracle.com:6702 Oc4jiASPTProcess myhost.us.oracle.com:6703
この項では、iaspt
とOC4J間でのSSLの構成について説明します。
デフォルトでは、iaspt
デーモンとOC4Jプロセスは、暗号化されていないデータを使用して通信を行います。これらのプロセス間のSSL通信を構成するには、次の手順を実行します。
iaspt.conf
で、destination-ssl
の値をfalse
からtrue
に変更します。
この項では、次の構成ファイルとそのパラメータについて説明します。
Oracle Application Server内でOPMNにより管理されるプロセスを記述します。
ポート・トンネリングの一環として、起動されるiaspt
デーモン・プロセスを記述するエントリがOPMNに存在する必要があります。このエントリには次の記述を含めます。
デフォルトのOracle Application Serverでは、iaspt
コンポーネントはopmn.xml
に含まれていますが、無効化されています。
Oracle HTTP Serverによりmod_oc4j
を構成します。
ポート・トンネリング用に、次を指定したディレクティブを追加する必要があります。
デフォルトでは、mod_oc4j
はOC4Jと直接通信します。ポート・トンネリング・プロセスの場合、mod_oc4j
はiaspt
デーモンを介してOC4Jに通信する必要があります。
次のディレクティブを使用して、mod_oc4j
をiaspt
デーモンに接続します。
mod_oc4j
がリクエストをルーティングするときにポート・トンネリングを考慮する必要があるかどうかを示します。Oc4jEnableSSLが「On」に構成されている場合、このディレクティブは「On」に構成しないでください。ポート・トンネリング・プロセスを有効化するには、このディレクティブを「On」に設定します。
カテゴリ | 値 |
---|---|
パラメータ名 |
|
パラメータ・タイプ |
文字列 |
有効値 |
|
デフォルト値 |
|
ポート・トンネリング・プロセスのリスニング・ホストおよびポートを記述します。mod_oc4j.conf
ファイル内で、複数のポート・トンネリング・プロセス用にこのディレクティブの複数のインスタンスを指定できます。
このディレクティブの構文は、host:port
です。host値は、iaspt
デーモンが実行されているマシンのホスト名と一致する必要があります。port値は、そのiaspt
のopmn.xml
に構成されているポートと一致する必要があります。hostには、標準のホスト名とIPアドレスの両方を使用できます。
カテゴリ | 値 |
---|---|
パラメータ名 |
|
パラメータ・タイプ |
文字列 |
有効値 |
使用可能な |
デフォルト値 |
該当なし |
構文 |
例: |
mod_oc4j
はiaspt
デーモンと通信する際にSSLを使用する必要があります。次に、SSLの有効化に使用されるディレクティブを示します。
iaspt
デーモンとのSSL通信に使用されるSSL証明書を含む、Oracleウォレット・ファイルの位置を指定します。
カテゴリ | 値 |
---|---|
パラメータ名 |
|
パラメータ・タイプ |
文字列 |
有効値 |
iasptデーモンとのSSL接続確立時に使用されるSSL証明書を含むウォレット・ファイルへのパス |
デフォルト値 |
該当なし |
構文 |
例: |
ウォレット・ファイルのオープン時に認証に使用される不明瞭化されたパスワードの値を指定します。この値は、Oracle Wallet Managerに含まれているユーティリティを使用して取得されます。
カテゴリ | 値 |
---|---|
パラメータ名 |
|
パラメータ・タイプ |
文字列 |
有効値 |
Oc4jiASPTWalletFileにより指定されたウォレット・ファイルのオープン時に認証に使用されるパスワード |
デフォルト値 |
該当なし |
ポート・トンネリングを構成します。
このファイルは、次の情報を示します。
iaspt
デーモンがリスニングするポート(オプション)。このポートは、iaspt.conf
内に指定するか、ポートの範囲を指定してopmn.xml
から渡すことができます。これにより、複数のポート・トンネリング・プロセスで同じiaspt.conf
ファイルを使用できます。
iaspt.conf
ファイルには、一連の名前/値ペアが含まれます。次に、受け入れられるパラメータの名前を示します。
ピアとのSSL通信に使用するSSL証明書を含む、Oracleウォレット・ファイルの位置を指定します。
カテゴリ | 値 |
---|---|
パラメータ名 |
|
パラメータ・タイプ |
文字列 |
有効値 |
他のプロセスとのSSL接続確立時に使用されるSSL証明書を含むウォレット・ファイルへのパス |
デフォルト値 |
該当なし |
構文 |
例: |
ウォレット・ファイルのオープン時に認証に使用されるパスワードの値を指定します。この値は、Oracle Wallet Managerに含まれているユーティリティを使用して取得されます。
カテゴリ | 値 |
---|---|
パラメータ名 |
|
パラメータ・タイプ |
文字列 |
有効値 |
wallet-fileにより指定されたウォレット・ファイルのオープン時に認証に使用されるパスワード |
デフォルト値 |
該当なし |
iaspt
デーモンのログ・メッセージが書き込まれるログ・ファイルのパスを指定します。
カテゴリ | 値 |
---|---|
パラメータ名 |
|
パラメータ・タイプ |
文字列 |
有効値 |
|
デフォルト値 |
該当なし |
構文 |
例: |
ログ・レベルを指定します。9が最高で、0はロギングしないことを意味します。
カテゴリ | 値 |
---|---|
パラメータ名 |
|
パラメータ・タイプ |
整数 |
有効値 |
整数(0〜9) |
デフォルト値 |
3 |
iaspt
デーモンが接続を受け入れるポートの値を指定します。このパラメータはオプションです。
カテゴリ | 値 |
---|---|
パラメータ名 |
|
パラメータ・タイプ |
整数 |
有効値 |
有効なTCP/IPポート値 |
構文 |
例: 9898 |
デフォルト値 |
該当なし |
この項では、Oracle HTTP ServerによるOracle Identity Managementインフラストラクチャの使用方法を説明します。
Oracle Identity Managementは、分散セキュリティのためにOracle Application Serverが依存する統合インフラストラクチャです。これは、Oracle Internet Directory、Oracle Directory Integration and Provisioning、Delegated Administration Services、Oracle Single Sign-OnおよびOracle Application Server Certificate Authorityで構成されています。
Oracle Application Serverでは、Oracle Single Sign-Onにより、Webベース・アプリケーションに対するシングル・サインオン(SSO)をサポートしています。ユーザーはOracle Single Sign-Onを使用してOracle Application Serverにログインし、認可されているアプリケーションにアクセスできます。アプリケーションごとにユーザー名とパスワードを再入力する必要はありません。これは、ユーザー情報を格納するOracle Internet Directoryと完全に統合されています。Oracle Internet Directoryを使用して、LDAPベースのユーザーおよびパスワードの管理をサポートします。
Oracle HTTP Serverモジュールのmod_osso
を使用すると、Oracle Application Server全体でOracle Single Sign-Onを透過的に使用できます。Oracle HTTP Serverは、mod_osso
を使用して、SSOパートナ・アプリケーションになります。このアプリケーションは、ユーザーの認証とユーザー識別情報の取得にSSOを使用し、ユーザー識別情報をApacheヘッダー変数としてWebアプリケーションに提供することができます。
|
Copyright © 2007 Oracle Corporation. All Rights Reserved. |
|