この章では、Oracle HTTP Serverのセキュリティ機能の概要と、セキュアなWebサイトを設定するための構成情報を示します。
注意: 特に他に記載のないかぎり、このドキュメントに収められている情報は、Oracle HTTP ServerがOracle WebLogic ServerおよびOracle Fusion Middleware Controlにインストールされている場合に適用できます。このドキュメントの対象読者は、『Oracle Fusion Middlewareコンセプト・ガイド』および『Oracle Fusion Middleware管理者ガイド』の説明に従ってOracle Fusion Middlewareの主要概念を十分に理解しておく必要があります。スタンドアロン・モードでのOracle HTTP Serverのインストールについては、『Oracle Fusion Middleware Oracle Web Tierインストレーション・ガイド』のOracle WebLogic Serverを使用せずに行うOracle Web Tierのインストールに関する項を参照してください。 |
この章の内容は、次のとおりです。
セキュリティは、認証、認可および秘匿性のカテゴリに分けられます。Oracle HTTP Serverは、これら3種類のカテゴリをすべてサポートします。Oracle HTTP ServerはApache Web Serverに基づいており、そのセキュリティ・インフラストラクチャは主にApacheモジュール(mod_auth_basic、mod_authn_file、mod_auth_userおよびmod_authz_groupfile)とOracleモジュール(mod_osslおよびmod_osso)により提供されます。mod_auth_basic、mod_authn_file、mod_auth_userおよびmod_authz_groupfileモジュールは、ユーザー名とパスワードのペアに基づく認証を提供します。mod_authz_hostはリクエストの特性(ホスト名やIPアドレスなど)に基づいてサーバーへのアクセスを制御し、mod_osslは、SSLを介したX.509クライアント証明書によって秘匿性および認証を提供します。mod_ossoは、Webアプリケーションに対するシングル・サインオン認証を有効にします。
Oracle HTTP Serverは、httpd.conf
ファイル内のアクセス制御ディレクティブを使用して構成できるアクセス制御、認証および認可の方法を提供します。URLリクエストはOracle HTTP Serverに到達すると、サーバーのデフォルトおよび構成パラメータにより指定された手順で処理されます。URLリクエストの処理手順は、多くのWebリスナーに共通のモジュールまたはプラグイン・アーキテクチャを介して実装されます。
図8-1は、URLリクエストがサーバーにより処理される方法を示しています。このプロセスの各手順は、サーバーの構成内容に応じてサーバー・モジュールにより処理されます。たとえば、Basic認証が使用される場合、図8-1の「認証」および「認可」という手順は、Apacheのmod_auth_basic、mod_authn_file、mod_auth_userおよびmod_authz_groupfileモジュールの処理を表しています。
Oracle HTTP Serverは、ユーザーを認可および認証してから、そのユーザーにサーバーのリソースへのアクセスまたは変更を許可します。Oracle HTTP Serverを使用してサーバーにアクセスする3つのユーザー・クラスと、それらの権限を次に示します。
認証を提供せずにサーバーにアクセスするユーザー。これらのユーザーは、保護されていないリソースにしかアクセスできません。
Oracle HTTP Server内のモジュールによって認証され、将来的に認可される予定のユーザー。これには、mod_auth_basic、mod_authn_file、mod_auth_userおよびmod_authz_groupfileモジュールのようなApache HTTP ServerモジュールとOracleのmod_osslにより認証されたユーザーが含まれます。このようなユーザーは、http.conf
ファイル内で定義されたURLにアクセスできます。
mod_ossoおよびシングル・サインオン・サーバーを介して認証されたユーザー。これらのユーザーは、シングル・サインオンによって許可されたリソースにアクセスできます。
関連項目: 『Oracle Fusion Middlewareセキュリティ・ガイド』 |
次のリソースは初期段階で保護されていないため、Oracle HTTP Serverが構成される可能性があります。
静的コンテンツ(静的なHTMLページ、グラフィックス交換形式、.gif
、ファイル、およびOracle HTTP Serverにより直接提供されるその他の静的ファイルなど)。
Oracle HTTP Serverが直接起動するCGI/FastCGIスクリプト、簡易スクリプトまたはプログラム。
Oracle HTTP Server内のモジュールにより生成されたコンテンツ。mod_perl、mod_dmsなどのモジュールは、クライアントに返されるレスポンスを生成します。
Oracle HTTP Serverの背後にあるOracle Application Serverコンポーネント。これには、Oracle WebLogic Serverとともに稼働している、mod_wl_ohsを介してアクセスされるサーブレットやJSPが含まれます。Oracle HTTP Serverはまず第一にこれらのコンポーネントの認証および認可を行いますが、コンポーネント・レベルで追加の認証を行うこともできます。
この項では、WebLogic Serverにリクエストを転送するためにmod_wl_ohs
モジュールが使用されているOracle HTTP Serverの前あるいはその中でSSLを停止する方法を説明します。リクエストがOracle HTTP Serverに届く前にSSLを停止するか、リクエストがサーバーの中にある時に停止するかは、トポロジによります。SSLを停止する一般的な理由は、第三者によって通信中のデータが傍受されるリスクを伴うことなく、別の方法によって内部ネットワークが保護されている場合の、パフォーマンス上の考慮によるものです。もうひとつの理由としては、WebLogic ServerがHTTPSリクエストを受け付けるように構成されていない場合があります。
SSLを使用しているリクエストをOracle HTTP Serverへの到達前に終了させるロード・バランサやリバース・プロキシなどの装置を使用している場合には、サーバーは、あたかもHTTPSを介して受信したようにリクエストを扱う構成とする必要があります。さらに、サーバーは、クライアントにHTTPS応答を返すように構成される必要があります。
表8-2に、ブラウザからHTTPSを介してWebLogic Serverにリクエストが送信される場合の例を示します。ロード・バランサは、SSLを停止し、リクエストをHTTPとして送信します。Oracle HTTP Serverは、あたかもHTTPSを介して受信したようにリクエストを処理する構成とする必要があります。
Oracle HTTP Serverに命令を与えてHTTPSを介して受信されたかのようにリクエストを扱うには、mod_certheaders
モジュールのSimulateHttps
ディレクティブでhttpd.conf
ファイルを構成します。
mod_certheaders
の詳細は、E.1項「mod_certheadersモジュール」を参照してください。
注意: SSLがOracle HTTP Serverで構成されている場合(すなわち、HTTPSを使用して直接Oracle HTTP Serverにアクセスしている場合)には、この手順は不要です。 |
サーバーの外部名とポート番号を使用して、たとえばhttpd.conf
構成ファイルを次のように構成します。
ServerName <www.company.com:port>
mod_certheaders
モジュールをロードするように、httpd.conf
構成ファイルをたとえば次のように構成します。
UNIX:
LoadModule certheaders_module libexec/mod_certheaders.so
Windows:
LoadModule certheaders_module modules/ApacheModuleCertHeaders.dll AddModule mod_certheaders.c
注意: 他のAddModule ディレクティブにAddModule 行を含めることを推奨します。 |
HTTPSリクエストがクライアントに返送されるように、httpd.conf
ファイルの最後にあるSimulateHttps
ディレクティブとAddCertHeader
ディレクティブをたとえば次のように構成します。
# For use with other load balancers and front-end devices: SimulateHttps On # For use with Oracle Web Cache: AddCertHeader HTTPS
Oracle HTTP Serverを再起動してサーバーへのアクセスをテストします。特に、https://
host:port
/index.html
のような静的ページにアクセス可能であるかテストします。
基本設定として構成をテストします。問題が生じた場合には、仮想ホストなどの潜在的な問題とのオーバーラップを避けるため、ここでトラブルシューティングを行ってください。
理想的には、すべてのHTTPSリクエストを処理するようにhttpd.conf
ファイルのVirtualHost
を構成するとよいでしょう。こうすると、HTTPSリクエストがHTTPリクエストからよりスケーラブルに分離されます。多目的サイトの場合や、ロード・バランサなどの装置がHTTPリクエストとHTTPSリクエストの両方を処理するOracle HTTP Serveの前にある場合には、こうした構成がさらに望まれます。
次の命令例では、mod_certheaders
モジュールをロードし、HTTPSリクエストだけを処理するように仮想ホストを生成します。
# Load correct module here or where other LoadModule lines exist: LoadModule certheaders_module libexec/mod_certheaders.so # This only handles https requests: NameVirtualHost <name>:<port> <VirtualHost <name>:<port> # Use name and port used in url: ServerName <www.company.com:port> SimulateHttps On # The rest of your desired configuration for this VirtualHost goes here </VirtualHost>
Oracle HTTP Serverを再起動し、サーバーへのアクセスをテストします。最初にhttps://
host:port
/index.html
のような静的ページをテストし、次にご使用のアプリケーションをテストします。
SSLがOracle HTTP Serverで構成されていてWebLogic Serverでは構成されていない場合には、Oracle HTTP Serverから送信されるリクエストに対するSSLを停止できます。
次の図はリクエスト・フローをまとめたもので、HTTPSがどこで停止するかを示しています。図8-3では、ブラウザからHTTPSリクエストが送信されます。ロード・バランサは、HTTPSリクエストをOracle HTTP Serverに送信します。SSLはOracle HTTP Serverで停止し、HTTPリクエストがWebLogic Serverに送られます。
図8-4では、ロード・バランサは存在せず、HTTPSリクエストは直接Oracle HTTP Serverに送信されます。この場合にも、SSLはOracle HTTP Serverで停止し、HTTPリクエストがWebLogic Serverに送られます。
mod_wl_ohs.conf
ファイルを構成して、ご使用の非SSL構成の管理対象サーバーの場所に対するWLSProxySSL
ディレクティブを次のように追加します。
WLProxySSL ON
ロード・バランサなどの装置をOracle HTTP Server (同じくSSLを使用)の前で使用している場合には、WL-Proxy-SSL
をすでに設定済であるかどうかによって、次の例のように、かわりにWLProxySSLPassThrough
ディレクティブを構成することが必要な場合があります。
WLProxySSLPassThrough ON
詳細は、ご使用のロード・バランサのドキュメントを参照してください。WLProxySSLPassThroughの詳細は、「Oracle WebLogic ServerにおけるWebサーバー1.1プラグインの使用」のWebサーバー・プラグインのパラメータに関する項を参照してください。
コンポーネント間の所定の通信に障害を与えますので、SecureProxy
ディレクティブが構成されていないことを確認してください。SSLが全体的に使用されている場合にかぎり、このディレクティブを使用します。次の例では、SecureProxy
ディレクティブはコメントアウトされています。
# To configure SSL throughout (all the way to WLS): # SecureProxy ON # WLSSLWallet "<Path to Wallet>"
Oracle HTTP Serverを再起動し、https://
host:port/path/application_name
などのJavaアプリケーションへのアクセスをテストします。
Oracle HTTP Serverは、ユーザーの認証および認可を次の2段階で行います。
アクセス制御(第1段階): これは、受信HTTPリクエストとそのヘッダーの詳細(IPアドレスやホスト名など)に基づいています。
ユーザーの認証および認可(第2段階): これは、HTTPサーバー構成に応じた様々な基準に基づいています。ユーザー名とパスワードのペアでユーザーを認証するようにサーバーを構成できます。ユーザー名とパスワードは、既知のユーザーおよびパスワードのリストと比較して確認されます。また、Webアプリケーションに対してシングル・サインオン認証を使用するようにサーバーを構成したり、SSLを介したX.509クライアント証明書を使用するようにサーバーを構成することもできます。
アクセス制御とは、リソースに対するアクセスを制御する手段のことです。
重要な注意: FMW 10gベースのシングル・サインオン・プラグイン(Oracle HTTP ServerおよびIISのような他のWebサーバー用のOSSO Plug-In)は非推奨となっており、今後のリリースは中止されます。シングル・サインオン機能のために、FMW 11gベースのOracle Access Manager WebGateに移行してください。Oracle Access ManagerとWebGateは別々にインストールする必要がある点に注意します。詳細は、『Fusion Middleware Oracle Access Management管理者ガイド』を参照してください。
|
認証は、ユーザーが本物であることを確認するプロセスです。認可は、ユーザーにリソースへのアクセスや情報の取得を許可するプロセスです。
Apache HTTP Server認証ディレクティブを使用して、ユーザーが本物であることを確認できます。
注意: mod_ossoをOracle Single Sign-On 10gで使用することは非推奨です。かわりに、Oracle Access Managerを使用する必要があります。 |
mod_ossoは、Oracle HTTP Serverに対してシングル・サインオンを有効にします。mod_ossoは、受信リクエストを調査し、リクエストされたリソースが保護されているかどうかを判別して、保護されていればユーザーに対してOracle HTTP Server Cookieを取得します。
mod_ossoを使用すると、Oracle HTTP ServerはSSO対応のシングル・サインオン(SSO)パートナ・アプリケーションとなり、Oracleシングル・サインオンを使用してユーザーの認証およびユーザーのアイデンティティの取得ができるようになります。また、WebアプリケーションがユーザーのアイデンティティをApacheヘッダー変数として使用できるようになります。
mod_ossoを使用することで、Webアプリケーションは、SSO認証を必要とするURLを登録できます。Oracle HTTP ServerがURLリクエストを受け取ると、mod_ossoはSSO認証が必要なリクエストを検出し、そのリクエストをSSOサーバーにリダイレクトします。SSOサーバーはユーザーを認証すると、そのユーザーの認証済アイデンティティをセキュアなトークン(Cookie)に格納してmod_ossoに返します。mod_ossoはCookieからユーザーのアイデンティティを取得して、Oracle HTTP Serverインスタンス内で実行されているアプリケーションにユーザーのアイデンティティ情報を伝播します。mod_ossoは、CGIで実行されているアプリケーションや、Oracle WebLogic Serverで実行されているアプリケーションにユーザーのアイデンティティ情報を伝播できます。また、静的ファイルにアクセスしようとするユーザーを認証することもできます。
関連項目: 『Oracle Fusion Middlewareセキュリティ・ガイド』 |
Oracle HTTP ServerはOraAuditEnable
というディレクティブをサポートしています。このディレクティブの目的は、FMW共通監査フレームワークを使用した認証および認可の監査の有効化です。このディレクティブはONおよびOFFの2つの値を使用します。この値がONに設定されていると、Oracle HTTP Serverによってレポートされたすべての監査イベントが監査フレームワーク固有ファイルに記録されます。デフォルトの値はONです。OraAuditEnable
がOFFに設定されている、または存在しない場合は、監査は無効です。Oracle HTTP Serverに付属するデフォルトのhttpd.conf
ファイルではONに設定されます。詳細は、次の資料を参照してください。
http://download.oracle.com/docs/cd/E14571_01/core.1111/e10043/audintro.htm#JISEC2372
Oracle HTTP Serverは、Secure Sockets Layer (SSL)プロトコルを使用して通信を保護します。SSLは、メッセージの暗号化、整合性および認証を提供することで、通信を保護します。SSL標準により、関係するコンポーネント(ブラウザやHTTPサーバーなど)は、どの暗号化、認証および整合性メカニズムを使用するかのネゴシエーションができます。
Oracle HTTP Serverに対するSSLの実装方法の詳細は、Oracle Fusion Middleware管理者ガイドの「Web Tierに対するSSLの実装」を参照してください。OracleのSSLモジュールであるmod_osslの使用の詳細は、3.6項「mod_ossl」を参照してください。mod_osslで使用可能なディレクティブの詳細は、E.4項「mod_ossl」を参照してください。
Oracle HTTP ServerとOracle Web Cacheの現在のリリースには、TLS v1.1とTSL v1.2セキュリティ・プロトコルおよび次の暗号のサポートが追加されています。Oracle HTTP Serverの現在のリリースでサポートされているセキュリティ・プロトコルと暗号の完全なリストは、E.4.12項「SSLProtocol」およびE.4.4項「SSLCipherSuite」を参照してください。
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
現在のリリースでは、Fusion Middleware Controlを介して、セキュリティ・プロトコルTLSv1.1またはTLSv1.2、およびそれに対応する暗号を構成できません。アプリケーションにそれらのプロトコルと暗号を実装するには、ssl.conf
ファイル(<
ORACLE_INSTANCE_DIR
>
/config/OHS/<
instance_name
>/ssl.conf
)を手動で編集する必要があります。
次の例は、ssl.conf
ファイルで、TLS v1.1およびTLS v1.2プロトコルと、3つの暗号を構成しています。
... # SSL Protocol Support: # Configure usable SSL/TLS protocol versions. SSLProtocol +TLSv1.1 +TLSv1.2 # SSL Cipher Suite: # List the ciphers that the client is permitted to negotiate. SSLCipherSuite TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ...
セキュリティ上の問題のため、SSLv3プロトコルはOracle HTTP Server 11.1.1.9リリースの初期状態では無効化されています。SSLv2プロトコルは、Oracle HTTP Serverでサポートされなくなりました。
Oracle HTTP Serverの以前のリリースからアップグレードしている場合、SSLv3およびSSLv2セキュリティ・プロトコルが構成の一部である可能性があります。SSLv3またはSSLv2構成をOracle HTTP Serverから無効にすることを強くお薦めします。
SSLセキュリティ・プロトコルをOracle HTTP Serverから無効にするには、次の手順を実行します。
.conf
ファイル(ssl.conf
、admin.conf
およびカスタムの.conf
ファイルなど)を調査して、SSLProtocol
やSSLProxyProtocol
などのセキュリティ宣言を探します。
ssl.conf
およびadmin.conf
ファイルは、次の場所にあります。
ORACLE_INSTANCE/config/OHS/<component_name
>
非SSLプロトコルを使用するようにセキュリティ宣言を編集します。
たとえば、現在サポートされているすべてのセキュリティ・プロトコルを明示的に構成するには、次を入力します。
SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2
ファイルを保存し、Oracle HTTP Serverを再起動します。
注意:
|