第3章 |
|
この章では、ドライバの使用、追加、変更、および削除について説明します。この章で取り上げるドライバは、Solaris OS システムを強化、最小化、および監査するために、Solaris Security Toolkit ソフトウェアで使用されるドライバです。一連のドライバと関連ファイルによって、セキュリティープロファイルが構成されます。
Solaris Security Toolkit ソフトウェアのデフォルトのドライバ (secure.driver) は、OS の動作を必要とせずに、ネットワークサービスを含むすべてのサービスを無効にします。使用環境によっては、この処理が適していない場合もあります。使用しているシステムに必要なセキュリティー変更を確認してから、この章や関連する章に記載されている情報を使用して変更を行ってください。
セキュリティー強化と監査を行う際のコアの処理は、driver.run スクリプト内の関数で定義されます。セキュリティー強化と監査を行う場合、使用するドライバは、セキュリティープロファイルが構成された後で、driver.run スクリプトを呼び出します。つまり、ドライバにより driver.init ファイルが呼び出されて、JASS_FILES 環境変数と JASS_SCRIPTS 環境変数が定義された後で、driver.run スクリプト関数が呼び出されます。強化と監査の両方の操作で JASS_FILES 環境変数と JASS_SCRIPTS 環境変数に含まれている各エントリを処理するのが、このスクリプトです。
4. ファイルシステムを JumpStart クライアントにマウントする (JumpStart モードのみ)
5. JASS_FILES 環境変数で指定されているファイルをコピーまたは監査する (オプション)
6. JASS_SCRIPTS 環境変数で指定されているスクリプトを実行する (オプション)
8. ファイルシステムを JumpStart クライアントからアンマウントする (JumpStart モードのみ)
driver.run スクリプトで行う最初のタスクは、機能ファイルの読み込みです。この段階で機能ファイルを読み込むことで、各ファイルの機能を driver.run スクリプトが利用できるようになります。また、実行されるすべてのスクリプトが共通関数を利用できるようにもなります。このタスク実行時に読み込まれる機能ファイルは、以下のとおりです。
Solaris Security Toolkit ソフトウェアでは、コアの環境変数が設定されているかどうかのチェックを行います。このチェックで、ソフトウェアが正常に実行されることを確認します。いずれかのチェックに失敗すると、エラーが報告され、ソフトウェアが終了します。チェックでは、以下の確認が行われます。
現在のプロファイルを続いて処理する前に、user.run ファイルが存在する場合は、このファイルを読み込みます。このファイルには、Solaris Security Toolkit ソフトウェアのデフォルトの関数に優先する関数を含む、サイト固有または組織固有の関数がすべて格納されています。このファイルはデフォルトでは存在していないため、この機能が必要な場合は、ユーザーが手動で作成する必要があります。
この機能を利用して、新しい関数を実装したり、使用環境に合うように既存の関数をカスタマイズすると、Solaris Security Toolkit ソフトウェアの機能を拡張または強化することができます。この user.run ファイルは、関数用のファイルであることを除けば、環境変数用のファイルである user.init ファイルとほぼ同じです。
|
注 - ローカルのブート可能 CD-ROM を使用して JumpStart をインストールする場合は、ローカルメディアからディレクトリにアクセスするようにこの機能を変更してください。ネットワークファイルシステム (NFS) を使用して、リモートサーバーから Patches ディレクトリと Packages ディレクトリにアクセスする場合は、変更する必要はありません。 |
JumpStart モードでは、driver.run スクリプトは mount_filesystems という内部サブルーチンを呼び出します。このルーチンは、JumpStart クライアント上に次のディレクトリをマウントします。
その他のファイルシステムのマウントポイントが必要な場合は、user.run スクリプトを使用して必要なマウントポイントを実装します。このルーチンは JumpStart モード固有のものなので、スタンドアロンモードでは実行されません。
共通関数の読み込み、環境変数の初期化、ファイルシステムのマウント (必要な場合) を行って Solaris Security Toolkit ソフトウェアの基盤が確立したら、すぐに実行することができます。セキュリティー強化と監査のどちらを実行するかにかかわらず、Solaris Security Toolkit ソフトウェアは、対象システムでコピーや検証が行われるファイルテンプレートの詳細リストを作成します。このリストは、JASS_FILES グローバル環境変数にあるエントリを、JASS_FILES_x_x OS バージョン環境変数 (たとえば、Solaris 8 OS では JASS_FILES_5_8) にあるエントリと連結して作成します。グローバル環境変数と OS 環境変数はいずれもオプションであり、一方だけを定義したり、両方とも定義しなくてもかまいません。連結されたリストは、JASS_FILES 環境変数に格納されます。この変数についての詳細は、第 6 章 の JASS_FILESを参照してください。
作成されたリストに少なくとも 1 つのエントリが含まれている場合、JASS_SCRIPTS リストの先頭に install-templates.fin という特殊な終了スクリプトが追加されます。強化処理では、このスクリプトが、作成されたリストの内容を受け取って対象システムにコピーした後で、その他の終了スクリプトが実行されます。監査処理では、install-templates.aud スクリプトが、正常にファイルが対象システムにコピーされたことをチェックします。
Solaris Security Toolkit ソフトウェアは、JASS_SCRIPTS 環境変数で定義されたスクリプトを実行します。セキュリティー強化と監査のどちらを実行するかにかかわらず、Solaris Security Toolkit ソフトウェアは、対象システムでコピーや検証が行われるファイルテンプレートの詳細リストを作成します。このリストは、JASS_SCRIPTS グローバル環境変数にあるエントリを、JASS_SCRIPTS_x_x OS バージョン環境変数 (たとえば、Solaris 8 OS では JASS_SCRIPTS_5_8) にあるエントリと連結して作成します。グローバル環境変数と OS 環境変数はいずれもオプションであり、一方だけを定義したり、両方とも定義しなくてもかまいません。連結されたリストは、JASS_SCRIPTS 環境変数に格納されます。この変数についての詳細は、第 6 章 の JASS_FINISH_DIRを参照してください。
強化処理では、すべての終了スクリプトが順に実行されます。終了スクリプトは、JASS_FINISH_DIR ディレクトリに格納されています。
監査処理では、最初にいくつかの追加処理を実行する必要があります。JASS_SCRIPTS で定義されているスクリプトで監査を実行する前に、名前を終了スクリプト名から監査スクリプト名に変更してください。ファイル名の拡張子が自動的に .fin から .aud に変更されます。また Solaris Security Toolkit ソフトウェアでは、監査スクリプトが JASS_AUDIT_DIR に格納されていることを前提としています。ファイル名とディレクトリの変更が行われた後で、すべての監査スクリプトが順に実行されます。
強化処理では、ドライバに関する操作がすべて完了すると、ドライバの合計スコアが計算されます。このスコアはドライバの状態を示し、複数のドライバが呼び出されているときは総合計の中に含まれます。使用しているドライバが 1 つだけの場合は、この合計と総合計は同じ値です。すべてのチェックに合格した場合、スコアはゼロです。チェックに失敗した場合、スコアは失敗したチェックの個数を示す数値になります。
JumpStart モードで操作している場合、ドライバ関連の操作がすべて終了すると、ファイルシステムを JumpStart クライアントにマウントするの処理時にマウントされたファイルシステムがアンマウントされます。通常、この機能は JumpStart クライアントのインストールの終了を示します。この時点で、呼び出し元ドライバに制御が戻ります。ドライバは、終了して処理を終わりにするか、または別のドライバを呼び出して新しい処理を開始することができます。
組織のポリシー、基準、アプリケーション要件は、たとえわずかでも各組織で異なるため、Solaris Security Toolkit ドライバの変更は最も頻繁に行われるタスクの 1 つです。このため、Solaris Security Toolkit ソフトウェアでは、ドライバが実行するタスクをカスタマイズする機能をサポートしています。
システムやアプリケーションで、Solaris Security Toolkit ソフトウェアで自動的に無効にされる一部のサービスとデーモンを必要とする場合や、アクティブでないスクリプトを有効にする場合は、その処理を行ってから Solaris Security Toolkit ソフトウェアを実行してください。
同様に、有効にしておかなければならないサービスが Solaris Security Toolkit ソフトウェアによって無効にされる場合は、Solaris Security Toolkit ソフトウェアで該当するドライバを実行する前に、このデフォルト設定を無効にします。ソフトウェアの構成を確認して、必要なカスタマイズをすべて行ってから、システムの構成を変更するようにしてください。この方法の方が、元に戻さなければならない変更を検出して、別の構成で再適用するよりは効率的です。
Solaris Security Toolkit ソフトウェアを使用してサービスを無効にする主な方法には、次の 2 つの方法があります。1 つめの方法は、ドライバを変更して、JASS_SCRIPTS パラメータで定義されている実行してはならない終了スクリプトをコメントアウトまたは削除する方法です。この方法は、最も一般的に使用されるドライバのカスタマイズ方法の 1 つです。
たとえば、使用環境で NFS ベースのサービスが必要な場合は、次のようにすると、これらのサービスを有効にしておくことができます。hardening.driver のローカルコピーにある disable-nfs-server.fin スクリプトと disable-rpc.fin スクリプトの先頭に # 記号を付加して、これらのスクリプトをコメントアウトします。あるいは、これらのスクリプトをファイルから完全に削除することもできます。一般的な規則として、コメントアウトまたは削除したエントリは、以下のような情報とともにファイルヘッダーに記載しておくことをお勧めします。
上記の情報を記載しておくと、特にソフトウェアの新バージョン用にドライバを更新しなければならない場合など、長期にわたるドライバの維持管理に役立ちます。
|
注 - Solaris Security Toolkit ソフトウェアとともに配布されたドライバを直接変更しないでください。Solaris Security Toolkit ソフトウェアを削除またはアップグレードしたときに、ドライバの変更が影響を受けないように、必ずドライバのローカルコピーに対して変更を行ってください。 |
サービスを無効にするもう 1 つの方法は、環境変数をカスタマイズする方法です。通常、このカスタマイズは、ドライバまたは user.init ファイルのいずれかで行います。user.init ファイルでの変更は、その変更がグローバルなもので、すべてのドライバで使用される場合にのみ行ってください。そうでない場合は、変更を必要とするドライバに限定して変更を行ってください。
たとえば、inetd デーモンによって開始されるサービスを有効または無効にするには、JASS_SVCS_ENABLE 環境変数と JASS_SVCS_DISABLE 環境変数を使用します。変数の使用についての詳細は、第 6 章を参照してください。また、第 6 章の 変数のカスタマイズと割り当ても参照してください。
|
元のファイルが更新されたときに、カスタマイズしたファイルが更新された新しいファイルで上書きされないようにドライバをカスタマイズするには、次の手順を実行します。なお、ソフトウェアのアップグレードや削除を行うときに、カスタマイズしたファイルが誤って削除されないようにするときにも、この手順を使用します。
1. カスタマイズするドライバとその関連ファイルをコピーします。
たとえば、組織固有の secure.driver を作成する場合、Drivers ディレクトリに格納されている次のドライバをコピーします。
config.driver と hardening.driver は secure.driver から呼び出されるドライバであるため、この 2 つのドライバもコピーする必要があります。カスタマイズしているドライバが他のドライバを呼び出したり使用したりしない場合は、そのドライバのみコピーします。
2. コピーしたファイルを、カスタムドライバとして識別される名前に変更します。
たとえば、自社名を使用する場合は、次のようなファイル名になります。
詳細については、『Solaris Security Toolkit 4.1 管理マニュアル』の第 1 章「Solaris Security Toolkit ソフトウェアの構成およびカスタマイズ」を参照してください。
3. カスタムの prefix-secure.driver を、新しい関連ファイル prefix-config.driver と prefix-hardening.driver を呼び出すように変更します。
この手順は、新しい prefix-secure.driver から元の config.driver と hardening.driver が呼び出されないようにするときに必要となります。カスタマイズしているドライバが他のドライバを呼び出したり使用したりしないときは、この手順は必要ありません。
4. ドライバからファイルをコピー、追加、または削除するには、JASS_FILES 環境変数を変更します。
この変数についての詳細は、第 6 章を参照してください。
次のコーディング例は、Drivers/config.driver ファイルの例です。このセキュリティープロファイルは、プラットフォーム上で基本の構成を行います。このセキュリティープロファイルには、ファイルテンプレートと終了スクリプトの明確な使用方法例が示されています。
次の例では、driver.run 関数が呼び出されたときに、JASS_HOME_DIR/Files/ ディレクトリから /.cshrc ファイルと /.profile ファイルを対象プラットフォームにコピーするようドライバを構成しています。
a. いずれかのファイルの内容を変更するには、JASS_HOME_DIR/Files/ ディレクトリに格納されているファイルのコピーを変更します。
b. ファイルテンプレートを追加または削除する必要があるだけならば、そのように JASS_FILES 変数を変更します。
c. Solaris OS バージョンを定義する場合は、JASS_FILES 変数の末尾にオペレーティングシステムのメジャーおよびマイナーバージョン番号を下線で区切って付加します。
Solaris Security Toolkit ソフトウェアでは、オペレーティングシステムのバージョン固有のファイルリストをサポートしています。定義されている Solaris OS バージョンで Solaris Security Toolkit ソフトウェアが実行されている場合にのみ、これらのファイルリストが一般ファイルリストの内容に追加されます。たとえば、Solaris 9 OS は次のように指定します。
5. ドライバからスクリプトを追加または削除するには、JASS_SCRIPTS 変数を変更します。
この変数についての詳細は、第 6 章を参照してください。
6. 他のドライバを呼び出すには、ネストまたは階層セキュリティープロファイルを作成します。
大部分のプラットフォームに共通する基準を設定し、かつプラットフォームまたはアプリケーション間の相違を維持する場合に、この手法は便利です。
コード例 3-1 は secure.driver ファイルのコーディング例です。このファイルは、構成ドライバおよび強化ドライバの両方を呼び出すラッパーとして使用されます。この場合は、セキュリティープロファイルの実際の機能を実装しています。これは頻繁に使用されるモデルですが、必ずしもこのとおりである必要はありません。たとえ実際に (コード例 3-1 の場合のように) 使用されなくても、各ドライバは JASS_FILES と JASS_SCRIPTS の規則をサポートします。
DIR="`/bin/dirname $0`" export DIR . ${DIR}/driver.init . ${DIR}/config.driver . ${DIR}/hardening.driver |
もう少し複雑な構成を、コード例 3-2 に示します。この例では、ドライバは他の基本的なドライバを呼び出すだけでなく、独自の機能も実装しています。この例では、この新しいセキュリティープロファイルで /etc/named.conf ファイルをインストールし、config.driver ドライバと hardening.driver ドライバを実行した後で、configure-dns.fin スクリプトを実行します。
|
注 - コード例 3-2 では、さまざまなレベルの機能と適用範囲を提供するように、ドライバをネストさせる方法の一例を示しています。/etc/named.conf と configure-dns.fin は、コーディング例としてのみ表示されています。デフォルトでは、これらのファイルは Solaris Security Toolkit ソフトウェアで提供されていません。 |
7. ドライバのカスタマイズが終了したら、そのドライバを Drivers ディレクトリに保存します。
この節では、デフォルトで Drivers ディレクトリに用意されている、以下のドライバについて説明します。
Solaris Security Toolkit ソフトウェアには、これら標準のドライバの他に、製品固有のドライバも含まれています。製品固有のドライバのリストについては、製品固有のドライバの使用を参照してください。
このドライバは、secure.driver から呼び出され、そのドライバに関連するタスクを実行します。関連する関数を 1 つのドライバにまとめて共通関数を作成し、その共通関数を構成単位として使用すると、より複雑な構成を構築することができます。次の例では、類似したタスクを 1 つの独自のドライバに分離することで、異なるセキュリティー要件を持つ複数のマシンで 1 つの基本 Solaris OS 構成ドライバを共有できるようにしています。
config.driver の出力例を コード例 3-3 に示します。
DIR="`/bin/dirname $0`" export DIR . ${DIR}/driver.init JASS_FILES=" /.cshrc " JASS_SCRIPTS=" set-root-password.fin set-term-type.fin " . ${DIR}/driver.run |
このドライバは、以下のタスクを実行します。driver.init を呼び出して、Solaris Security Toolkit フレームワークを初期化し、その実行環境を構成します。次に、JASS_FILES 環境変数と JASS_SCRIPTS 環境変数を設定します。これらの変数では、このドライバが実行する実際の設定変更を定義します。変数を設定したら、driver.run スクリプトが呼び出されます。driver.run スクリプトはファイルのインストールを完了させて、構成専用のスクリプトをすべて実行します。
上記の例では、JASS_HOME_DIR/Files ディレクトリに格納されている .cshrc ファイルが、/.cshrc にコピーされて、終了スクリプト (set-root-password.fin と set-term-type.fin) がシステム上で実行されます。
Solaris Security Toolkit ソフトウェアに含まれているセキュリティー専用スクリプトのほとんどは、hardening.driver にリストされています。このドライバは、hardening.driver に含まれていないセキュリティー拡張機能を追加で実装することでスクリプトの変更を行います。config.driver と同様、このドライバでも driver.run スクリプトで実行されるスクリプトを定義します。
|
注 - デフォルトでは、install-strong-permissions.fin スクリプトによる変更を除き、提供されている終了スクリプトによる変更はすべて元に戻すことができます。このスクリプトで行った変更が必要なくなった場合には、手動で元に戻す必要があります。 |
また、以下のスクリプトは hardening.driver にリストされていますが、デフォルトではコメントアウトされています。
上記スクリプトについては、第 4 章を参照してください。
secure.driver は、rules ファイルでクライアントのインストールに使用されるデフォルトのドライバです。このドライバは、Solaris Security Toolkit ソフトウェアですべての強化機能を実装するときにすぐに使用できるドライバです。要求されたタスクの初期化を行い、config.driver ドライバを呼び出してシステムを構成し、hardening.driver ドライバを呼び出してセキュリティー強化タスクをすべて実行します。
secure.driver の内容を、コード例 3-4 に示します。
DIR="`/bin/dirname $0`" export DIR . ${DIR}/driver.init . ${DIR}/config.driver . ${DIR}/hardening.driver |
|
このドライバは、元に戻す処理を行うときに、元に戻す機能を提供します。-u オプションを付けて jass-execute コマンドを呼び出すと、このドライバが呼び出されます。このドライバには、コード例 3-5 に示す簡単な内容が含まれています。
このドライバは ./jass-execute -u で呼び出されると、driver.init を呼び出して、他のドライバとほぼ同じ方法で自身を初期化してから、制御を他のドライバ (この例では、undo.driver) に渡します。
この節では、特定のサン製品やその構成のセキュリティー強化に使用される、製品固有のドライバについて説明します。これらのドライバは、Solaris Security Toolkit とともに Drivers ディレクトリに格納されています。製品固有のドライバを、表 3-1 に一覧表示します。
サンの新製品や更新されたサン製品のセキュリティーを強化するために、定期的に新しいドライバがリリースされます。Solaris Security Toolkit ソフトウェアの今後のバージョンでは、新しいドライバと変更されたドライバが提供される予定です。
|
Sun Java System Web Server[1] |
|
|
sunfire_15k_domain-secure.driver |
|
このドライバは、secure.driver に基づき、デスクトップシステムのセキュリティー確保に必要となる変更を示すスクリプト例として提供されています。このスクリプトは参考例なので、使用環境に応じてカスタマイズしてください。このドライバが secure.driver と異なる点は次のとおりです。
このドライバは、JumpStart モードにのみ適用され、minimize-Sun_ONE-WS.fin スクリプトを呼び出して、Solaris Security Toolkit ソフトウェアで Sun JavaTM System Web Server (以前は Sun ONE Web Server、さらにそれ以前は iPlanetTM Web Server と呼ばれていた) ソフトウェアをインストールできるようにします。このスクリプトは、Sun Java System Web Server ソフトウェアの正常なインストールと実行に必要でない Solaris OS パッケージをすべて削除します。また、このドライバは hardening.driver を呼び出して、プラットフォームを最小化した後でセキュリティー強化も実行します。
install-Sun_ONE-WS.driver の内容を、コード例 3-6 に示します。
このドライバを使用して JumpStart クライアントを構築する場合は、このドライバを rulesファイルリストに含める必要があります。このドライバは、minimize-Sun_ONE-WS.fin スクリプトと install-Sun_ONE-WS.fin スクリプトの機能だけでなく、config.driver と hardening.driver で指定されている処理もすべて実行します。
このドライバについての詳細は、Sun BluePrints OnLine 掲載記事『Minimizing the Solaris Operating Environment』を参照してください。
このドライバは、secure.driver に基づき、JumpStart サーバーのセキュリティー確保に必要となる変更を示すスクリプト例として提供されています。このドライバは参考例なので、使用環境に応じてカスタマイズしてください。このドライバが secure.driver と異なる点は次のとおりです。
このドライバは、SunPlex
(旧称 Sun Cluster 3.x) ソフトウェアリリースを強化するベースライン構成を提供します。このドライバを変更すると、無効にされている Solaris OS 機能を削除できます。ただし、Sun Cluster ソフトウェアが正常に動作するために必要で、有効になっているサービスは変更しないでください。詳細については、Sun BluePrints OnLine 掲載記事『Securing the Sun Cluster 3.x Software』を参照してください。
このドライバは、セキュリティー保護された Sun Fire ミッドフレーム環境の構築時に、ミッドフレームサービスプロセッサ (MSP) のセキュリティーを強化します。このドライバは、必要なすべてのサービスが有効になっていても、セキュリティー保護されている MSP を自動的かつ簡単に構築します。詳細については、Sun BluePrints OnLine 掲載記事『Securing the Sun Fire Midframe System Controller』を参照してください。
このドライバは、サポートおよび強化された Sun Enterprise
10000 System Service Processor (SSP) を作成します。SSP は Sun Enterprise 10000 システムの信頼性、可用性、および保守性に影響を与えるため、必ず SSP をセキュリティー強化することを強く推奨します。詳細については、Sun BluePrints OnLine 掲載記事『Securing the Sun Enterprise 10000 System Service Processors』を参照してください。
このドライバは、強化された Sun Fire ハイエンドシステムドメインを開発するためのベースラインを提供します。このドライバで実装される構成では、Sun Fire ハイエンドシステムで必要でないサービスをすべて無効にする一方で、デフォルトの構成で無効になっているオプションの Solaris OS セキュリティー機能を有効にします。詳細については、Sun BluePrints OnLine 掲載記事『Securing Sun Fire 12K and 15K Domains』を参照してください。
このドライバは、Sun Fire ハイエンドシステムのシステムコントローラ (SC) をセキュリティー保護するために唯一サポートされるメカニズムです。SC で必要でないサービスはすべて、このドライバによって無効にされます。無効にされているサービスが必要な場合は、そのサービスを無効にしないようにこのドライバを変更します。詳細については、Sun BluePrints OnLine 掲載記事『Securing the Sun Fire 12K and 15K System Controllers』を参照してください。