プロダクション環境の保護

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

プロダクション環境のセキュリティの確保

BEA では、使用しているプロダクション環境のセキュリティを確保するために、次のアクションを実装することをお勧めします。

 


WebLogic Server ホストのセキュリティ

WebLogic Server プロダクション環境のセキュリティは、動作しているマシンのセキュリティと同程度でしかありません。そのため、物理マシンやオペレーティング システムをはじめとして、ホスト マシンにインストールされているその他のすべてのソフトウェアを保護することが重要です。プロダクション環境での WebLogic Server ホストの保護についてのヒントを次に示します。また、マシンおよびオペレーティング システムのメーカーに、適切なセキュリティ対策について確認してください。

注意 : WebLogic Server インスタンスの起動時にコマンドライン引数 -Dweblogic.security.SSL.nojce=true を指定すると、サーバの SSL 実装で FIPS 準拠の (FIPS 140-2) 暗号モジュールを使用できます。FIPS 140-2 は、重要だが非機密的な使用に関する米国連邦政府の要件が記述された標準です。

表 3-1 WebLogic Server ホストのセキュリティ
セキュリティ アクション
説明
ハードウェアを物理的に保護する
権限のないオペレーティング システムのユーザが、デプロイメント マシンまたはそのネットワーク接続を変更できないように、ハードウェアを安全な場所に置く。
オペレーティング システムが提供するネットワーク サービスを保護する
悪意のある攻撃者がオペレーティング システムにアクセスしたり、システム レベルのコマンドを実行したりできないように、電子メール プログラムまたはディレクトリ サービスなどのネットワーク サービスについて専門家に確認してもらう。使用するオペレーティング システムによって方法は異なる。
ファイル システムを企業ネットワーク内の他のマシンと共有する場合、そのファイル システムはリモート攻撃される危険性がある。WebLogic Server をホストするマシンのファイル システムを共有する前に、リモート マシンとネットワークがセキュアであるかどうかを確認すること。
不正アクセスを防ぐことのできるファイル システムを使用する
各 WebLogic Server ホスト上のファイル システムで、保護されているリソースへの不正なアクセスができないようになっていることを確認する。たとえば、Windows コンピュータでは、NTFS のみを使用する。
ディスクに保存されたデータにファイル アクセス パーミッションを設定する
ディスクに保存されたデータへのアクセスを制限するために、オペレーティング システムのファイル アクセス パーミッションを設定する。このデータには以下が含まれる (ただしこれに限るものではない)。
たとえば Unix、Linux などのオペレーティング システムには、ファイル アクセス パーミッションの設定用に umask や chmod といったユーティリティが用意されている。少なくとも、Group と Others に対する読み取りおよび書き込みパーミッションを拒否する「umask 066」の使用を検討する。
永続ストアに保存されたデータにファイル アクセス パーミッションを設定する
  • 永続ストアに保存されたデータへのアクセスを制限するために、オペレーティング システムのファイル アクセス パーミッションを設定する。「永続ストアの概要」に、永続ストアへの接続を作成できる WebLogic サービスおよびサブシステムの多くを示す。これには以下が含まれる。
デフォルト永続ストアは、ドメインのルート ディレクトリの servername サブディレクトリにある data\store\default ディレクトリに保持される。
ホスト マシンのユーザ アカウント数を制限する
WebLogic Server ホストで必要とされる数を超えるユーザ アカウントを作成しないようにして、各アカウントに付与されるファイル アクセス特権を制限する。ホスト マシンでは、複数のシステム管理者ユーザを許可するオペレーティング システムでシステム管理者特権を持つ 2 つのユーザ アカウントがあり、WebLogic Server を実行する特権を持つ別のユーザがあることが理想的。2 つのシステム管理者ユーザがあればバックアップが常に提供される。WebLogic Server のユーザは、システム管理者ユーザではなく制限されたユーザであること。システム管理者ユーザの 1 つが、必要に応じて新しい WebLogic Server ユーザを常に作成できる。
アクティブなユーザ アカウントを定期的に再検討する。退職者があった場合にも見直す。
予備知識 :
WebLogic Server コンフィグレーション データの一部と Java Server Pages (JSP) および HTML ページなどの URL (Web) リソースの一部は、ファイル システム上にクリア テキストで保存される。ファイルおよびディレクトリへの読み込みアクセス権を持つユーザまたは侵入者が、WebLogic Server の認証計画および認可計画で確立するセキュリティ メカニズムを破る可能性がある。
システム管理者のユーザ アカウントの場合、分かりにくい名前を選択する
セキュリティを強化するには、システム管理者のユーザ アカウントに「system」、「admin」、または「administrator」などの分かりやすい名前を選択しないようにする。
パスワードを保護する
プロダクション マシンのユーザ アカウントのパスワードは、推測が難しいものに設定し、注意して守る必要がある。
パスワードの有効期限が定期的に切れるように、ポリシーを設定する。
クライアント アプリケーションでパスワードをコーディングすることは避ける。
各ホスト コンピュータでは、アクセス特権を持つ 2 つのシステム管理者ユーザのほかに、1 つのユーザ アカウントにのみ WebLogic リソースへのアクセス権を付与する
各 WebLogic Server ホスト コンピュータでは、オペレーティング システムを使用して、WebLogic Server の実行用に特別なユーザ アカウント (wls_owner など) を設定する。
このオペレーティング システム (operating-system: OS) のユーザ アカウントには、以下の特権を付与する。
  • BEA ホーム ディレクトリ、WebLogic Server 製品ディレクトリ ツリー、およびドメイン ディレクトリのみに対するアクセス特権。
  • BEA ホーム ディレクトリとは共通ファイル用のリポジトリのことで、同じマシンにインストールされる複数の BEA Products が使用する。WebLogic Server 製品インストール ディレクトリには、プログラム ファイルを含む、システムにインストールする WebLogic Server ソフトウェア コンポーネントがすべて含まれる。ドメイン ディレクトリには、コンフィグレーション ファイル、セキュリティ ファイル、ログ ファイル、Java EE アプリケーション、および単一の WebLogic ドメイン用のその他の Java EE リソースが含まれる。WebLogic Server ホスト コンピュータに複数のドメインをインストールする場合、各ドメイン ディレクトリを保護する必要がある。

    デフォルトでは、BEA インストール プログラムによってすべての BEA ファイルとドメイン ディレクトリが単一のディレクトリ ツリーに格納される。このツリーの最上位ディレクトリの名前は bea である。WebLogic Server ファイルはすべてこのディレクトリ ツリーのサブディレクトリ (bea\wlserver_10.0) にあり、ドメイン ファイルは別のサブディレクトリ (bea\user_projects\domains\domain1
    bea\user_projects\domains\domain2、...) にある。

    ただし、WebLogic Server 製品インストール ディレクトリおよびドメイン ディレクトリを BEA ホーム ディレクトリの外部に配置することもできる。詳細については、『インストール ガイド』の「インストールのためのディレクトリの選択」を参照。

  • その他の OS ユーザには、BEA ファイルおよびドメイン ファイルへの読み込みアクセス権、書き込みアクセス権、または実行アクセス権を付与しない (システム管理者ユーザは、デフォルトでアクセス特権を保持する)。
  • これにより、WebLogic Server と同じマシンで実行されている他のアプリケーションの BEA ファイルおよびドメイン ファイルへのアクセスが制限される。このように保護しないと、その他のアプリケーションの一部は書き込みアクセス権を得て、動的コンテンツを提供する JSP およびその他のファイルに悪意のある実行コードを挿入する可能性がある。そのファイルが次にクライアントに提供されると、挿入されたコードが実行される。

各ホスト コンピュータでは 1 つのユーザ アカウントにのみ WebLogic リソースへのアクセス権を付与する (続き)
知識の豊富なオペレーティング システムのユーザが、以下のファイルに対して書き込みアクセス権 (場合によっては読み込みアクセス権) を付与されている場合、WebLogic Server のセキュリティを無視することができる。
  • WebLogic Server インストール
  • JDK ファイル (通常、WebLogic Server インストール内にある。ただし、別になるようにコンフィグレーションできる)
  • ドメイン ディレクトリ
  • JMS SAF ファイル
  • HTTP セッションをバックアップしたファイル
永続ストアを使用するすべてのファイル (JMS SAF ファイルなど) には、読み込みアクセス権と書き込みアクセス権から保護する必要のある重要なデータがある。永続ストアは、ファイルベースのストアまたは JDBC 対応データベースの永続性をサポートする。
ファイル ストアを使用して WebLogic Server でファイルを保存する場合、アプリケーションを任意の場所に保存できる。読み込みアクセス権および書き込みアクセス権からアプリケーションを保護するには、すべてのファイルの場所を覚えておく必要がある。
JDBC ストアを使用してアプリケーションを保存する場合、読み込みアクセス権および書き込みアクセス権から JDBC ストアを守ることでデータベースを適切に保護する。
永続ストアの使用の詳細については、『WebLogic Server 環境のコンフィグレーション』の「WebLogic 永続ストアの使い方」を参照。
UNIX 上で保護されているポートにバインドするには、ユーザ ID を切り替える、またはネットワーク アドレス変換 (NAT) ソフトウェアを使用するよう、WebLogic Server をコンフィグレーションする
UNIX システムでは、特権を持つユーザ アカウント (ほとんどの場合、root) で実行されるプロセスのみを、1024 より小さいポートにバインドできる。UNIX システムでは、システム管理者 (root) ユーザのみが許可される。
ただし、WebLogic Server のような長期にわたって実行されるプロセスは、これらの特権を付与されたアカウント下で実行してはならない。その代わり、以下の処理のいずれかを行うことができる。
  • 特権を付与されたポートにアクセスする必要のある各 WebLogic Server インスタンスについて、特権を付与されたユーザ アカウント下で起動し、特権を付与されたポートにバインドしてから、ユーザ ID を特権のないアカウントに変更するようにサーバをコンフィグレーションする。
  • サーバ インスタンスの起動にノード マネージャを使用する場合は、セキュア ポート上でのみ、また単一の既知のホストのみから、要求を受け入れるようにノード マネージャをコンフィグレーションする。なお、ノード マネージャは特権を付与されたユーザ アカウントで起動する必要がある。

    Administration Console オンライン ヘルプの「UNIX 上で実行するマシンの作成とコンフィグレーション」を参照。

  • WebLogic Server インスタンスを特権を持たないアカウントから起動し、ネットワーク アドレス変換 (NAT) ソフトウェアを使用して、保護されているポートを保護されないポートにマップするよう、ファイアウォールをコンフィグレーションする。BEA では、NAT ソフトウェアは提供していない。
プロダクション マシンで開発しない
まず開発マシンで開発し、開発が終わりテストが終了したら、コードをプロダクション マシンに移行する。これにより、開発環境でのバグが、プロダクション環境のセキュリティに影響を及ぼすことを防止できる。
開発ソフトウェアおよびサンプル ソフトウェアをプロダクション マシンにインストールしない
プロダクション マシンに開発ツールをインストールしない。開発ツールをプロダクション マシンにインストールしないことにより、侵入者が WebLogic Server プロダクション マシンに部分的にアクセスできたとしても、影響を減らすことができる。
プロダクション マシンに、WebLogic Server のサンプル アプリケーションをインストールしない。BEA インストール プログラム上で、標準インストールにするかカスタム インストールにするかを尋ねられた場合は、以下の操作を実行する。
  1. [カスタム インストール] を選択する。[次へ] をクリックします
  2. [コンポーネントを選択] ページで、[Server Examples] チェック ボックスからチェック マークをはずす。[次へ] をクリックします
BEA インストール プログラムの残りのページの操作を完了する。
セキュリティ監査を有効にする
WebLogic Server が動作するオペレーティング システムが、ファイルおよびディレクトリ アクセスのセキュリティ監査をサポートする場合は、監査ログを使用して、拒否されたディレクトリまたはファイル アクセス違反を追跡することを推奨する。管理者は、監査ログ用に十分なディスク スペースを確保する必要がある。
オペレーティング システムを保護する追加ソフトウェアの使用を検討する
多くのオペレーティング システムでは、プロダクション環境を保護するために、追加ソフトウェアを実行することができる。たとえば、侵入検知システム (Intrusion Detection System: IDS) を使用すると、プロダクション環境を変更しようとしたときに検出できる。
使用可能なソフトウェアの情報については、使用しているオペレーティング システムのベンダに問い合わせる。
オペレーティング システムのサービス パックおよびセキュリティ パッチを適用する
推奨されているサービス パックおよびセキュリティ関連のパッチのリストについては、オペレーティング システムのベンダに問い合わせる。
BEA の最新のサービス パックを適用し、最新のセキュリティ勧告を実装する
サイトのセキュリティ問題の担当者は、新しいセキュリティ勧告に関する通知を受け取るために、http://dev2dev.bea.com/advisoriesnotifications の「Security Advisories and Notifications」ページで登録する。
セキュリティ勧告で推奨されている対策は、「Security Advisories and Notifications」ページに掲載される。
また、各サービス パックがリリースされたら適用すること。サービス パックには、製品の各バージョンおよび以前にリリースされた各サービス パックのすべてのバグの修正が含まれている。サービス パックは、http://www.beasys.co.jp/evaluation/index.html でダウンロード可能。
BEA Products でセキュリティ問題が発生した場合は secalert@bea.com に連絡する。
プロダクション環境では開発モードで WebLogic Server を実行しない
プロダクション モードでは、プロダクション環境にとってよりセキュアで適切な設定を使用してサーバが実行されるように設定される。

 


ネットワーク接続のセキュリティ

ネットワーク接続を設計するときには、管理が容易なセキュリティ ソリューションのニーズと、戦略上重要な WebLogic リソースを保護するためのニーズのバランスを取ります。次の表で、ネットワーク接続を保護するためのオプションを示します。

表 3-2 ネットワーク接続のセキュリティ
セキュリティ アクション
説明
ハードウェアおよびソフトウェアを使用して、ファイアウォールを作成する
ファイアウォールとは、2 つのネットワーク間のトラフィックを制限する機能である。ファイアウォールは、ソフトウェアとハードウェア (ルータや専用のゲートウェイ マシンなど) を組み合わせて作成できる。ファイアウォールでは、プロトコル、要求されたサービス、ルーティング情報、パケット内容、および送信元や送信先のホストやネットワークに基づいて、トラフィックの通過を許可したり否認したりするフィルタが使用される。また、認証されたユーザのみにアクセス権を限定できる。
WebLogic セキュリティ サービスでは、境界ベースの認証 (Web サーバ、ファイアウォール、VPN) を実行し、複数のセキュリティ トークン タイプおよびプロトコル (SOAP、IIOP-CSIv2) を扱う、サード パーティの ID アサーション プロバイダを使用できる。詳細については、『WebLogic Security について』の「境界認証」を参照。
WebLogic Server でのファイアウォールの使用については、『WebLogic Server クラスタ ユーザーズ ガイド』の「クラスタ アーキテクチャのセキュリティ オプション」を参照。
WebLogic Server の接続フィルタを使用する
ハードウェアおよびサード パーティのソフトウェアを使用してファイアウォールを作成するだけでなく、WebLogic Server の接続フィルタを使用し、プロトコル、IP アドレス、および DNS ノード名に基づいてネットワーク トラフィックを制限することを検討する。
接続フィルタは、WebLogic Server ドメイン内のマシンがお互いにファイアウォールを通過せずにアクセスできる場合に最も適している。たとえば、ネットワークの外からのトラフィックの制限にはファイアウォールを使用し、ファイアウォールの後ろでのトラフィックの制限には WebLogic Server の接続フィルタを使用できる。
『WebLogic Server のセキュリティ』の「接続フィルタの使用」を参照。
管理トラフィックにドメイン全体の管理ポートを使用する
管理ポートにより、WebLogic Server ドメインのサーバ インスタンス間のすべての管理トラフィックが 1 つのポートに制限される。管理ポートを使用せずにサーバを実行すると、サーバの機密性のあるコンフィグレーションがアプリケーションからネットワーク上にクリアテキストで送信されてしまう可能性がある。管理ポートを使用してサーバを実行すれば、この問題が起こる可能性は大幅に低くなる。さらに、管理ポートをコンフィグレーションすると、要求を処理するためのリソースや管理ポートの要求に対する制限がサーバの他の部分と異なるためにサービス拒否攻撃が発生した場合に便利。
接続フィルタと組み合わせて使用すると、WebLogic Server インスタンスが、既知のマシンまたはサブセットからのみ、かつ単一のポートでのみ管理要求を受け入れるように指定できる。
管理ポートを有効にするには、クライアントが SSL を使用して Administration Console と対話する必要がある。SSL では、ネットワーク上での攻撃者による重要なデータの傍受や一部のクロスサイト スクリプティング攻撃を防止している。
Administration Console オンライン ヘルプの「ドメイン全体の管理ポートのコンフィグレーション」および「コンフィグレーション監査の有効化」を参照。
組み込み LDAP ポートを保護する
総当たり攻撃から組み込み LDAP ポートを保護するには、接続フィルタを使用して、単一のサーバ コンフィグレーションで組み込み LDAP リスン ポートを閉じる。
この方法では、複数のサーバ コンフィグレーションで組み込み LDAP ポートを保護しないが、デフォルトの接続フィルタを実装すると、ドメインを構成するサーバからのアクセスのみを許可する際に使用する、ソースの IP アドレスに基づいたフィルタリングがサポートされる。この結果、ドメイン内のマシンのみが LDAP ポートにアクセスできる。接続フィルタの使用については、『WebLogic Security プログラマーズ ガイド』の「ネットワーク接続フィルタの使い方」を参照。
JVM のプラットフォーム MBean サーバへのリモート アクセスを有効にしない
JDK 1.5 以降では、MBean サーバ (プラットフォーム MBean サーバ) と、JVM のモニタ情報を含む一連の MBean が提供される。WebLogic Server の実行時 MBean サーバをコンフィグレーションしてプラットフォーム MBean サーバとして実行できる。これにより、JMX クライアントは単一の MBean サーバ接続から JVM MBean および WebLogic Server MBean にアクセス可能。
プラットフォーム MBean サーバへのリモート アクセスは、標準の JDK 1.5 セキュリティ機能 (http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html#remote を参照) によってのみ保護できる。WebLogic Server 実行時 MBean サーバをプラットフォーム MBean サーバとしてコンフィグレーションした場合、プラットフォーム MBean サーバへのリモート アクセスを有効にすると WebLogic Server MBean へのアクセス パスが作成される。このアクセス パスは、WebLogic Server セキュリティ フレームワークでは保護されない。
リモートの JMX クライアントが JVM MBean にアクセスできるようにする必要がある場合は、WebLogic Server の実行時 MBean サーバを介してアクセスすることをお勧めする。『JMX による管理の容易なアプリケーションの開発』の「JVM プラットフォーム MBean サーバへの MBean の登録」を参照。

 


データベースのセキュリティ

多くの Web アプリケーションでは、データの格納にデータベースが使用されます。WebLogic Server で使用されるデータベースとしては、Oracle、Microsoft SQL Server、および Informix が一般的です。これらのデータベースには、顧客リスト、顧客の連絡先情報、クレジット カード情報、およびその他の顧客データなど、Web アプリケーションの重要なデータが保存されることがよくあります。Web アプリケーションを作成するときは、どのデータをデータベースに保存し、そのデータを作成するためにどのようなセキュリティが必要なのかを考慮する必要があります。また、データベース メーカーが提供するセキュリティ メカニズムを理解し、それがセキュリティ ニーズを満たすうえで十分かどうかを判断する必要があります。提供されたセキュリティ メカニズムで不十分な場合は、重要なデータをデータベースに書き込む前に暗号化するなど、その他のセキュリティ技術を使用して、データベースのセキュリティを改善することができます。たとえば、クレジット カード情報は暗号化し、それ以外のすべての顧客データはプレーン テキスト形式でデータベースに保存します。

 


WebLogic Security サービスのセキュリティ

WebLogic Security サービスには、多彩で柔軟なソフトウェア ツールがあり、サーバ インスタンスで実行するサブシステムおよびアプリケーションの保護に使用できます。次の表は、使用しているプロダクション環境を保護するために推奨される基本機能のチェックリストです。

表 3-3 WebLogic Security サービスのセキュリティ
セキュリティ アクション
説明
プロダクション対応のセキュリティ プロバイダをセキュリティ レルムにデプロイする
WebLogic Security サービスでは、複数のセキュリティ プロバイダをデプロイでき、各プロバイダでは特定のセキュリティ分野に対応するプラグイン可能なアーキテクチャが使用される。
WebLogic Server には、デフォルトで完全なセキュリティ ソリューションを提供する独自のセキュリティ プロバイダがある。ユーザ独自のセキュリティ プロバイダを購入、または記述した場合は、次の操作を実行する。
  • 正しくデプロイおよびコンフィグレーションしていることを確認する。Administration Console に現在デプロイされているセキュリティ プロバイダを確認できる。Administration Console の左ペインで [セキュリティ レルム] を選択後、レルムの名前をクリックして [プロバイダ] タブを選択する。
  • セキュリティ プロバイダをデプロイしたレルムがデフォルトの (アクティブ) レルムであることを確認する。Administration Console でデフォルト セキュリティ レルムを設定する手順については、Administration Console オンライン ヘルプの「デフォルト セキュリティ レルムの変更」を参照。
  • 『WebLogic Server のセキュリティ』の「デフォルト セキュリティ コンフィグレーションのカスタマイズ」を参照。
プロダクション環境では SSL を使用し、デモ用のデジタル証明書を使用しない
重要なデータを危険にさらさないためには、HTTPS を使用してデータ転送を保護する。
WebLogic Server には、開発のみの目的で、デモ用のプライベート キー、デジタル証明書、および信頼性のある認証局が用意されている。WebLogic Server をダウンロードするユーザには、これらのデジタル証明書に対してプライベート キーが付属される。デモ用の ID および信頼を使用しないこと。
Adminstration Console オンライン ヘルプの「サーバ : コンフィグレーション : キーストア」および『WebLogic Server のセキュリティ』の「SSL のコンフィグレーション」を参照。
WebLogic Server で、デジタル証明書にセキュリティ制約が設定されていることを確認する
SSL を使用して通信する場合、WebLogic Server ではデフォルトで、認証局によって定義された基本制御拡張を持たない証明書チェーンのデジタル証明書を拒否する。これにより、デジタル証明書のなりすましから Web サイトを保護する。
この設定を無効にする次のオプションを含むサーバ起動コマンドがないことを確認する。
-Dweblogic.security.SSL.enforceConstraints=false
このオプションの詳細については、『WebLogic Server のセキュリティ』の「SSL 証明書の検証」を参照。
開発環境では、7.0 サービス パック 2 以前のリリースで WebLogic Server が提供したデモ用のデジタル証明書との非互換性に対処するために、セキュリティ制約の設定を無効にしている可能性がある。この機能がプロダクション環境で有効になっていることを確認する。
介在者の攻撃を避けるために、ホスト名検証が有効になっていることを確認する
WebLogic SSL はデフォルトで、接続が確立したホストが対象のパーティまたは認可されたパーティであることを検証する。ただし、サイトで WebLogic Server を実装するときに、ホスト名検証が無効になっている場合がある。
ホスト名検証を有効にするには、Administration Console オンライン ヘルプの「カスタム ホスト名検証のコンフィグレーション」を参照。
『WebLogic Server のセキュリティ』の「ホスト名検証の使い方」を参照。
予備知識 :
ネットワークに配置されたマシンによって、無防備なパーティへのメッセージが取り込まれたり、変更されたり、再送信されたりすると、介在者の攻撃が発生する。接続が確立したホストが対象のパーティまたは認可されたパーティであることを検証すると、介在者の攻撃を避けることができる。SSL クライアントは、SSL サーバのデジタル証明書を使用して、SSL サーバのホスト名を比較することで、接続を検証することができる。WebLogic Server のホスト名検証は、介在者の攻撃から SSL 接続を保護する。
サービス拒否攻撃を防ぐために、外部チャネルに対して要求のサイズおよび時間を制限する
サービス拒否攻撃を防ぐために、WebLogic Server ではメッセージのサイズ、およびメッセージの到着にかかる最大時間を制限できる。デフォルトの設定では、メッセージのサイズは 10MB に、メッセージのタイムアウトは 480 秒に制限される。
以下を推奨。
  • 管理対象サーバが管理サーバからのメッセージを受信できるように内部チャネルに対して要求のサイズを制限する。
  • 外部チャネルに対して要求のサイズおよび時間を制限する。
  • 外部からではなく、内部からのメッセージのみを受信できるように内部チャネルをコンフィグレーションする。
HTTP、T3、および IIOP プロトコルでこれらの設定をコンフィグレーションするには、Administration Console オンライン ヘルプの以下のタスクを参照。
予備知識 :
サービス拒否攻撃が実行されると、Web サイトは動作しているが、使用できない。ハッカーは、1 つまたは複数の重要な Web サイト リソースを使い果たしたり、削除したりする。
侵入者が WebLogic Server インスタンスに対してサービス拒否攻撃を実行する場合、サイズが非常に大きい要求、完了までに時間がかかる要求、完了しない要求を多数使用してサーバを攻撃するため、要求が完了する前にクライアントからのデータの送信が停止する。
サービス拒否攻撃を防ぐために、サーバに許可されるソケット数を設定する
サービス拒否攻撃を防ぐためには、プロセス全体に許可されるソケット数よりも少なくなるように、サーバに許可されるソケット数を制限する。これにより、オペレーティング システムの制限で許可されるファイルの記述子の数を超えないようにできる。
サーバの制限を超えたとしても、管理者は管理ポートを介してサーバにアクセスできる。
MaxOpenSockCount flag を使用してこの設定のコンフィグレーションが可能。
Administration Console オンライン ヘルプの「サーバ : コンフィグレーション : チューニング」を参照。
過負荷状態を回避するために、WebLogic Server をコンフィグレーションする
過負荷状態を回避して十分な処理能力を得られるように WebLogic Server をコンフィグレーションする。サーバにかかる負荷が大きい場合に、管理者が WebLogic Server に接続して問題を修正できるようにする。
システムが過負荷状態のときには、管理チャネルを介した通信は妨げられないため、現在の過負荷がどのような状態であっても管理者は常に接続できる。
負荷が大きい場合、管理者はサーバを管理状態にして、不正なユーザを探し出し、そのユーザが要求によってサーバを過負荷状態にすることを防止する。
過負荷状態を回避するために WebLogic Server をコンフィグレーションするには、過負荷保護の MBean で共有容量の属性を設定する。管理者からではない要求が WebLogic Server で受信されなくなった後は、この属性で選択した設定がしきい値となる。
過負荷状態の詳細については、『WebLogic Server 環境のコンフィグレーション』の「過負荷の回避と管理」を参照。
ユーザ アカウントの攻撃を防ぐために、ユーザのロックアウトおよびログイン時間制限をコンフィグレーションする
WebLogic Security サービスには、デフォルトでユーザ アカウントの辞書攻撃および総当たり攻撃に対するセキュリティが用意されている。アカウントがロックされるまでの無効なログイン試行回数、アカウントがロックされるまでの無効なログイン試行期間、またはユーザ アカウントのロック時間を開発時に変更した場合は、設定内容を確認して、その設定がプロダクション環境に適しているかどうかを検証する必要がある。
Administration Console オンライン ヘルプの「ユーザ アカウントの保護」を参照。
予備知識 :
辞書攻撃および総当たり攻撃では、ハッカーはスクリプトを作成し、「辞書」に登録されているパスワードを使用してログインを試行する。WebLogic Server のユーザ ロックアウトおよびログイン設定により、辞書攻撃および総当たり攻撃からユーザ アカウントを保護することができる。
複数の認証プロバイダを使用する場合は、JAAS 制御フラグを適切に設定する
セキュリティ レルムに複数の認証プロバイダがコンフィグレーションされている場合、JAAS 制御フラグを設定して、プロバイダの順序および優先度をコンフィグレーションする。
Administration Console オンライン ヘルプの「JAAS 制御フラグの設定」を参照。
セキュリティ監査を有効にする
監査は、主要なセキュリティ イベントを WebLogic Server 環境に記録する処理である。WebLogic Security サービスが提供する監査プロバイダを有効にすると、イベントが DomainName\DefaultAuditRecorder.log に記録される。
Administration Console の [セキュリティ レルム|RealmName|プロバイダ|監査] ページで、監査プロバイダを有効にする。
Administration Console オンライン ヘルプの「監査プロバイダのコンフィグレーション」を参照。

注意 : 監査プロバイダを使用すると、少数のイベントのみが記録される場合でも、WebLogic Server のパフォーマンスが低下する場合がある。

監査レコードを定期的に確認し、セキュリティ違反または違反未遂を検出する。度重なるログインの失敗や、予期しないパターンのセキュリティ イベントに注目することで、重大な問題を防げる可能性がある。
独自のカスタム監査プロバイダを開発して、プロバイダの MBean から監査イベントをポストする場合の詳細については、『WebLogic セキュリティ プロバイダの開発』の「ベスト プラクティス : プロバイダの MBean からの監査イベントのポスト」を参照。
デフォルトの WebLogic Server セキュリティ ロールにユーザおよびグループを正しく割り当てたことを確認する
デフォルトでは、すべての WebLogic リソースは、セキュリティ ロールのデフォルト セットに基づくセキュリティ ポリシーによって保護されている。
目的のユーザおよびグループをこれらのデフォルト セキュリティ ロールに割り当てる。
『ロールおよびポリシーによる WebLogic リソースの保護』の「ユーザ、グループ、セキュリティ ロール」を参照。
システム管理者特権を持つ、少なくとも 2 つのユーザ アカウントを作成する
ドメインの作成時に、システム管理者ユーザのうち 1 つを作成する必要がある。他のユーザ (複数可) を作成し、これらを Admin セキュリティ ロールに割り当てる。システム管理者ユーザを作成したら、それらに対して容易に推測できないユニークな名前を付与する。
少なくとも 2 つのシステム管理者のユーザ アカウントがあれば、1 つのユーザが辞書攻撃や総当り攻撃でロックアウトになった場合でも、もう 1 つのユーザでアカウント アクセスを保持できる。

 


アプリケーションのセキュリティ

WebLogic Server ドメイン内の WebLogic リソースのセキュリティ対策業務のほとんどはサーバに関するものですが、個々のアプリケーションに対して行うセキュリティ業務もあります。一部のセキュリティ オプションについては、WebLogic Security サービスを使用すると、サーバまたは個々のアプリケーションのいずれの分担であるのかを判断できます。プロダクション環境にデプロイする各アプリケーションについて、次の表の項目を確認して、そのリソースが保護されていることを確認してください。

表 3-4 アプリケーションのセキュリティ
セキュリティ アクション
説明
どのデプロイメント モデルが Web アプリケーションおよび EJB を保護しているのかを判断する
デフォルトでは、各 Web アプリケーションおよび EJB はデプロイメント記述子 (XML ファイル) を使用して、保護されたリソースおよびそれにアクセスできるセキュリティ ロールを宣言する。
Web アプリケーションおよび EJB デプロイメント記述子でセキュリティを宣言せずに、Administration Console を使用して、Web アプリケーションおよび EJB へのアクセスを保護するセキュリティ ポリシーを設定することができる。この技術により、すべての Web アプリケーションおよび EJB に対するセキュリティを、1 つの場所から集中管理できる。
これらの 2 つの技術を組み合わせ、URL (Web) または EJB リソースの初期デプロイメントで、既存のデプロイメント記述子からセキュリティ コンフィグレーションをコピーするように WebLogic Server をコンフィグレーションできる。これらのセキュリティ コンフィグレーションをコピーした後は、Administration Console を使用して更新できる。
『ロールおよびポリシーによる WebLogic リソースの保護』の「Web アプリケーションおよび EJB リソースの保護のオプション」を参照。
HTML コメント タグではなく、JSP コメント タグを使用する
JSP ファイル内にある、機密データを含むコメントやエンド ユーザを対象としていないコメントは、HTML 構文の <!-- ... --> ではなく、JSP 構文の <%/* ... */%> を使用する。JSP コメントは、HTML コメントとは異なり JSP がコンパイルされると削除されるため、ブラウザに表示されなくなる。
プロダクション マシンには未コンパイルの JSP およびその他のソース コードをインストールしない
常に、ソース コードをプロダクション マシンに置かないようにする必要がある。ソース コードにアクセスすると、侵入者はセキュリティ ホールを発見できる。
JSP をプリコンパイルし、コンパイルされた JSP のみプロダクション マシンにインストールすることを検討する。JSP のプリコンパイルの詳細については、『WebLogic Server Web アプリケーション、サーブレット、JSP の開発』の「JSP のプリコンパイル」を参照。
SSL を使用するようにアプリケーションをコンフィグレーションする
web.xml ファイルの user-data-constraint 要素で transport-guaranteeCONFIDENTIAL に適宜設定する。
『WebLogic Server Web アプリケーション、サーブレット、JSP の開発』の「security-constraint」を参照。
Servlet サーブレットを使用しない
プロダクション環境での Servlet サーブレットの使用はお勧めしない。
代わりに、サーブレットを URI に明示的にマップする。プロダクション環境で Web アプリケーションを使用する前に、すべての Web アプリケーションから、WebLogic サーブレットと Servlet サーブレットの間の既存のマッピングをすべて削除する。
サーブレットのマップの詳細については、『WebLogic Server Web アプリケーション、サーブレット、JSP の開発』の「サーブレットのコンフィグレーション」を参照。
プロダクション環境で、FileServlet をデフォルト サーブレットとして使用しない
プロダクション環境で FileServlet サーブレットをデフォルト サーブレットとして使用することはお勧めしない。
デフォルト サーブレットの設定の詳細については、『WebLogic Server Web アプリケーション、サーブレット、JSP の開発』の「デフォルト サーブレットの設定」を参照。
すべての WebLogic セキュリティ ポリシーを確認する
WebLogic Server 9.0 では、ACL に代わってセキュリティ ポリシーが使用され、WebLogic リソースに誰がアクセスしたのかを判断する。
WebLogic リソースからセキュリティ ポリシーを削除していないこと、およびセキュリティ ロールの割り当てによってユーザに目的のアクセス権を提供していることを確認する。
アプリケーションのセキュリティを検査する
アプリケーションにセキュリティの脆弱性がもたらされるおそれのある典型的な事例がある。これらの事例の多くは、OWASP (Open Web Application Security Project) などのサード パーティの組織によって定義されている (よくある問題のリストについては http://www.owasp.org/documentation/topten を参照)。
Java ではネイティブ コードが Java セキュリティの範囲外に位置付けられているので、特に問題となるのは Java ネイティブ インタフェース (JNI) を使用するコードである。Java ネイティブ コードが逸脱した動作をしても、それを制約できるのはオペレーティング システムだけである。つまり、Java ネイティブ コードは WebLogic Server でできることを何でも行える。この脆弱性は、バッファ オーバーフロー エラーがネイティブ コードでよくある問題であり、任意のコードを実行するために使用できるという事実によってさらに複雑になる。
アプリケーションに信頼性のないコードが含まれる場合は、Java セキュリティ マネージャを有効にする
Java セキュリティ マネージャはパーミッションを定義し JVM 内で実行するクラスに強制的に付与する。多くの場合、脅威モデルでは悪意のあるコードが JVM で実行されていないため、Java セキュリティ マネージャは必要ない。ただし、サード パーティが WebLogic Server を使用し、信頼されていないクラスが実行されている場合、Java セキュリティ マネージャが役立つ場合がある。
サーバ インスタンスで Java セキュリティ マネージャを有効にするには、サーバを起動するときに次の Java オプションを使用する。
-Djava.security.manager
-Djava.security.policy[=]=
filename
『WebLogic Security プログラマーズ ガイド』の「Java セキュリティ マネージャを使用しての WebLogic リソースの保護」を参照。
サーブレットまたは JSP がユーザの供給によるデータを返した場合に、HTML 特殊文字を置換する
ユーザが入力したデータを返す機能により、クロスサイト スクリプトと呼ばれるセキュリティの脆弱性がもたらされる。これは、ユーザのセキュリティ認可を盗用するために利用される可能性がある。クロスサイト スクリプティングの詳細については、http://www.cert.org/tech_tips/malicious_code_mitigation.html の「Understanding Malicious Content Mitigation for Web Developers」(CERT のセキュリティ勧告) を参照。
セキュリティの脆弱性をなくすには、ユーザが供給したデータを返す前に、そのデータをスキャンして HTML 特殊文字を探す。該当する文字が見つかれば、それらを HTML のエンティティまたは文字参照と置き換える。文字を置換することで、ブラウザでユーザ入力によるデータが HTML として実行されることを回避する。
『WebLogic Server Web アプリケーション、サーブレット、JSP の開発』の「JSP でのユーザ入力データのセキュリティ」および「サーブレットでのクライアント入力のセキュリティ」を参照。
JMS リソースに対してセキュリティ チェックが行われていることを確認する
weblogic.jms.securityCheckInterval 属性を 0 に設定して、認可チェックが JMS リソースのすべての Send、Receive、および getEnumeration アクションに対して行われていることを確認する。


ページの先頭       前  次