プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle HTTP Server管理者ガイド
11gリリース1 (11.1.1)
B55928-10
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

8 アプリケーション・セキュリティの管理

この章では、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のインストールに関する項を参照してください。


この章の内容は、次のとおりです。

8.1 Oracle HTTP Serverのセキュリティについて

セキュリティは、認証、認可および秘匿性のカテゴリに分けられます。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モジュールの処理を表しています。

図8-1 Oracle HTTP ServerでのURLリクエストの処理手順

図8-1の説明が続きます
「図8-1 Oracle HTTP ServerでのURLリクエストの処理手順」の説明

8.2 ユーザーおよびその権限のクラス

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セキュリティ・ガイド』

8.3 保護対象のリソース

次のリソースは初期段階で保護されていないため、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はまず第一にこれらのコンポーネントの認証および認可を行いますが、コンポーネント・レベルで追加の認証を行うこともできます。

8.4 SSLリクエストの終了

この項では、WebLogic Serverにリクエストを転送するためにmod_wl_ohsモジュールが使用されているOracle HTTP Serverの前あるいはその中でSSLを停止する方法を説明します。リクエストがOracle HTTP Serverに届く前にSSLを停止するか、リクエストがサーバーの中にある時に停止するかは、トポロジによります。SSLを停止する一般的な理由は、第三者によって通信中のデータが傍受されるリスクを伴うことなく、別の方法によって内部ネットワークが保護されている場合の、パフォーマンス上の考慮によるものです。もうひとつの理由としては、WebLogic ServerがHTTPSリクエストを受け付けるように構成されていない場合があります。

8.4.1 Oracle HTTP Serverの前にSSLを停止

SSLを使用しているリクエストをOracle HTTP Serverへの到達前に終了させるロード・バランサやリバース・プロキシなどの装置を使用している場合には、サーバーは、あたかもHTTPSを介して受信したようにリクエストを扱う構成とする必要があります。さらに、サーバーは、クライアントにHTTPS応答を返すように構成される必要があります。

表8-2に、ブラウザからHTTPSを介してWebLogic Serverにリクエストが送信される場合の例を示します。ロード・バランサは、SSLを停止し、リクエストをHTTPとして送信します。Oracle HTTP Serverは、あたかもHTTPSを介して受信したようにリクエストを処理する構成とする必要があります。

図8.2 Oracle HTTP Serverの前にSSLを停止

図8-2の説明が続きます
「図8-2 Oracle HTTP Serverの前にSSLを停止」の説明

Oracle HTTP Serverに命令を与えてHTTPSを介して受信されたかのようにリクエストを扱うには、mod_certheadersモジュールのSimulateHttpsディレクティブでhttpd.confファイルを構成します。

mod_certheadersの詳細は、E.1項「mod_certheadersモジュール」を参照してください。


注意:

SSLがOracle HTTP Serverで構成されている場合(すなわち、HTTPSを使用して直接Oracle HTTP Serverにアクセスしている場合)には、この手順は不要です。

  1. サーバーの外部名とポート番号を使用して、たとえばhttpd.conf構成ファイルを次のように構成します。

    ServerName <www.company.com:port>
    
  2. 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行を含めることを推奨します。

  3. 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
    
  4. Oracle HTTP Serverを再起動してサーバーへのアクセスをテストします。特に、https://host:port/index.htmlのような静的ページにアクセス可能であるかテストします。

    基本設定として構成をテストします。問題が生じた場合には、仮想ホストなどの潜在的な問題とのオーバーラップを避けるため、ここでトラブルシューティングを行ってください。

  5. 理想的には、すべての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>
    
  6. Oracle HTTP Serverを再起動し、サーバーへのアクセスをテストします。最初にhttps://host:port/index.htmlのような静的ページをテストし、次にご使用のアプリケーションをテストします。

8.4.2 Oracle HTTP ServerでSSLを停止

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-3 Oracle HTTP ServerでSSLを停止(ロード・バランサあり)

図8-3の説明が続きます
「図8-3 Oracle HTTP ServerでSSLを停止(ロード・バランサあり)」の説明

図8-4では、ロード・バランサは存在せず、HTTPSリクエストは直接Oracle HTTP Serverに送信されます。この場合にも、SSLはOracle HTTP Serverで停止し、HTTPリクエストがWebLogic Serverに送られます。

図8-4 Oracle HTTP ServerでSSLを停止(ロード・バランサなし)

図8-4の説明が続きます
「図8-4 Oracle HTTP ServerでSSLを停止(ロード・バランサなし)」の説明

  1. mod_wl_ohs.confファイルを構成して、ご使用の非SSL構成の管理対象サーバーの場所に対するWLSProxySSLディレクティブを次のように追加します。

    WLProxySSL ON
    
  2. ロード・バランサなどの装置をOracle HTTP Server (同じくSSLを使用)の前で使用している場合には、WL-Proxy-SSLをすでに設定済であるかどうかによって、次の例のように、かわりにWLProxySSLPassThroughディレクティブを構成することが必要な場合があります。

    WLProxySSLPassThrough ON
    

    詳細は、ご使用のロード・バランサのドキュメントを参照してください。WLProxySSLPassThroughの詳細は、「Oracle WebLogic ServerにおけるWebサーバー1.1プラグインの使用」のWebサーバー・プラグインのパラメータに関する項を参照してください。

  3. コンポーネント間の所定の通信に障害を与えますので、SecureProxyディレクティブが構成されていないことを確認してください。SSLが全体的に使用されている場合にかぎり、このディレクティブを使用します。次の例では、SecureProxyディレクティブはコメントアウトされています。

    # To configure SSL throughout (all the way to WLS):
    # SecureProxy ON
    # WLSSLWallet  "<Path to Wallet>" 
    
  4. Oracle HTTP Serverを再起動し、https://host:port/path/application_nameなどのJavaアプリケーションへのアクセスをテストします。

8.5 認証、認可およびアクセス制御

Oracle HTTP Serverは、ユーザーの認証および認可を次の2段階で行います。

  • アクセス制御(第1段階): これは、受信HTTPリクエストとそのヘッダーの詳細(IPアドレスやホスト名など)に基づいています。

  • ユーザーの認証および認可(第2段階): これは、HTTPサーバー構成に応じた様々な基準に基づいています。ユーザー名とパスワードのペアでユーザーを認証するようにサーバーを構成できます。ユーザー名とパスワードは、既知のユーザーおよびパスワードのリストと比較して確認されます。また、Webアプリケーションに対してシングル・サインオン認証を使用するようにサーバーを構成したり、SSLを介したX.509クライアント証明書を使用するようにサーバーを構成することもできます。

8.5.1 アクセス制御

アクセス制御とは、リソースに対するアクセスを制御する手段のことです。


関連項目:

リソースへのアクセス制御の構成方法の詳細は、Apache HTTP Serverドキュメントを参照してください。

8.5.2 ユーザーの認証および認可


重要な注意:

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管理者ガイド』を参照してください。

http://docs.oracle.com/cd/E40329_01/admin.1112/e27239/toc.htm


認証は、ユーザーが本物であることを確認するプロセスです。認可は、ユーザーにリソースへのアクセスや情報の取得を許可するプロセスです。

8.5.2.1 ユーザーを認証するためのApache HTTP Serverモジュールの使用

Apache HTTP Server認証ディレクティブを使用して、ユーザーが本物であることを確認できます。


関連項目:

ユーザーの認証方法の詳細は、Apache HTTP Serverドキュメントを参照してください。

8.5.2.2 mod_ossoを使用したユーザーの認証


注意:

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セキュリティ・ガイド』

8.5.3 FMW監査フレームワークのサポート

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

8.6 SSLの実装

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」を参照してください。

8.7 現在のリリースでの新しいプロトコルと暗号

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

8.8 TLS v1.1とTLS v1.2のプロトコルと暗号の構成

現在のリリースでは、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
...

8.9SSLv2およびSSLv3セキュリティ・プロトコルの無効化

セキュリティ上の問題のため、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から無効にするには、次の手順を実行します。

  1. .confファイル(ssl.confadmin.confおよびカスタムの.conf ファイルなど)を調査して、SSLProtocolSSLProxyProtocolなどのセキュリティ宣言を探します。

    ssl.confおよびadmin.confファイルは、次の場所にあります。

    ORACLE_INSTANCE/config/OHS/<component_name>
    
  2. 非SSLプロトコルを使用するようにセキュリティ宣言を編集します。

    たとえば、現在サポートされているすべてのセキュリティ・プロトコルを明示的に構成するには、次を入力します。

    SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2
    
  3. ファイルを保存し、Oracle HTTP Serverを再起動します。


注意:

  • ファイルを手動で編集している場合、別のものを追加するのではなく、必ず現在構成されている値を編集してください。VirtualHostの値で上書きする場合、グローバル・パラメータを追加するのが簡単です。

  • ssl.confおよびadmin.confファイルを編集する必要がありますが、その他のカスタマイズした.confファイルがあることや、独自の.confファイルを使用してインストールおよび構成した別の製品がある可能性があることに注意してください。

  • FMWコントロールを使用して構成を編集し、SSL用に使用するVirtualHostポートにTLSv1を選択することもできます。しかし、ビルトイン*.9999 VirtualHostを変更しようとすると、タイプがADMINの仮想ホストを編集または削除できませんということを示すアラートが表示されます。この場合、ORACLE_INSTANCE/config/OHS/<OHS_name>/admin.confファイルを手動で編集し、SSLProtocol TLSv1構成を追加する必要があります。