この章では、インストールされたバージョンのOracle HTTP Serverを操作する際に実行が求められる可能性のある共通タスクについて説明します。次の項で構成されます。
WebLogic Serverドメインの一部であるインスタンスの場合、Fusion Middleware Controlおよび管理インフラストラクチャはOracle HTTP Server構成を管理します。ステージング・ディレクトリ内での構成に対する直接編集は、Fusion Middleware Controlでの構成の変更などの後続の管理操作の後で上書きされる可能性があります。このようなインスタンスでは、直接編集は管理サーバーが停止時にのみ実行できます。管理サーバーがその後に起動されると、(起動によって)手動編集の結果が、管理対象インスタンスのノード上のランタイム・ディレクトリにレプリケートされます。
スタンドアロン・インスタンスの場合、構成はいつでもステージング・ディレクトリ内で直接編集できます。起動、再起動または停止の操作時に、構成は有効化されます。WebLogicドメインでは、ステージング・ディレクトリにあるファイルを修正する時には、必ず先に管理サーバーを停止する必要があります。
Fusion Middleware Controlを使用するか、Oracle HTTP Server構成ファイルを直接編集することによってのみ、Oracle HTTP Serverを設定可能です。WLSTコマンドを使用してサーバー・プロパティを指定することはできません。
Fusion Middleware Controlを使用してサーバー・プロパティを指定するには、次の手順を実行します。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「サーバー構成」を選択します。「サーバー構成」ページが表示されます。
「ドキュメント・ルート」フィールドに、Webサイトから表示できるメイン・ドキュメント・ツリーを構成するドキュメント・ルート・ディレクトリを入力します。
「管理者の電子メール」フィールドに、サーバーがクライアントに送信するエラー・メッセージに挿入する電子メール・アドレスを入力します。
「ディレクトリの索引」フィールドにディレクトリの索引を入力します。これは、クライアントがWebサイトに最初にアクセスしたときに表示されるメイン・ページ(indexページ)です。
オプション: 「オペレーティング・システム・ユーザー」フィールドにユーザー名を入力します。
通常、このフィールドは空白です。これは、Oracle HTTP Serverをインストールし起動したユーザーに設定できます。
オプション: 「オペレーティング・システム・グループ」フィールドにグループ名を入力します。
通常、このフィールドは空白です。これは、Oracle HTTP Serverをインストールし起動したユーザーのグループに設定できます。
「モジュール」リージョンは、モジュールを有効化または無効化するために使用します。有効化または無効化できるモジュールは、mod_perl、mod_fcgiおよびmod_plsqlの3つです。
mod_perlモジュールの構成手順は、「mod_perlの構成」を参照してください。
必要な場合は、「別名」表に別名を作成します。別名は、指定したディレクトリにマップされます。たとえば、あるグループでコンテンツ・ページの特定のセットを使用するため、そのコンテンツ・ページを含むディレクトリに別名を作成できます。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
4.3.4項「Oracle HTTP Serverインスタンスの再起動」の説明に従って、Oracle HTTP Serverを再起動します。
サーバー・プロパティが保存され、「サーバー構成」ページに表示されます。
httpd.confファイルを使用してサーバー・プロパティを指定するには、次の手順を実行します。
注意: .conf ファイルを編集しようとする前に、構成ファイル・ディレクトリのレイアウト、ファイル編集のメカニズムおよびファイル自体の詳細に精通しておく必要があります。この情報については、1.6項「構成ファイルの理解」を参照してください。 |
テキスト・エディタまたはFusion Middleware Controlの「サーバーの詳細構成」ページを使用して、httpd.conf
ファイルを開きます。(1.6.3項「構成ファイルの変更」を参照してください)
ファイルのDocumentRoot
セクションに、Webサイトのメイン・コンテンツを格納するディレクトリを入力します。この構文の例を次に示します。
DocumentRoot "${ORACLE_INSTANCE}/config/fmwconfig/components/${COMPONENT_TYPE}/instances/${COMPONENT_NAME}/htdocs"
ファイルのServerAdminセクションに、管理者の電子メール・アドレスを入力します。これは、クライアント・ページに表示される電子メール・アドレスです。この構文の例を次に示します。
ServerAdmin WebMaster@example.com
ファイルのDirectoryIndexセクションに、ディレクトリの索引を入力します。これは、クライアントがWebサイトに最初にアクセスしたときに表示されるメイン・ページ(indexページ)です。この構文の例を次に示します。
DirectoryIndex index.html index.html.var
必要に応じて別名を作成します。別名は、指定したディレクトリにマップされます。たとえば、アイコンの特定のセットを使用するため、Webページ用のアイコンを含むディレクトリに別名を作成できます。この構文の例を次に示します。
Alias /icons/ "${PRODUCT_HOME}/icons/" <Directory "${PRODUCT_HOME}/icons"> AllowOverride None Order allow,deny Allow from all </Directory>
ファイルを保存します。
4.3.4項「Oracle HTTP Serverインスタンスの再起動」の説明に従って、Oracle HTTP Serverを再起動します。
この項では、より一般的なOracle HTTP Serverインスタンス構成手順についていくつか説明します。この項には初期のシステム構成情報は含まれていませんので、それらの構成命令の詳細は、『Oracle HTTP Serverのインストールと構成』を参照してください。
この項の内容は次のとおりです。
注意: Oracle HTTP Server構成を管理するFusion Middleware Controlおよびその他のOracleソフトウェアは、同等の異なる形式で構成ファイルを保存する可能性があります。ソフトウェアを使用して構成を変更した後に、複数の構成ファイルがリライトされる可能性があります。 |
Secure Sockets Layer (SSL)は、インターネット経由でメッセージを安全に送信することを目的に設計された、暗号化された通信プロトコルです。Oracle HTTP Server間のアプリケーション層およびTCP/IP層にあって、クライアントによってセキュアな接続が確立された場合に暗号化と復号化を透過的に行います。
SSLの一般的な用途の1つは、ブラウザとWebサーバー間のWeb HTTP通信を保護することです。この場合、保護されていないHTTPの使用は排除されません。保護されたバージョンは、単純にHTTP over SSL (HTTPS)と呼ばれます。HTTPSではURLスキームとしてhttp://
ではなくhttps
://を使用するという点が異なります。Oracle HTTP Serverのデフォルト通信ポートは4443です。Oracle HTTP Serverでは、セキュリティ上の理由から443標準https://
特権ポートを使用しません。特権ポートでOracle HTTP Serverを実行する方法の詳細は、4.3.2.4項「特権ポートでのOracle HTTP Serverインスタンスの起動(UNIXのみ)」を参照してください。
デフォルトでは、SSLリスニング・ポートはインストール中にデフォルトのウォレットを使用して構成されて有効化されます。ウォレットには、証明書リクエスト、証明書および秘密鍵など、資格証明が格納されます。
Oracle HTTP Serverとともに自動的にインストールされるデフォルトのウォレットは、テスト目的のみに使用されるものです。本番サーバーに対して実際のウォレットを作成する必要があります。デフォルトのウォレットは、DOMAIN_HOME/config/fmwconfig/components/OHS/instances/componentName/keystores/defaultディレクトリにあります。新しいウォレットをこの場所に配置することも、実際のウォレットの場所を示すようにDOMAIN_HOME
/config/fmwconfig/components/OHS/instances/componentName/ssl.confのSSLWalletディレクティブを変更することもできます。
変更を有効とするには、4.3.4項「Oracle HTTP Serverインスタンスの再起動」の説明に従って、Oracle HTTP Serverを再起動します。
Fusion Middleware ControlでウォレットとSSLを構成する方法の詳細は、『Oracle Fusion Middlewareの管理』.の「Oracle HTTP Server仮想ホストに対するSSLの有効化」を参照してください。
次の各項では、スタンドアロン・モードでOracle HTTP ServerのSSLを有効化して構成する方法について説明します。これらの手順では、サーバーでSSLを使用できるようにするOracle HTTP Serverに対するmod_osslプラグインを利用します。
デフォルトでは、Oracle HTTP ServerをインストールするときにSSLが有効化されます。次のタスクを実行して、SSLを変更および構成します。
SSL用にOracle HTTP Serverを構成するには、サーバーの証明書を含むウォレットが必要です。ウォレットには、証明書リクエスト、証明書および秘密鍵など、資格証明が格納されます。
Oracle HTTP Serverとともに自動的にインストールされるデフォルトのウォレットは、テスト目的のみに使用されるものです。本番サーバーに対して実際のウォレットを作成する必要があります。デフォルトのウォレットは、$ORACLE_INSTANCE
/config/fmwconfig/components/
$COMPONENT_TYPE
/instances/
$COMPONENT_NAME
/keystores/default
にあります。新しいウォレットをこの場所に配置することも、実際のウォレットの場所を示すように$ORACLE_INSTANCE
/config/fmwconfig/components/
$COMPONENT_TYPE
/instances/
$COMPONENT_NAME
/ssl.conf
(インストール前の場所)のSSLWallet
ディレクティブを変更することもできます。
関連項目: ウォレットを作成する手順については、Oracle Fusion Middlewareの管理のorapkiに関する項を参照してください。次の作業を実行することが重要です。証明書リクエストを生成します。共通名には、構成しているサイトの名前または別名を指定します。このauto_login_only機能を必ず有効にしてください。 |
オプションで、mod_ossl
ディレクティブを使用して構成を詳細にカスタマイズすることができます。
関連項目:
|
注意: 構成時にインストールされたファイルには、すべての必要なSSL構成ディレクティブおよびSSL用のデフォルト設定が含まれています。 |
SSL構成には、最低でも次のディレクティブが含まれている必要があります。
LoadModule ossl_module "${PRODUCT_HOME}/modules/mod_ossl.so" Listen 4443 ServerName www.testohs.com SSLEngine on # SSL Protocol Support: # List the supported protocols. SSLProtocol nzos_Version_1_2 nzos_Version_1_1 nzos_Version_1_0 # SSL Cipher Suite: # List the ciphers that the client is permitted to negotiate. SSLCipherSuite SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_RSA_WITH_DES_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA SSLWallet "${ORACLE_INSTANCE}/config/fmwconfig/components/${COMPONENT_TYPE}/instances/${COMPONENT_NAME}/keystores/default" </VirtualHost>To enable client authentication, do the following:
HTTPS接続のためにクライアント側で適切なクライアント証明書を使用します。クライアント証明書の取得および使用方法については、クライアントのドキュメントを参照してください。クライアント証明書がサーバー・ウォレットによって信頼されていることを確認してください。
関連項目: 信頼できる証明書をウォレットにインポートする手順については、Oracle Fusion Middlewareの管理ガイドのWLSTを使用した証明書または信頼できる証明書のインポートに関する項を参照してください。 |
クライアントでSSLVerifyClient
を使用してそのクライアント証明書を強制的に検証し、サーバーへのアクセスを許可することができます。このシナリオは、サーバー認証局(CA)から提供されたクライアント証明書を持つすべてのクライアントに有効です。サーバーは追加の権限のために、クライアントの提供された証明書をそのCAに対して検証できます。
# require a client certificate which has to be directly # signed by our CA certificate SSLVerifyClient require SSLWallet "${ORACLE_INSTANCE}/config/fmwconfig/components/${COMPONENT_TYPE}/instances/${COMPONENT_NAME}/keystores/default"
クライアントで特定のURLに対して証明書を使用して強制的に認証するには、mod_osslのディレクトリ単位の再構成機能を使用できます。この場合、SSLVerifyClient
はLocation
ブロックに表示されます。
SSLVerifyClient none SSLWallet "${ORACLE_INSTANCE}/config/fmwconfig/components/${COMPONENT_TYPE}/instances/${COMPONENT_NAME}/keystores/default" <Location /secure/area> SSLVerifyClient require </Location>
これを実行するには、クライアント証明書の一部が、必要としているものに一致していることを確認します。通常これは、識別名(DN)のすべてまたは一部をチェックして、特定の既知の文字列が含まれているかどうかを確認することを意味します。これを実行する方法は2つあり、mod_auth_basic
またはSSLRequire
を使用します。
mod_auth_basic
を使用する方法は一般的に、証明書が完全に任意である場合、またはそれらの証明書のDNに共通のフィールド(通常、組織など)がない場合に必要になります。この場合、許可されたすべてのクライアントを含むパスワード・データベースを構築する必要があります。たとえば、次のようになります。
SSLVerifyClient none <Directory /access/required> SSLVerifyClient require SSLOptions +FakeBasicAuth SSLRequireSSL AuthName "Oracle Auth" AuthType Basic AuthBasicProvider file AuthUserFile httpd.passwd Require valid-user </Directory>
この例で使用されているパスワードは、DESで暗号化された文字列password
です。このディレクティブの詳細は、F.3.10項「SSLOptions」を参照してください。この項では、mod_ossl
モジュールのSSLOptions
ディレクティブについて説明しています。
httpd.passwd Subject: OU=Class 3 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US Subject: CN=GTE CyberTrust Global Root,OU=GTE CyberTrust Solutions\, Inc.,O=GTE Corporation,C=US Subject: CN=localhost,OU=FOR TESTING ONLY,O=FOR TESTING ONLY Subject: OU=Class 2 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US Subject: OU=Class 1 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
クライアントがすべてDNにエンコードされる共通階層の一部である場合、SSLRequire
を使用してそれらをより簡単に照合することができます。たとえば、次のようになります。
SSLVerifyClient none SSLWallet "${ORACLE_INSTANCE}/config/fmwconfig/components/${COMPONENT_TYPE}/instances/${COMPONENT_NAME}/keystores/default" <Directory /access/required> SSLVerifyClient require SSLOptions +FakeBasicAuth SSLRequireSSL SSLRequire %{SSL_CLIENT_S_DN_O} eq "VeriSign\, Inc." \ and %{SSL_CLIENT_S_DN_OU} in {"Class", "Public", "Primary"} </Directory>
次の例では、イントラネット上のクライアントが範囲192.168.1.0/24内のIPを持ち、またインターネット・アクセスを許可するイントラネットWebサイトの一部が/access/requiredであると仮定しています。この構成は、HTTPS仮想ホストの外側に残す必要があります。これにより、HTTPSとHTTPの両方に適用されます。
SSLWallet "$ORACLE_INSTANCE/config/fmwconfig/components/$COMPONENT_TYPE/instances/$COMPONENT_NAME/keystores/default" <Directory /access/required> # Outside the subarea only Intranet access is granted Require ip 192.168.1.0/24 </Directory> <Directory /access/required> # Inside the subarea any Intranet access is allowed # but from the Internet only HTTPS + Strong-Cipher + Password # or the alternative HTTPS + Strong-Cipher + Client-Certificate # If HTTPS is used, make sure a strong cipher is used. # Additionally allow client certs as alternative to basic auth. SSLVerifyClient optional SSLOptions +FakeBasicAuth +StrictRequire SSLRequire %{SSL_CIPHER_USEKEYSIZE}>= 128 # Force clients from the Internet to use HTTPS RewriteEngine on RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.[0-9]+$ RewriteCond %{HTTPS} !=on RewriteRule . - [F] # Allow Network Access and/or Basic Auth Satisfy any # Network Access Control Require ip 192.168.1.0/24 # HTTP Basic Authentication AuthType basic AuthName "Protected Intranet Area" AuthBasicProvider file AuthUserFile htpasswd Require valid-user </Directory>
Oracle HTTP ServerとOracle WebLogic Serverとの間のSSLを有効化するには、Oracle WebLogic Serverプロキシ・プラグインを使用します。このプラグインを使用すると、SSLライブラリを構成して、一方向と双方向のSSL通信を構成できます。詳細は、Oracle WebLogic Serverプロキシ・プラグイン12.1.3の使用のプラグインとSSLの併用に関する項およびWeb Serverプラグインのパラメータに関する項を参照してください。
Oracle HTTP Serverでは、Multipurpose Internet Mail Extension (MIME)設定を使用してファイル・タイプ、エンコーディングおよび言語の解析を行います。Oracle HTTP ServerのMIME設定は、Fusion Middleware Controlでのみ指定できます。WLSTコマンドを使用してMIME設定を指定することはできません。
「MIME構成」ページでは、次のタスクを実行できます。
MIMEタイプにより、指定されたコンテンツ・タイプに特定のファイル拡張子がマップされます。MIMEタイプは、拡張子を含むファイル名に使用されます。
Fusion Middleware Controlを使用してMIMEタイプを構成するには、次の手順を実行します。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「MIME構成」を選択します。「MIME構成」ページが表示されます。
「MIME構成」リージョンの「行の追加」をクリックします。新規の空白行がリストに追加されます。
MIMEタイプを入力します。
ファイル拡張子を入力します。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
4.3.4項「Oracle HTTP Serverインスタンスの再起動」の説明に従って、Oracle HTTP Serverを再起動します。
MIME構成が保存され、「MIME構成」ページに表示されます。
MIMEエンコーディングにより、Oracle HTTP Serverでは、ファイル拡張子に基づいてファイル・タイプを判別できます。MIMEエンコーディングは、追加および削除できます。エンコーディング・ディレクティブにより、指定のエンコーディング・タイプにファイル拡張子をマップします。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「MIME構成」を選択します。「MIME構成」ページが表示されます。
「MIMEエンコーディング」の横にあるプラス記号(+)をクリックして「MIMEエンコーディング」リージョンを開きます。
「MIMEエンコーディング」リージョンの「行の追加」をクリックします。新規の空白行がリストに追加されます。
MIMEエンコーディング(x-gzip
など)を入力します。
ファイル拡張子(.gxなど)を入力します。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
4.3.4項「Oracle HTTP Serverインスタンスの再起動」の説明に従って、Oracle HTTP Serverを再起動します。
MIME言語設定により、特定の言語にファイル拡張子がマップされます。このディレクティブは、一般的にコンテンツ・ネゴシエーションに使用されます(クライアントにより設定されたプリファレンスに対する一致度が最も高いドキュメントがOracle HTTP Serverから返されます)。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「MIME構成」を選択します。「MIME構成」ページが表示されます。
「MIME言語」の横にあるプラス記号(+)をクリックして「MIME言語」リージョンを開きます。
「MIME言語」リージョンの「行の追加」をクリックします。新規の空白行がリストに追加されます。
MIME言語(en-USなど)を入力します。
ファイル拡張子(en-usなど)を入力します。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
4.3.4項「Oracle HTTP Serverインスタンスの再起動」の説明に従って、Oracle HTTP Serverを再起動します。
mod_perlモジュールは、Oracle HTTP ServerにPerlインタプリタを埋め込みます。これにより、起動時のオーバーヘッドが排除され、モジュールをPerlで記述できます。デフォルトでは、モジュールは無効です。
この項では次の手順について説明します。
Fusion Middleware Controlを使用してmod_perlモジュールを有効化するには、次の手順を実行します。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューから「mod_perl構成」を選択します。「mod_perl構成」ページが表示されます。
注意: mod_perlが有効化されていないと、「サーバー構成」ページにリダイレクトされます。mod_perlを選択して「適用」をクリックし、mod_perlを有効化します。確認ページが表示されたら、Oracle HTTP Serverを再起動します。これで、「mod_perl構成」ページに戻ります。 |
「スイッチ」フィールドにスイッチ情報を入力します。
「環境」フィールドに、スクリプトに渡す環境変数を入力します。
「必須」フィールドに必須スクリプト名を入力します。
「行の追加」をクリックして新規行を作成します。
「Perlの場所」表内の場所に対してmod_perlディレクティブを構成します。この場所により、リクエストのURIがこの場所に一致したときにサーバーが準拠するルールが割り当てられます。
「ロケーション」フィールドに、PerlスクリプトのベースURIを入力します。mod_cgiスクリプトに/cgi-binを使用することが慣習的に広く受け入れられているように、mod_perlの下で稼働するPerlスクリプトのベースURIとしては/perlが慣習的に使用されています。
「オプション」フィールドにオプションを入力します。PerlOptions
ディレクティブは、使用するPerlインタプリタ・プールのクラスに対する制御を提供することにより、ファイングレイン構成を提供します。オプションを有効にするには、そのオプションの前にプラス記号(+)を付けます。無効化するには、前にマイナス記号(-)を付けます。
ヘッダーを送信する場合、「ヘッダーの送信」チェック・ボックスを選択します。PerlSendHeader
ディレクティブは、mod_perl 1.0の後方互換性のために使用します。これを有効化すると、スクリプトが起動されるたびにサーバーがHTTPヘッダーをブラウザに送信します。Non-Parsed-Headers (NPH)スクリプトの場合は、このオプションを無効にしてください。
「環境」フィールドに環境を入力します。PerlSetEnv
ディレクティブを使用すると、システム環境変数を指定してmod_perlハンドラに渡すことができます。
「レスポンス・ハンドラ」フィールドにレスポンス・ハンドラを入力します。PerlResponseHandler
ディレクティブは、ジョブを処理するコールバックをmod_perlに指示します。
「認証ハンドラ」フィールドに認証ハンドラを入力します。PerlAuthenHandlerディレクティブは、ユーザーの識別資格証明を確認するためのハンドラを設定する場合に使用します。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
4.3.4項「Oracle HTTP Serverインスタンスの再起動」の説明に従って、Oracle HTTP Serverを再起動します。
mod_perlモジュール構成が保存され、「mod_perl構成」ページに表示されます。
注意: Fusion Middleware Controlを使用せずにmod_perl構成を手動で編集する場合は、すべてのディレクティブをmod_perl.confファイルの<IfModule mod_perl.c> ブロック内に定義する必要があります。このブロックの外で定義されたmod_perl関連ディレクティブは、無視される可能性があります。 |
スタンドアロン・ドメインでmod_perlを有効化するには、この手順を使用します。
ステージング・エリア($DOMAIN_HOME/config/fmwconfig/components/OHS/ohs1
)において、mod_perl.confをdisabled
ディレクトリからmoduleconf
ディレクトリに手動で移動します。
start()
、softRestart()
またはshutdown()
操作の実行時に、ステージング・エリアからランタイム・エリア($DOMAIN_HOME/config/fmwconfig/components/OHS/instances/ohs1
など)にコピーして構成の変更が行われます。
バウンスされると、ohs1インスタンスは変更を受信せずにmod_perlでの動作を行います。
モジュールを無効化するには、前述と同じ手順に従いますが、mod_perlはmoduleconf
ディレクトリからdisabled
ディレクトリに移動させます。
Oracle WebLogic Serverプロキシ・プラグイン(mod_wl_ohs)を構成するには、Fusion Middleware Controlを使用するか、またはmod_wl_ohs.conf構成ファイルを手動で編集します。
リクエストをOracle HTTP ServerからOracle WebLogic ServerにプロキシできるようにOracle WebLogic Serverプロキシ・プラグインを構成する際の前提条件と手順の詳細は、『Oracle WebLogic Serverプロキシ・プラグイン12.1.3の使用』のOracle HTTP Serverのプラグインの構成に関する項を参照してください。
デフォルトでは、httpd.confファイルにより、サーバーはドキュメントやサンプル・スクリプトなどの追加のコンテンツにアクセスできます。このアクセスでは低いレベルのセキュリティ・リスクを伴う場合があります。
ユースケースに合せて使用環境でのこの追加コンテンツを調整することができます。ファイルにアクセスするには、1.6.3項「構成ファイルの変更」の手順に従ってください。
cgi-bin
ディレクトリのコンテンツを調査します。不要なコードをhttpd.confファイルから削除したり、固有のCGIスクリプト・ディレクトリを指す次のDirectoryディレクティブを変更することができます。
... # # "${ORACLE_INSTANCE}/config/fmwconfig/components/${COMPONENT_TYPE}/instances/${COMPONENT_NAME}/cgi-bin" should be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # <Directory "${ORACLE_INSTANCE}/config/fmwconfig/components/${COMPONENT_TYPE}/instances/${COMPONENT_NAME}/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> ...
ユースケースに応じたhttpd.confファイルのfancy indexingに関する次のセクションを編集します。
... # # IndexOptions: Controls the appearance of server-generated directory # listings. # IndexOptions FancyIndexing HTMLTable VersionSort # We include the /icons/ alias for FancyIndexed directory listings. If # you do not use FancyIndexing, you may comment this out. # Alias /icons/ "${PRODUCT_HOME}/icons/" <Directory "${PRODUCT_HOME}/icons"> AllowOverride None Order allow,deny Allow from all </Directory> # # AddIcon* directives tell the server which icon to show for different # files or filename extensions. These are only displayed for # FancyIndexed directories. # AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip AddIconByType (TXT,/icons/text.gif) text/* AddIconByType (IMG,/icons/image2.gif) image/* AddIconByType (SND,/icons/sound2.gif) audio/* AddIconByType (VID,/icons/movie.gif) video/* AddIcon /icons/binary.gif .bin .exe AddIcon /icons/binhex.gif .hqx AddIcon /icons/tar.gif .tar AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip AddIcon /icons/a.gif .ps .ai .eps AddIcon /icons/layout.gif .html .shtml .htm .pdf AddIcon /icons/text.gif .txt AddIcon /icons/c.gif .c AddIcon /icons/p.gif .pl .py AddIcon /icons/f.gif .for AddIcon /icons/dvi.gif .dvi AddIcon /icons/uuencoded.gif .uu AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl AddIcon /icons/tex.gif .tex AddIcon /icons/bomb.gif core AddIcon /icons/back.gif .. AddIcon /icons/hand.right.gif README AddIcon /icons/folder.gif ^^DIRECTORY^^ AddIcon /icons/blank.gif ^^BLANKICON^^ # # DefaultIcon is which icon to show for files which do not have an icon # explicitly set. # DefaultIcon /icons/unknown.gif # # AddDescription allows you to place a short description after a file in # server-generated indexes. These are only displayed for FancyIndexed # directories. # Format: AddDescription "description" filename # #AddDescription "GZIP compressed document" .gz #AddDescription "tar archive" .tar #AddDescription "GZIP compressed tar archive" .tgz ... # # ReadmeName is the name of the README file the server will look for by # default, and append to directory listings. # # HeaderName is the name of a file which should be prepended to # directory indexes. ReadmeName README.html HeaderName HEADER.html # # IndexIgnore is a set of filenames which directory indexing should ignore # and not include in the listing. Shell-style wildcarding is permitted. # IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t ...
不要な場合、次のドキュメント構成セクションをhttpd.confファイルから削除できます。
... # # This should be changed to the ServerRoot/manual/. The alias provides # the manual, even if you choose to move your DocumentRoot. You may comment # this out if you do not care for the documentation. # AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|pt-br|ru|tr))?(/.*)?$ "${PRODUCT_HOME}/manual$1" <Directory "${PRODUCT_HOME}/manual"> AllowOverride None Order allow,deny Allow from all <Files *.html> SetHandler type-map </Files> # .tr is text/troff in mime.types! <Files *.html.tr.utf8> ForceType text/html </Files> SetEnvIf Request_URI ^/manual/(de|en|es|fr|ja|ko|pt-br|ru|tr)/ prefer-language=$1 RedirectMatch 301 ^/manual(?:/(de|en|es|fr|ja|ko|pt-br|ru|tr)){2,}(/.*)?$ /manual/$1$2 LanguagePriority en de es fr ja ko pt-br ru tr ForceLanguagePriority Prefer Fallback </Directory> ...
注意: このコマンドはUNIXとLinux専用であり、ソース・コード形式で提供されているモジュールに対してのみ使用する必要があります。バイナリ形式で提供されているモジュールのインストール手順に従ってください。apxsコマンドの詳細は、次のApache HTTP Serverのドキュメントを参照してください。 |
Apache拡張ツール(apxs)を使用して、Oracle HTTP Server用のApache HTTP Server拡張モジュールをビルドおよびインストールします。apxsは、モジュールをORACLE_HOME/ohs/modulesディレクトリにインストールし、このインストールから実行されるOracle HTTP Serverインスタンスがアクセスできるようにします。
注意: いったんなんらかのサードパーティ製モジュールの生成とロードが行われると、Oracle HTTP Serverサポート・ポリシーに記載されたサードパーティ条件に該当することになります。この手順を続ける前に、このポリシーをお読みください。詳細は、1.7項「Oracle HTTP Serverのサポート」を参照してください。 |
Oracle HTTP Serverで使用する場合に推奨されるapxsオプションを次に示します。
オプション | 用途 | コマンド例 |
---|---|---|
-c | モジュール・ソースのコンパイル |
$ORACLE_HOME/ohs/bin/apxs -c mod_example.c |
-i | ORACLE_HOMEへのモジュール・バイナリのインストール |
$ORACLE_HOME/ohs/bin/apxs -ci mod_example.c |
モジュール・バイナリがORACLE_HOMEにインストールされると、httpd.confファイルまたはその他の構成ファイルのLoadModule
ディレクティブを使用してモジュールがサーバー・プロセスにロードされます。次に例を示します。
LoadModule example_module "${ORACLE_HOME}/ohs/modules/mod_example.so"
このディレクティブは、モジュールをロードする必要があるすべてのインスタンスの構成で必須です。
-aまたは-Aオプションが指定されている場合、apxsはhttpd.confを編集してモジュールのLoadModuleディレクティブを追加します。WebLogic Serverドメインの一部であるOracle HTTP Serverインスタンスでは-a
および-A
オプションを使用しないでください。かわりに、1.6.3項「構成ファイルの変更」の説明に従って、Fusion Middleware Controlを使用して構成を更新します。
スタンドアロン・ドメインの一部であるOracle HTTP Serverインスタンスでは、apxsの起動前にCONFIG_FILE_PATH環境変数がインスタンスのステージング・ディレクトリに設定されている場合、-aまたは-Aオプションを使用できます。次に例を示します。
CONFIG_FILE_PATH=$ORACLE_HOME/user_projects/domains/base_domain/config/fmwconfig/components/OHS/ohs1 export CONFIG_FILE_PATH $ORACLE_HOME/ohs/bin/apxs -cia mod_example.c
デフォルトでは、apxsは、/usr/binにあるPerlインタプリタを使用します。apxsが製品のインストールを見つけることができない場合または/usr/bin/perlの使用時にその他の操作エラーが発生した場合は、次のようにapxsを起動することによってMiddlewareホーム内でPerlインタプリタを使用します。
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/ohs/bin/apxs -c mod_example.c
多くの場合、モジュールは正常に機能するためにLoadModule
以外のディレクティブも必要とします。モジュールがインストールされ、LoadModuleディレクティブを使用してロードされた後、その他の構成要件についてモジュールのドキュメントを参照してください。
Optionsメソッドにより、クライアントは、Webサーバーでサポートされるメソッドを確認できます。これが有効の場合、HTTPレスポンス・ヘッダーのAllow
行に出力されます。
たとえば、次のようなリクエストを送信するとします。
---- Request ------- OPTIONS / HTTP/1.0 Content-Length: 0 Accept: */* Accept-Language: en-US User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32) Host: host123:80
この場合、Webサーバーから次のようなレスポンスが返されます。
---- Response --------
HTTP/1.1 200 OK
Date: Wed, 23 Apr 2008 20:20:49 GMT
Server: Oracle-Application-Server-11g/11.1.1.0.0 Oracle-HTTP-Server
Allow: GET,HEAD,POST,OPTIONS
Content-Length: 0
Connection: close
Content-Type: text/html
一部のソースでは、Optionsメソッドを公開することはセキュリティ上のリスクが低いと考えられます。悪質なクライアントは、このメソッドを使用してWebサーバーでサポートされるメソッドを判断できます。ただし、Webサーバーでサポートされるメソッドの数は限られているため、このメソッドを無効にしても悪質なクライアントに対して時間稼ぎとなるだけで、攻撃をやめさせることはできません。また、Optionsメソッドは、正当なクライアントによって使用されることもあります。
Oracle Fusion Middleware環境にOptionsメソッドを必要とするクライアントが存在しない場合、httpd.confファイルに次の行を追加してこのメソッドを無効化できます。
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_METHOD} ^OPTIONS RewriteRule .* – [F] </IfModule>
NFS(ネットワーク・ファイルシステム)などの共有ファイルシステムでOracle HTTP Serverコンポーネントが作成される際、機能上またはパフォーマンス上の問題が発生する場合があります。特に、OHSで使用されるロック・ファイルまたはUNIXソケットが機能しない、またはそのパフォーマンスが大幅に低下する可能性があります。また、mod_wl_ohsでルーティングされるWLSリクエストが、デフォルト構成のファイルシステム・アクセスが原因で、パフォーマンスが大幅に低下する場合があります。
表5-1に、ロック・ファイルの問題と推奨されるhttpd.conf
ファイルの変更に関する詳細を、オペレーティング・システム別に示します。
表5-1 ロック・ファイルの問題
オペレーティング・システム | 説明 | httpd.confの変更点 |
---|---|---|
Linux |
リモート(非NFS4)ファイル・システム使用時のロック・ファイル。 |
|
Solaris |
ロック・ファイルは必要ありません。プロセス間pthread mutexが、推奨されるプロセス間mutexの実装です。 |
|
その他のUNIXプラットフォーム |
ローカル・ファイルシステムを示すように |
|
UNIXソケットの問題 |
mod_cgidは、デフォルトでは有効になっていません。有効な場合は、 mod_fastcgiは、デフォルトでは有効になっていません。有効な場合は、 |
mod_securityは、Oracle HTTP Serverに対する侵入攻撃を検出および防止するために使用できる、オープンソース・モジュールです。たとえば、mod_securityルールを指定して、すべての受信リクエストをスクリーニングし、ルールで指定された条件に一致するリクエストを拒否することができます。mod_securityモジュール(バージョン2.7.2)とその前提条件は、mod_security2.soという共有オブジェクトとして、ORACLE_HOME/ohs/modulesディレクトリ内のOracle HTTP Serverインストールに含まれています。
このバージョンのOHSは、mod_security (バージョン2.7.2)のディレクティブ、変数、アクション、フェーズおよび関数のみをサポートしています。このモジュールをより新しいバージョンに置き換えると、これらはサポートされなくなります。
この付録では、loadModule
文を含む、mod_security.confファイルの使用可能な例(例E–1)について説明します。
注意: 次の点に注意してください。
|
http://www.modsecurity.org/documentation/
この項には次の情報が含まれます:
Oracle HTTP Serverの実行時にmod_securityモジュールを使用できるようにするには、mod_security.confが次の行で開始されていることを確認します。
#Load module LoadModule security2_module "${PRODUCT_HOME}/modules/mod_security2.so"
例5-1のmod_security.confの例を参照してください。
mod_securityを構成する際には、Oracle HTTP Server構成ファイルで特定のディレクティブを指定する必要があります。IfModule
コンテナ内のhttpd.confファイルで直接ディレクティブを指定できます。別の方法として、別個のmod_security.confファイルにmod_securityディレクティブを指定し、Include
ディレクティブを使用してhttpd.confにその.confファイルを含めることもできます。
デフォルトではmod_security.confは存在しないので、可能であれば例5-1のテンプレートを使用して、mod_security.confを作成する必要があります。テキスト・エディタにサンプルをコピーして貼り付け、ファイル全体を読んで、使用しているシステム用に編集します。次に、それを自身のmod_security.confとして保存し、httpd.confに含めます。記載の手順に従ってmod_security.confを実装する場合は、LoadModule
ディレクティブを使用してmod_security2.soを実行環境にロードします。
例5-1 mod_security.confの例
#Load module LoadModule security2_module "${PRODUCT_HOME}/modules/mod_security2.so" # -- Rule engine initialization ---------------------------------------------- # Enable ModSecurity, attaching it to every transaction. Use detection # only to start with, because that minimises the chances of post-installation # disruption. # SecRuleEngine DetectionOnly # -- Request body handling --------------------------------------------------- # Allow ModSecurity to access request bodies. If you don't, ModSecurity # won't be able to see any POST parameters, which opens a large security # hole for attackers to exploit. # SecRequestBodyAccess On # Enable XML request body parser. # Initiate XML Processor in case of xml content-type # SecRule REQUEST_HEADERS:Content-Type "text/xml" "id:'200000',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=XML" # Maximum request body size we will accept for buffering. If you support # file uploads then the value given on the first line has to be as large # as the largest file you are willing to accept. The second value refers # to the size of data, with files excluded. You want to keep that value as # low as practical. # SecRequestBodyLimit 13107200 SecRequestBodyNoFilesLimit 131072 # Store up to 128 KB of request body data in memory. When the multipart # parser reachers this limit, it will start using your hard disk for # storage. That is slow, but unavoidable. # SecRequestBodyInMemoryLimit 131072 # What do do if the request body size is above our configured limit. # Keep in mind that this setting will automatically be set to ProcessPartial # when SecRuleEngine is set to DetectionOnly mode in order to minimize # disruptions when initially deploying ModSecurity. # SecRequestBodyLimitAction Reject # Verify that we've correctly processed the request body. # As a rule of thumb, when failing to process a request body # you should reject the request (when deployed in blocking mode) # or log a high-severity alert (when deployed in detection-only mode). # SecRule REQBODY_ERROR "!@eq 0" \ "id:'200001', phase:2,t:none,log,deny,status:400,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2" # By default be strict with what we accept in the multipart/form-data # request body. If the rule below proves to be too strict for your # environment consider changing it to detection-only. You are encouraged # _not_ to remove it altogether. # SecRule MULTIPART_STRICT_ERROR "!@eq 0" \ "id:'200002',phase:2,t:none,log,deny,status:44, \ msg:'Multipart request body failed strict validation: \ PE %{REQBODY_PROCESSOR_ERROR}, \ BQ %{MULTIPART_BOUNDARY_QUOTED}, \ BW %{MULTIPART_BOUNDARY_WHITESPACE}, \ DB %{MULTIPART_DATA_BEFORE}, \ DA %{MULTIPART_DATA_AFTER}, \ HF %{MULTIPART_HEADER_FOLDING}, \ LF %{MULTIPART_LF_LINE}, \ SM %{MULTIPART_MISSING_SEMICOLON}, \ IQ %{MULTIPART_INVALID_QUOTING}, \ IP %{MULTIPART_INVALID_PART}, \ IH %{MULTIPART_INVALID_HEADER_FOLDING}, \ FL %{MULTIPART_FILE_LIMIT_EXCEEDED}'" # Did we see anything that might be a boundary? # SecRule MULTIPART_UNMATCHED_BOUNDARY "!@eq 0" \ "id:'200003',phase:2,t:none,log,deny,status:44,msg:'Multipart parser detected a possible unmatched boundary.'" # PCRE Tuning # We want to avoid a potential RegEx DoS condition # SecPcreMatchLimit 1000 SecPcreMatchLimitRecursion 1000 # Some internal errors will set flags in TX and we will need to look for these. # All of these are prefixed with "MSC_". The following flags currently exist: # # MSC_PCRE_LIMITS_EXCEEDED: PCRE match limits were exceeded. # SecRule TX:/^MSC_/ "!@streq 0" \ "id:'200004',phase:2,t:none,deny,msg:'ModSecurity internal error flagged: %{MATCHED_VAR_NAME}'" # -- Response body handling -------------------------------------------------- # Allow ModSecurity to access response bodies. # You should have this directive enabled in order to identify errors # and data leakage issues. # # Do keep in mind that enabling this directive does increases both # memory consumption and response latency. # SecResponseBodyAccess On # Which response MIME types do you want to inspect? You should adjust the # configuration below to catch documents but avoid static files # (e.g., images and archives). # SecResponseBodyMimeType text/plain text/html text/xml # Buffer response bodies of up to 512 KB in length. SecResponseBodyLimit 524288 # What happens when we encounter a response body larger than the configured # limit? By default, we process what we have and let the rest through. # That's somewhat less secure, but does not break any legitimate pages. # SecResponseBodyLimitAction ProcessPartial # -- Filesystem configuration ------------------------------------------------ # The location where ModSecurity stores temporary files (for example, when # it needs to handle a file upload that is larger than the configured limit). # # This default setting is chosen due to all systems have /tmp available however, # this is less than ideal. It is recommended that you specify a location that's private. # SecTmpDir /tmp/ # The location where ModSecurity will keep its persistent data. This default setting # is chosen due to all systems have /tmp available however, it # too should be updated to a place that other users can't access. # SecDataDir /tmp/ # -- File uploads handling configuration ------------------------------------- # The location where ModSecurity stores intercepted uploaded files. This # location must be private to ModSecurity. You don't want other users on # the server to access the files, do you? # #SecUploadDir /opt/modsecurity/var/upload/ # By default, only keep the files that were determined to be unusual # in some way (by an external inspection script). For this to work you # will also need at least one file inspection rule. # #SecUploadKeepFiles RelevantOnly # Uploaded files are by default created with permissions that do not allow # any other user to access them. You may need to relax that if you want to # interface ModSecurity to an external program (e.g., an anti-virus). # #SecUploadFileMode 0600 # -- Debug log configuration ------------------------------------------------- # The default debug log configuration is to duplicate the error, warning # and notice messages from the error log. # #SecDebugLog /opt/modsecurity/var/log/debug.log #SecDebugLogLevel 3 # -- Audit log configuration ------------------------------------------------- # Log the transactions that are marked by a rule, as well as those that # trigger a server error (determined by a 5xx or 4xx, excluding 404, # level response status codes). # SecAuditEngine RelevantOnly SecAuditLogRelevantStatus "^(?:5|4(?!04))" # Log everything we know about a transaction. SecAuditLogParts ABIJDEFHZ # Use a single file for logging. This is much easier to look at, but # assumes that you will use the audit log only ocassionally. # SecAuditLogType Serial SecAuditLog "${ORACLE_INSTANCE}/servers/${COMPONENT_NAME}/logs/modsec_audit.log" # Specify the path for concurrent audit logging. SecAuditLogStorageDir "${ORACLE_INSTANCE}/servers/${COMPONENT_NAME}/logs" #Simple test SecRule ARGS "\.\./" "t:normalisePathWin,id:99999,severity:4,msg:'Drive Access'" # -- Miscellaneous ----------------------------------------------------------- # Use the most commonly used application/x-www-form-urlencoded parameter # separator. There's probably only one application somewhere that uses # something else so don't expect to change this value. # SecArgumentSeparator & # Settle on version 0 (zero) cookies, as that is what most applications # use. Using an incorrect cookie version may open your installation to # evasion attacks (against the rules that examine named cookies). # SecCookieFormat 0 # Specify your Unicode Code Point. # This mapping is used by the t:urlDecodeUni transformation function # to properly map encoded data to your language. Properly setting # these directives helps to reduce false positives and negatives. # #SecUnicodeCodePage 20127 #SecUnicodeMapFile unicode.mapping