Sun ONE Application Server 7, Enterprise Edition セキュリティ管理者ガイド |
第 2 章
一般的なセキュリティ対策認証、暗号化、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 データベースのパスワードなど) が通常のテキストとして記録されている。これらの設定ファイルを、すべて慎重に保護する必要がある
- バックアップテープ - サーバー上のデータを保護する場合と同様に、バックアップテープも慎重に保護する必要がある
注
一部の設定ファイルには、パスワードが通常のテキストとして記録されるため、Sun ONE Application Server ファイルシステムのバックアップをとると、これらのパスワードもバックアップに残されます。バックアップ媒体にアクセスできる者がこのパスワードを入手し、悪用する可能性があります。
- ポート - マシンで使用していないポートは無効にする。ルーターまたはファイアウォールの設定を利用して、最低限必要なポート以外への侵入接続を防止する。つまり、シェルを取得するには、すでに制限された環境に配置されているサーバーマシンを物理的に使用せざるをえなくする
- オペレーティングシステムのセキュリティ強化 - インターネット経由でアクセスが可能な本稼働環境のシステムでは、これを要件として考慮する必要がある
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 つに限定されることです。ファイアウォールを通過して侵入された場合、プライベートネットワークに接続している個々のマシンのセキュリティだけが防御の頼りとなります。
次の表は、ファイアウォールが適切に機能するように設定する必要のあるプロトコルとポートを示しています。左の列は使用するプロトコル、中央の列はポート、右の列は通信の種類をそれぞれ示しています。
表 2-1 ダブルファイアウォール構成のプロトコルとポート
プロトコル
ファイアウォール
ポート
通信の種類
TCP/IP
外部
80 (デフォルト)
HTTP 要求
TCP/IP
外部
443
HTTPS 要求
これらのポートについては、『Sun ONE Application Server 管理者ガイド』および管理インタフェースのオンラインヘルプを参照してください。
ダブルファイアウォール - DMZ 設定
DMZ (非武装ゾーン) 設定とも呼ばれる 2 つのファイアウォールによる設定は、プライベートネットワークへのアクセスをパートナー企業や顧客に限定する方法として、多くの企業で一般的に使用され始めています。2 段階による保護、および各ファイアウォールと DMZ 内でのアクティビティのアクティブな監視によって、内部ネットワークに侵入しようとしてもほとんどが検知されます。そのため、シングルファイアウォールによる設定よりも高いセキュリティが保証されます。
ダブルファイアウォールでは、次の要素の設定を行います。
ダブルファイアウォールの設定では、外部ファイアウォールはHTTP と HTTPS のトランザクションを通過させるように設定する必要があります。内部ファイアウォールは、HTTP サーバープラグインと、ファイアウォールの奥の Sun ONE Application Server との通信が可能になるように設定する必要があります。
次の表は、ファイアウォールが適切に機能するように設定する必要のあるプロトコルとポートを示しています。左の列は使用するプロトコル、次の列はプロトコルとポートに適用されるファイアウォール、3 番目の列はポート、右の列は通信の種類をそれぞれ示しています。
これらのポートについては、『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 を思い出すことができます。悪いパスワードは、子供の名前や誕生日を使ったパスワードです。
次の項では、パスワードについて次の追加情報を提供します。
解読されにくいパスワードの作成
解読されにくいパスワードを作成するための簡単なガイドラインを次に示します。
このガイドラインのすべてに従う必要はありませんが、多くの項目を満たした方がパスワードは解読されにくくなります。
スーパーユーザーのパスワードの管理
管理サーバーにスーパーユーザー権限を設定できます。この場合、スーパーユーサーとは、サーバーにアクセスして設定の一部または全部を変更できるユーザーを意味します (システムのスーパーユーザーやルートとは異なります)。この設定は、スーパーユーザーのアカウントだけに影響します。つまり、管理サーバーが分散管理を採用している場合は、有効化する管理ユーザー用に追加のアクセス制御を設定する必要があります。
スーパーユーザーの名前とパスワードは、intsall_dir/domains/domain_dir/admin-server/config/admpw というファイルに記録されます。ユーザー名を忘れたときは、このファイルを表示して実際の名前を確認できますが、パスワードは暗号化されているので読めません。このファイルの書式は、username:password です。
パスワードを忘れたときは、admpw ファイルを開き、暗号化されたパスワードを削除します。
管理サーバーのスーパーユーザー権限を設定するには、管理インタフェースから次の手順を実行します。
- 「Admin Server (管理サーバー)」にアクセスし、「Security (セキュリティ)」を選択します。次の画面が表示されます。
図 2-1 「Superuser Access Control (スーパーユーザーアクセス制御)」ページ
- 「Access Control (アクセス制御)」を選択します。
「Superuser Access Control (スーパーユーザーアクセス制御)」ページが表示されます。
- 管理サーバーへのスーパーユーザーとしてのアクセスが許可されるホストの名前を入力します。
- 管理サーバーへのスーパーユーザーとしてのアクセスが許可されるホストの IP アドレスを入力します。
- 認証ユーザー名を入力します。
- 認証パスワードを入力します。
パスワードの変更時に注意すべきガイドラインについては、を参照してください。
- 認証パスワードをもう一度入力します。
- 「OK (了解)」をクリックします。
- 左のペインで「App Server Instances (アプリケーションサーバーインスタンス)」にアクセスしてサーバーインスタンスを選択し、「Apply Changes (変更を適用)」をクリックします。
- サーバーを停止し、再起動して変更を適用します。
パスワードまたは PIN の変更
信頼データベースおよびキーペアファイルのパスワードまたは PIN を定期的に変更することをお勧めします。SSL が有効な管理サーバーでは、サーバーの起動時にこのパスワードが必要です。このパスワードの変更は、ローカルマシンで行う必要があります。手順については、「信頼データベースのパスワードの変更」を参照してください。
キーペアファイルは、確実に保護されている必要があります。管理サーバーは、キーペアファイルをインスタンスの /config ディレクトリに保存します。デフォルトでは、インスタンスの所有者だけが /config ディレクトリ内のファイルを読み込むことができます。このアクセス権を監視し、バックアップスクリプトなどのイベントによってこのファイルへのアクセス権が後から変更されないように注意する必要があります。
また、ファイルがバックアップテープに残されていたり、他者がアクセスできるその他の場所に保存されていないかどうかを確認することも重要です。このような場合は、サーバー上のデータの保護と同様に、バックアップテープを慎重に保護する必要があります。
password.conf ファイルの使用
デフォルトでは、Sun ONE Application Server の起動時に SSL キーデータベースのパスワードが要求されます。Sun ONE Application Server を自動で再起動させるには、このパスワードを 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 ファイルを作成することを防止できます。
セキュリティ上の危険性が問題にならない場合は、次の手順に従って SSL が有効なサーバーを自動的に起動します。
サーバーでの別アプリケーション実行の制限サーバー上で実行している他のプログラムの弱点を利用して Sun ONE Application Server のセキュリティをかいくぐることができます。これを避けるには、サーバー上で実行している不要なプログラムやサービスを無効にします。
管理者自身または他のユーザーがサーバーにインストールするプログラムにも注意が必要です。認識しているかどうかに関わらず、他のユーザーがインストールしたプログラムにセキュリティホールがあるかもしれません。最悪の場合には、セキュリティを無効にすることを目的とした悪質なプログラムを何者かがインストールすることも考えられます。プログラムをサーバーにインストールする場合は、事前に注意深く調べる必要があります。
保護されていないサーバーのセキュリティ保護されているサーバーと保護されていないサーバーの両方を維持する場合は、別のマシン上の保護されていないサーバーを保護されているサーバーから操作する必要があります。
リソースに限りがあり、保護されているサーバーと同じマシンで保護されていないサーバーを実行する必要がある場合は、次のように対応します。
管理インタフェースで次の手順を実行することで、特定の仮想サーバーの chroot ディレクトリを指定できます。
- 「App Server Instances (アプリケーションサーバーインスタンス)」にアクセスし、左のペインでサーバーインスタンスを選択します。
- 「HTTP Server (HTTP サーバー)」の「Virtual Servers (仮想サーバー)」を選択します。
- chroot ディレクトリを指定する仮想サーバーを選択します。
「General (一般)」タブのページが表示されます。
- 「Chroot (ディレクトリ変更)」フィールドが表示されるまでページをスクロールします。
- Chroot ディレクトリのフルパス名を入力します。
- 「Save (保存)」をクリックします。
- 左のペインで「App Server Instances (アプリケーションサーバーインスタンス)」にアクセスしてサーバーインスタンスを選択し、「Apply Changes (変更を適用)」をクリックします。
- サーバーを停止し、再起動して変更を適用します。