Sun ONE ロゴ     前へ      目次      索引      次へ     
Sun ONE Application Server 7 セキュリティ管理者ガイド



一般的なセキュリティ対策

認証、暗号化、ACL ファイルなどのセキュリティメカニズムや、J2EE の認証、承認メカニズムを利用するほかに、数多くの手順を手動で実行して、Sun ONE Application Server をより安全にすることができます。

この章には次のトピックがあります。

一般的なセキュリティについて

ネットワークは、さまざまな方法でサーバーやサーバー上の情報にアクセスを試みる外部および内部の攻撃者による侵入の危険にさらされています。Sun ONE Application Server は、サーバーとクライアントの間に安全な接続を提供します。しかし、クライアント側に移った情報のセキュリティを制御したり、サーバーマシン自体や、そのディレクトリとファイルに対するアクセスを制御したりすることはできません。

この限界を意識することは、避ける必要のある状況を理解する上で役立ちます。たとえば、SSL 接続でクレジットカードの番号を入手した場合、この番号はサーバーマシン上の安全なファイルに記録されるのか、SSL 接続が終了した後で、この番号はどのような状態に置かれるのか、管理者は、SSL を介してクライアントが送信した情報の安全に責任があります。

物理アクセスの制限

サーバーをアクセスから物理的に保護する簡単なセキュリティ対策は、見過ごされがちです。サーバーマシンは、適切な権限のある者だけに入室が許される、キーのかかった部屋に設置します。これにより、サーバーマシン自体への侵入を防ぐことができます。

  • ルートパスワード - マシンの管理 (ルート) パスワードを保護することは重要である。その他すべてのパスワードと同様に、特にルートパスワードの場合は、推測の難しいパスワードを選ぶ必要がある
  • アプリケーションサーバーの設定 - Sun ONE Application Server の一部の設定ファイル (server.xml、各種の J2EE アプリケーション記述子 XML ファイル、password.conf など) には、実行時にアプリケーションサーバーからの認証を必要とする多数の外部リソースのパスワード (JDBC データベースや SSL データベースのパスワードなど) が通常のテキストとして記録されている。これらの設定ファイルを、すべて慎重に保護する必要がある
  • デフォルトでは、/application ディレクトリと /config ディレクトリのすべての設定ファイルは、インスタンスの所有者だけが読み込める。パスワードデータを保護するには、これらデフォルトのアクセス制限による上記ディレクトリの保護が重要となる

  • バックアップテープ - サーバー上のデータを保護する場合と同様に、バックアップテープも慎重に保護する必要がある


  • 一部の設定ファイルには、パスワードが通常のテキストとして記録されるため、Sun ONE Application Server ファイルシステムのバックアップをとると、これらのパスワードもバックアップに残されます。バックアップ媒体にアクセスできる者がこのパスワードを入手し、悪用する可能性があります。



  • ポート - マシンで使用していないポートは無効にする。ルーターまたはファイアウォールの設定を利用して、最低限必要なポート以外への侵入接続を防止する。つまり、シェルを取得するには、すでに制限された環境に配置されているサーバーマシンを物理的に使用せざるをえなくする
  • オペレーティングシステムのセキュリティ強化 - インターネット経由でアクセスが可能な本稼働環境のシステムでは、これを要件として考慮する必要がある
  • オペレーティングシステムのセキュリティ強化は、プラットフォームごとに異なるため、このマニュアルでは詳細を説明できない。プラットフォームベンダーへの確認が必要となる。たとえば、Solaris の JASS Toolkit は次のサイトで確認できる。

    http://wwws.sun.com/software/security/jass/

Sun ONE Application Server は、サーバーマシン自体に物理的にアクセスできる者がサーバーチャンネルを悪用しないことを前提としています。サーバーマシンへのアクセスを、適切な権限を持ち、悪意のないユーザーに限定するために、可能な限りの対策をとることが重要です。

ファイアウォールの使用

この節では、ファイアウォールの一般的な設定と、正しく機能させるためのパラメータ設定について説明します。これは、Sun ONE Application Server に関連する一般的な情報です。詳細については、ファイアウォールベンダーのマニュアルを参照してください。

この節では次のトピックについて説明します。

シングルファイアウォール

最も単純で、最も一般的なファイアウォールの設定では、Sun ONE Application Server とインターネットブラウザの間に 1 つのファイアウォールを設置します。Web コンテナへのアクセスに合わせて、HTTP ポート (デフォルトは 80) または HTTPS ポート (デフォルトは 443) あるいはその両方に HTTP 接続できるようにファイアウォールを設定する必要があります。



インターネットから Enterprise JavaBean に直接 RMI/IIOP アクセスができるようにするには、IIOP/RMI リスナーポート (デフォルトは 3700) も開く必要があります。ただし、セキュリティリスクの可能性があるため、このような設定を行わないことを強くお勧めします。



シングルファイアウォールの利点は、その単純さにあります。最大の欠点は、防衛ラインが 1 つに限定されることです。ファイアウォールを通過して侵入された場合、プライベートネットワークに接続している個々のマシンのセキュリティだけが防御の頼りとなります。

次の表は、ファイアウォールが適切に機能するように設定が必要なプロトコルとポートを示しています。左の列は使用するプロトコル、中央の列はポート、右の列は通信の種類をそれぞれ示しています。

   ダブルファイアウォール構成のプロトコルとポート

プロトコル

ファイアウォール

ポート

通信の種類

TCP/IP

 

外部

 

80 (デフォルト)

 

HTTP 要求

 

TCP/IP

 

外部

 

443

 

HTTPS 要求

 

これらのポートについては、『Sun ONE Application Server 管理者ガイド』および管理インタフェース のオンラインヘルプを参照してください。

ダブルファイアウォール - DMZ 設定

DMZ (非武装ゾーン) 設定とも呼ばれる 2 つのファイアウォールによる設定は、プライベートネットワークへのアクセスをパートナー企業や顧客に限定する方法として、多くの企業で一般的に使用され始めています。2段階による保護、および各ファイアウォールと DMZ 内でのアクティビティのアクティブな監視によって、内部ネットワークに侵入しようとしてもほとんどが検知されます。そのため、シングルファイアウォールによる設定よりも高いセキュリティが保証されます。

ダブルファイアウォールでは、次の要素の設定を行います。

  • インターネットブラウザと DMZ 内のルーティング Web サーバーまたはルーティングアプリケーションサーバーとの間に設置される外部ファイアウォール
  • DMZ 内のルーティングサーバーと保護された Sun ONE Application Server の間に設置される内部ファイアウォール
  • 第 2 のファイアウォールの奥の Sun ONE Application Server に要求を送信するプロキシプラグイン

ダブルファイアウォールの設定では、外部ファイアウォールはHTTP と HTTPS のトランザクションを通過させるように設定する必要があります。内部ファイアウォールは、HTTP サーバープラグインと、ファイアウォールの奥の Sun ONE Application Server との通信が可能になるように設定する必要があります。

次の表は、ファイアウォールが適切に機能するように設定する必要のあるプロトコルとポートを示しています。左の列は使用するプロトコル、次の列はプロトコルとポートに適用されるファイアウォール、3 番目の列はポート、右の列は通信の種類をそれぞれ示しています。

   シングルファイアウォール構成のプロトコルとポート 

プロトコル

ファイアウォール

デフォルトポート

通信の種類

TCP/IP

 

外部

 

80

 

ルーティングサーバーへの HTTP 要求

 

TCP/IP

 

外部

 

443

 

ルーティングサーバーへの HTTPS 要求

 

TCP/IP

 

内部

 

80

 

Sun ONE Application Server への HTTP 要求

 

TCP/IP

 

内部

 

443

 

Sun ONE Application Server への HTTPS 要求

 

これらのポートについては、『Sun ONE Application Server 管理者ガイド』および管理インタフェースのオンラインヘルプを参照してください。

トリプルファイアウォール - DMZ とデータベース保護

一部の企業向けの設定では、ネットワーク上にデータベースが存在し、それをファイアウォールで保護しています。3 つのファイアウォールを設定すると、企業データベースに保存されたデータという最も重要な企業資産のセキュリティを最大限に確保することができます。LAN とデータベースの間にファイアウォールを設置することで、内部だけでなく、外部からの侵入も防ぐことができます。

データベースへの接続は、ODBC (Open DataBase Connectivity)、JDBC (Java DataBase Connectivity) などの標準のアクセスメカニズムと、データベースベンダーから提供されるコネクタライブラリを使って行います。データベースへの接続は、その他のアプリケーションへの接続と異なる点はありません。このため、データベース保護層のファイアウォールは、使用する特定のデータベースへのアクセスに必要な標準設定に合わせます。

管理アクセスの制限

リモート設定を使用する場合は、アクセス制御を設定し、管理アクセスを少数のユーザーおよびコンピュータに限定する必要があります。

マスター管理サーバーの暗号化は、常にオンにしておく必要があります。管理に SSL 接続を使わない場合は、安全ではないネットワークを通じてリモートサーバーの管理作業を実行するときに、特別な注意を払う必要があります。管理パスワードが盗まれ、サーバーが再設定される可能性があります。

管理サーバーを使って、LDAP サーバーまたはローカルディレクトリの情報にエンドユーザーがアクセスできるようにする場合は、2 つの管理サーバーの利用とクラスタの管理を検討してください。SSL が有効な管理サーバーはマスターサーバーとして機能し、もう一方の管理サーバーはエンドユーザーがアクセスするために利用できます。詳細については、「LDAP との SSL 通信の有効化」を参照してください。

クラスタ管理の導入方法については、クラスタリングに関する Sun のマニュアルを参照してください。

パスワードの管理

管理パスワード、秘密鍵パスワード、データベースパスワードなど、サーバーには多くのパスワードがあります。コンピュータ上のすべてのサーバーの設定に利用可能な管理パスワードは、その中でも最も重要なパスワードです。次に重要なパスワードは、秘密鍵のパスワードです。秘密鍵と秘密鍵のパスワードが他者に知られると、使用しているサーバーに似せた偽のサーバーを作成したり、サーバーを出入りする通信内容を傍受または変更したりすることが可能になります。

良いパスワードは、自分が思い出せて、他者が想像できないパスワードです。たとえば、自分の子供が誕生後 12 か月であれば、「My Child is 12 months old!」から MCi12!mo を思い出すことができます。悪いパスワードは、子供の名前や誕生日を使ったパスワードです。

次の項では、パスワードについて次の追加情報を提供します。

解読されにくいパスワードの作成

解読されにくいパスワードを作成するための簡単なガイドラインを次に示します。

このガイドラインのすべてに従う必要はありませんが、多くの項目を満たした方がパスワードは解読されにくくなります。

  • パスワードは 6 〜 14 文字とする (システムの文字長制限に注意する)
  • 「*」、「"」、空白文字などの使用不可能文字を使わない
  • 言語の種類にかかわらず、意味のある言葉を使わない
  • 「E」と「3」、「L」と「1」のように、代用が一般的な文字で置き換えない
  • できるだけ多くの種類の文字を混在させる
    • 大文字
    • 小文字
    • 数字
    • 記号

スーパーユーザーのパスワードの管理

管理サーバーにスーパーユーザー権限を設定できます。この場合、スーパーユーサーとは、サーバーにアクセスして設定の一部または全部を変更できるユーザーを意味します (システムのスーパーユーザーやルートとは異なります)。この設定は、スーパーユーザーのアカウントだけに影響します。つまり、管理サーバーが分散管理を採用している場合は、有効化する管理ユーザー用に追加のアクセス制御を設定する必要があります。

スーパーユーザーの名前とパスワードは、intsall_dir/domains/domain_dir/admin-server/config/admpw というファイルに記録されます。ユーザー名を忘れたときは、このファイルを表示して実際の名前を確認できますが、パスワードは暗号化されているので読めません。このファイルの書式は、username:password です。

パスワードを忘れたときは、admpw ファイルを開き、暗号化されたパスワードを削除します。



警告

admpw ファイルは編集可能なので、サーバーマシンを安全な場所に設置し、ファイルシステムへのアクセスを制限することが重要です。

  • UNIX/Linux システムでは、ルートまたは管理サーバーデーモンを実行するシステムユーザーだけが書き込みを許可されるように、ファイルの所有権を変更できます。デフォルトでは、ディレクトリや他の機密ファイルを保護するインスタンスの所有者だけが /config ディレクトリの内容を読み込めます。このアクセス権が変更されないように注意してください。
  • Windows システムでは、ファイルの所有権を管理サーバーが使用するユーザーアカウントに制限してください。


管理サーバーのスーパーユーザー権限を設定するには、管理インタフェースから次の手順を実行します。

  1. 「管理サーバー」にアクセスし、「セキュリティ」を選択します。次の画面が表示されます。

   「スーパーユーザーアクセス制御」ページ
VbgAX[p[[U[ANZXy[WB

  1. 「アクセス制御」を選択します。
  2. 「スーパーユーザーアクセス制御」ページが表示されます。

  3. 管理サーバーへのスーパーユーザーとしてのアクセスが許可されるホストの名前を入力します。
  4. 管理サーバーへのスーパーユーザーとしてのアクセスが許可されるホストの IP アドレスを入力します。
  5. 認証ユーザー名を入力します。
  6. 認証パスワードを入力します。
  7. パスワードの変更時に注意すべきガイドラインについては、を参照してください。

  8. 認証パスワードをもう一度入力します。
  9. 「了解」をクリックします。
  10. 左ペインで「アプリケーションサーバーインスタンス」を選択して自分のサーバーインスタンスにアクセスし、「変更の適用」をクリックします。
  11. サーバーを停止し、再起動して変更を適用します。

パスワードまたは PIN の変更

信頼データベースおよびキーペアファイルのパスワードまたは PIN を定期的に変更することをお勧めします。SSL が有効な管理サーバーでは、サーバーの起動時にこのパスワードが必要です。このパスワードの変更は、ローカルマシンで行う必要があります。詳細については、「信頼データベースのパスワードの変更」を参照してください。

キーペアファイルは、確実に保護されている必要があります。管理サーバーは、キーペアファイルをインスタンスの /config ディレクトリに保存します。デフォルトでは、インスタンスの所有者だけが /config ディレクトリ内のファイルを読み込むことができます。このアクセス権を監視し、バックアップスクリプトなどのイベントによってこのファイルへのアクセス権が後から変更されないように注意する必要があります。

また、ファイルがバックアップテープに残されていたり、他者がアクセスできるその他の場所に保存されていないかどうかを確認することも重要です。このような場合は、サーバー上のデータの保護と同様に、バックアップテープを慎重に保護する必要があります。

password.conf ファイルの使用

デフォルトでは、Sun ONE Application Server の起動時に SSL キーデータベースのパスワードが要求されます。Sun ONE Application Server を自動で再起動させるには、このパスワードを password.conf ファイルに記録しておく必要があります。



password.conf ファイルは、システムが適切に保護され、このファイルとキーデータベースが危険にさらされていない場合にだけ使用してください。



  • UNIX 環境 - 起動前にサーバーがパスワードを要求するため、通常は /etc/rc.local ファイルや /etc/inittab ファイルを使って SSL が有効なサーバーを起動することはできません。パスワードをプレーンテキストでファイルに保存すれば、SSL が有効なサーバーを自動的に起動できますが、この方法はお勧めできません。サーバーの password.conf ファイルの所有権は、ルートまたはサーバーをインストールしたユーザーにあり、所有者だけが読み込み権および書き込み権を持つようにする必要があります。


  • SSL が有効なサーバーのパスワードを password.conf ファイルに残すことは、セキュリティ上大きなリスクとなります。ファイルにアクセスできるユーザーなら誰でも、SSL が有効なサーバーのパスワードにアクセスできます。SSL が有効なサーバーのパスワードを password.conf ファイルに保存する前に、セキュリティ上の危険性を考慮しておく必要があります。



  • Windows 環境 - ファイルシステムが NTFS (New Technology File System) であれば、password.conf ファイルを使用しない場合でも、このファイルが含まれるディレクトリへのアクセスを制限して保護する必要があります。このディレクトリの読み込み権および書き込み権は、管理サーバーのユーザーと Sun ONE Application Server のユーザーだけに設定する必要があります。ディレクトリを保護することで、他者が偽の password.conf ファイルを作成することを防止できます。


  • Windows 環境の FAT (File Allocation Table) ファイルシステムでは、アクセスを制限してディレクトリやファイルを保護することはできません。



セキュリティ上の危険性が問題にならない場合は、次の手順に従って SSL が有効なサーバーを自動的に起動します。

  1. SSL が有効なことを確認します。
  2. サーバーインスタンスの config サブディレクトリに password.conf ファイルを新規作成します。
    • サーバーに付属している内部 PKCS11 ソフトウェア暗号化モジュールを使用している場合には、次の情報を入力します。
    • internal:your_password

    • ハードウェア暗号化用またはハードウェアアクセラレータ用の別の PKCS11 モジュールを使っている場合は、PKCS11 モジュールの名前に続けてパスワードを指定します。たとえば、次のように入力します。
    • nFast:your_password

  3. サーバーを停止後、再起動して新しい設定を適用します。

サーバーでの別アプリケーション実行の制限

サーバー上で実行している他のプログラムの弱点を利用して Sun ONE Application Server のセキュリティをかいくぐることができます。これを避けるには、サーバー上で実行している不要なプログラムやサービスを無効にします。

  • UNIX 環境 - inittab スクリプトと rc スクリプトによって起動されるプロセスを慎重に選択する
    • サーバーマシンから telnet または rlogin を実行しない
    • サーバーマシン上に rdist を置かない。rdist の目的はファイルの配布であるため、侵入者がこれを使ってサーバーマシン上のファイルを不当に更新する可能性がある

  • Windows 環境 - どのドライブおよびディレクトリを他のマシンと共有するかを慎重に選択する。また、アカウントやゲスト権限を持つユーザーも慎重に選択する必要がある

管理者自身または他のユーザーがサーバーにインストールするプログラムにも注意が必要です。認識しているかどうかに関わらず、他のユーザーがインストールしたプログラムにセキュリティホールがあるかもしれません。最悪の場合には、セキュリティを無効にすることを目的とした悪質なプログラムを何者かがインストールすることも考えられます。プログラムをサーバーにインストールする場合は、事前に注意深く調べる必要があります。

保護されていないサーバーのセキュリティ

保護されているサーバーと保護されていないサーバーの両方を維持する場合は、別のマシン上の保護されていないサーバーを保護されているサーバーから操作する必要があります。

リソースに限りがあり、保護されているサーバーと同じマシンで保護されていないサーバーを実行する必要がある場合は、次のように対応します。

  • 別のポート番号 - 保護されているサーバーと保護されていないサーバーに別のポート番号を割り当てる。登録されているデフォルトのポート番号は次のとおり
    • 443: 保護されているサーバー
    • 80: 保護されていないサーバー

  • UNIX 環境 - chroot ツールを使ってドキュメントルートディレクトリをリダイレクトする
  • UNIX の chroot コマンドを使うことで、第 2 のルートディレクトリを作成し、サーバーを特定のディレクトリに制限できる。このコマンドの使用に関するガイドラインは、マニュアルページを参照

管理インタフェースで次の手順を実行することで、特定の仮想サーバーの chroot ディレクトリを指定できます。

  1. 「アプリケーションサーバーインスタンス」にアクセスし、左のペインでサーバーインスタンスを選択します。
  2. 「HTTP サーバー」の「仮想サーバー」を選択します。
  3. chroot ディレクトリを指定する仮想サーバーを選択します。
  4. 「一般」タブのページが表示されます。

  5. 「ディレクトリ変更」フィールドが表示されるまでページをスクロールします。
  6. Chroot ディレクトリの完全パスを入力します。
  7. 「保存」をクリックします。
  8. 左ペインで「アプリケーションサーバーインスタンス」を選択して自分のサーバーインスタンスにアクセスし、「変更の適用」をクリックします。
  9. サーバーを停止し、再起動して変更を適用します。

前へ      目次      索引      次へ     
Copyright 2002 Sun Microsystems, Inc. All rights reserved.