4


ドライバ

この章では、ドライバの使用、追加、変更、および削除について説明します。この章で取り上げるドライバは、Solaris OS システムを強化、最小化、および監査するために、Solaris Security Toolkit ソフトウェアで使用されるドライバです。一連のドライバと関連ファイルによって、セキュリティープロファイルが構成されます。

secure.driver は、Solaris Security Toolkit ソフトウェアを使用してセキュリティー保護されたシステム構成を開発するための出発点として最もよく使われるドライバです。secure.driver は、Solaris Secure Shell (SSH) ソフトウェアを除き、(OS の動作に必要のない) ネットワークサービスを含むすべてのサービスを無効にします。使用環境によっては、この処理が適していない場合もあります。使用しているシステムに必要なセキュリティー変更を確認してから、この章や関連する章に記載されている情報を使用して変更を行なってください。

この章では、以下の項目を説明します。


ドライバの関数と処理について

セキュリティー強化と監査を行う際のコアの処理は、driver.run スクリプト内の関数で定義されます。セキュリティー強化と監査を行う場合、使用するドライバは、セキュリティープロファイルが構成された後で、driver.run スクリプトを呼び出します。つまり、ドライバにより driver.init ファイルが呼び出されて、JASS_FILES 環境変数と JASS_SCRIPTS 環境変数が定義された後で、driver.run スクリプト関数が呼び出されます。強化と監査の両方の操作で JASS_FILES 環境変数と JASS_SCRIPTS 環境変数に含まれている各エントリを処理するのが、このスクリプトです。



caution icon

注意 - secure.driverドライバを使用してセキュリティー保護されたシステムは、disable-rpc.finスクリプトが含まれているため、JumpStart や NIS を使用できません。その代わりに、disable-rpc.finスクリプトを含まない新しいドライバを作成する必要があります。JumpStart や NIS を使用していたマシンで disable-rpc.finスクリプトを使用していて、ログインできない場合は、システムをシングルユーザーモードで再起動し (boot-s)、SMF を使用して bind を有効にするか (svcadmenablebind)、(/etc/nsswitch.confおよび /var/svc/profile/ns_*SMF ファイルを使用して) NIS を使用しないようにネームサービスを変更します。



このスクリプトの高度な処理フローを、次に示します。

1. 機能 (.funcs) ファイルを読み込む

これらの機能ファイルはすべて JASS_HOME_DIR/Drivers ディレクトリに格納されています。

2. 基本チェックを行う

3. ユーザー機能の優先指定を読み込む

4. ファイルシステムを JumpStart クライアントにマウントする (JumpStart モードのみ)

5. JASS_FILES 環境変数で指定されているファイルをコピーまたは監査する (オプション)

6. JASS_SCRIPTS 環境変数で指定されているスクリプトを実行する (オプション)

7. 実行に対する合計スコアを計算する (監査操作のみ)

8. ファイルシステムを JumpStart クライアントからアンマウントする (JumpStart モードのみ)

上記の各機能については、以降の節で詳細に説明します。

機能ファイルを読み込む

driver.run スクリプトで行う最初のタスクは、機能ファイルの読み込みです。この段階で機能ファイルを読み込むことで、各ファイルの機能を driver.run スクリプトが利用できるようになります。実行されるすべてのスクリプトが共通関数を利用できるようになります。このタスク実行時に読み込まれる機能ファイルは、以下のとおりです。

基本チェックを行う

Solaris Security Toolkit ソフトウェアでは、コアの環境変数が設定されているかどうかのチェックを行います。このチェックで、ソフトウェアが正常に実行されることを確認します。いずれかのチェックに失敗すると、エラーが報告され、ソフトウェアが終了します。チェックでは、以下の確認が行われます。

ユーザー機能の優先指定を読み込む

現在のプロファイルを続いて処理する前に、user.run ファイルが存在する場合は、このファイルを読み込みます。このファイルには、Solaris Security Toolkit ソフトウェアのデフォルトの関数に優先する関数を含む、サイト固有または組織固有の関数がすべて格納されています。このファイルはデフォルトでは存在していないため、この機能が必要な場合は、ユーザーが手動で作成する必要があります。

この機能を利用して、新しい関数を実装したり、使用環境に合うように既存の関数をカスタマイズすると、Solaris Security Toolkit ソフトウェアの機能を拡張または強化することができます。この user.run ファイルは、関数用のファイルであることを除けば、環境変数用のファイルである user.init ファイルとほぼ同じです。

ファイルシステムを JumpStart クライアントにマウントする



注 - ローカルのブート可能 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_xx OS バージョン環境変数 (たとえば、Solaris 10 OS では JASS_FILES_5_10) にあるエントリと連結して作成します。グローバル環境変数と OS 環境変数はいずれもオプションであり、一方だけを定義したり、両方とも定義しなくてもかまいません。連結されたリストは、JASS_FILES 環境変数に格納されます。この変数についての詳細は、第 7 章JASS_FILESを参照してください。

作成されたリストに少なくとも 1 つのエントリが含まれている場合、JASS_SCRIPTS リストの先頭に install-templates.fin という特殊な終了スクリプトが追加されます。強化処理では、このスクリプトが、作成されたリストの内容を受け取って対象システムにコピーしたあとで、その他の終了スクリプトが実行されます。監査処理では、install-templates.aud スクリプトが、ファイルが対象システム上のファイルと一致することを確認します。

スクリプトを実行する

Solaris Security Toolkit ソフトウェアは、JASS_SCRIPTS 環境変数で定義されたスクリプトを実行します。セキュリティー強化と監査のどちらを実行するかにかかわらず、Solaris Security Toolkit ソフトウェアは、対象システムでコピーや検証が行われるファイルテンプレートの詳細リストを作成します。このリストは、JASS_SCRIPTS グローバル環境変数にあるエントリを、JASS_SCRIPTS_x_xx OS バージョン環境変数 (たとえば、Solaris 10 OS では JASS_SCRIPTS_5_10) にあるエントリと連結して作成します。グローバル環境変数と OS 環境変数はいずれもオプションであり、一方だけを定義したり、両方とも定義しなくてもかまいません。連結されたリストは、JASS_SCRIPTS 環境変数に格納されます。この変数についての詳細は、第 7 章JASS_FINISH_DIRを参照してください。

強化処理では、すべての終了スクリプトが順に実行されます。終了スクリプトは、JASS_FINISH_DIR ディレクトリに格納されています。

監査処理では、最初にいくつかの追加処理を実行する必要があります。JASS_SCRIPTS で定義されているスクリプトで監査を実行する前に、名前を終了スクリプト名から監査スクリプト名に変更してください。ファイル名の拡張子が自動的に .fin から .aud に変更されます。また Solaris Security Toolkit ソフトウェアでは、監査スクリプトが JASS_AUDIT_DIR に格納されていることを前提としています。ファイル名とディレクトリの変更が行われた後で、すべての監査スクリプトが順に実行されます。

スクリプトの出力は、以下のいずれかの方法で処理されます。

実行に対する合計スコアを計算する

強化処理では、ドライバに関する操作がすべて完了すると、ドライバの合計スコアが計算されます。このスコアはドライバの状態を示し、複数のドライバが呼び出されているときは総合計の中に含まれます。使用しているドライバが 1 つだけの場合は、この合計と総合計は同じ値です。すべてのチェックに合格した場合、スコアはゼロです。チェックに失敗した場合、スコアは失敗したチェックの個数を示す数値になります。

ファイルシステムを JumpStart クライアントからアンマウントする

JumpStart モードで操作している場合、ドライバ関連の操作がすべて終了すると、ファイルシステムを JumpStart クライアントにマウントするの処理時にマウントされたファイルシステムがアンマウントされます。通常、この機能は JumpStart クライアントのインストールの終了を示します。この時点で、呼び出し元ドライバに制御が戻ります。ドライバは、終了して処理を終わりにするか、または別のドライバを呼び出して新しい処理を開始することができます。


ドライバのカスタマイズ

組織のポリシー、基準、アプリケーション要件は、たとえわずかでも各組織で異なるため、Solaris Security Toolkit ドライバの変更は最も頻繁に行われるタスクの 1 つです。このため、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 ソフトウェアを削除またはアップグレードしたときに、ドライバの変更が影響を受けないように、Solaris Security Toolkit 配布パッケージに含まれているドライバのコピーに対して必ず変更を行なってください。



サービスを無効にするもう 1 つの方法は、環境変数をカスタマイズする方法です。通常、このカスタマイズは、ドライバまたは user.init ファイルのいずれかで行います。user.init ファイルでの変更は、その変更がグローバルなもので、すべてのドライバで使用される場合にのみ行なってください。そうでない場合は、変更を必要とするドライバに限定して変更を行なってください。

たとえば、inetd デーモンによって開始されるサービスを有効または無効にするには、JASS_SVCS_ENABLE 環境変数と JASS_SVCS_DISABLE 環境変数を使用します。変数の使用についての詳細は、第 7 章を参照してください。また、第 7 章変数のカスタマイズと割り当ても参照してください。


procedure icon  ドライバをカスタマイズするには

元のファイルが更新されたときに、カスタマイズしたファイルが更新された新しいファイルで上書きされないようにドライバをカスタマイズするには、次の手順を実行します。なお、ソフトウェアのアップグレードや削除を行うときに、カスタマイズしたファイルが誤って削除されないようにするときにも、この手順を使用します。

1. カスタマイズするドライバとその関連ファイルをコピーします。

たとえば、組織固有の secure.driver を作成する場合、Drivers ディレクトリに格納されている次のドライバをコピーします。

config.driverhardening.driversecure.driver から呼び出されるドライバであるため、この 2 つのドライバもコピーする必要があります。カスタマイズしているドライバがほかのドライバを呼び出したり使用したりしない場合は、カスタマイズしているドライバのみコピーします。

2. コピーしたファイルを、カスタムドライバとして識別される名前に変更します。

たとえば、自社名を使用する場合は、次のようなファイル名になります。

詳細については、『Solaris Security Toolkit 4.2 管理マニュアル』の第 1 章「Solaris Security Toolkit ソフトウェアの構成およびカスタマイズ」を参照してください。

3. カスタムの prefix-secure.driver を、新しい関連ファイル prefix-config.driverprefix-hardening.driver を呼び出すように変更します。

この手順は、新しい prefix-secure.driver から元の config.driverhardening.driver が呼び出されないようにするときに必要となります。カスタマイズしているドライバが他のドライバを呼び出したり使用したりしないときは、この手順は必要ありません。

4. ドライバからファイルをコピー、追加、または削除するには、JASS_FILES 環境変数を変更します。

この変数についての詳細は、第 7 章を参照してください。

次のコーディング例は、Drivers/config.driver ファイルからの抜粋です。このセキュリティープロファイルは、プラットフォーム上で基本の構成を行います。このセキュリティープロファイルには、ファイルテンプレートと終了スクリプトの明確な使用方法例が示されています。

次の例では、driver.run 関数が呼び出されたときに、JASS_HOME_DIR/Files/ ディレクトリから /.cshrc ファイルと /.profile ファイルを対象プラットフォームにコピーするようドライバを構成しています。


JASS_FILES="/.cshrc/.profile"

 

a. いずれかのファイルの内容を変更するには、JASS_HOME_DIR/Files/ ディレクトリに格納されているファイルを変更します。

b. ファイルテンプレートを追加または削除する必要があるだけならば、そのように JASS_FILES 変数を変更します。

c. Solaris OS バージョンを定義する場合は、JASS_FILES 変数の末尾にオペレーティングシステムのメジャーおよびマイナーバージョン番号を下線 (_) で区切って付加します。



注 - 手順 c では、Solaris OS のバージョンに加えて、ほかの条件を定義および追加することもできます。使用できる各種の条件については、copy_filesの説明を参照してください。



Solaris Security Toolkit ソフトウェアでは、オペレーティングシステムのバージョン固有のファイルリストをサポートしています。定義されている Solaris OS バージョンで Solaris Security Toolkit ソフトウェアが実行されている場合にのみ、これらのファイルリストが一般ファイルリストの内容に追加されます。たとえば、Solaris 10 OS は次のように指定します。


JASS_FILES_5_10

 

5. ドライバからスクリプトを追加または削除するには、JASS_SCRIPTS 変数を変更します。

この変数についての詳細は、第 7 章を参照してください。

6. 他のドライバを呼び出すには、ネストまたは階層セキュリティープロファイルを作成します。

大部分のプラットフォームに共通する基準を設定し、かつプラットフォームまたはアプリケーション間の相違を維持する場合に、この手法は便利です。

コード例 4-1secure.driver ファイルからの抜粋です。このファイルは、構成ドライバおよび強化ドライバの両方を呼び出すラッパーとして使用されます。この場合は、セキュリティープロファイルの実際の機能を実装しています。これは頻繁に使用されるモデルですが、必ずしもこのとおりである必要はありません。たとえ実際に (コード例 4-1 の場合のように) 使用されなくても、各ドライバは JASS_FILESJASS_SCRIPTS の規則をサポートします。


コード例 4-1 ネストまたは階層セキュリティープロファイルの作成

DIR="`/bin/dirname $0`"
export DIR
 
. ${DIR}/driver.init
. ${DIR}/config.driver
. ${DIR}/hardening.driver

 

もう少し複雑な構成を、コード例 4-2 に示します。この例では、ドライバは他の基本的なドライバを呼び出すだけでなく、独自の機能も実装しています。この例では、この新しいセキュリティープロファイルで /etc/named.conf ファイルをインストールし、config.driver ドライバと hardening.driver ドライバを実行したあとで、configure-dns.fin スクリプトを実行します。


コード例 4-2 ドライバによる独自機能の実装

DIR="`/bin/dirname $0`"
export DIR
 
. ${DIR}/driver.init
. ${DIR}/config.driver
. ${DIR}//hardening.driver
 
JASS_FILES="
/etc/named.conf
"
 
JASS_SCRIPTS="
configure-dns.fin
"
 
. ${DIR}/driver.run

 

注 - コード例 4-2 では、さまざまなレベルの機能と適用範囲を提供するように、ドライバをネストさせる方法の一例を示しています。/etc/named.confconfigure-dns.fin は、コーディング例としてのみ表示されています。デフォルトでは、これらのファイルは Solaris Security Toolkit ソフトウェアで提供されていません。



7. ドライバのカスタマイズが終了したら、そのドライバを Drivers ディレクトリに保存します。

8. ドライバが正しく機能するかどうかテストします。


標準のドライバの使用

この節では、デフォルトで Drivers ディレクトリに用意されている、以下のドライバについて説明します。

Solaris Security Toolkit ソフトウェアには、これら標準のドライバのほかにもドライバが含まれています。製品固有のドライバのリストについては、製品固有のドライバの使用を参照してください。

config.driver

このドライバは、secure.driver から呼び出され、そのドライバに関連するタスクを実行します。関連する関数を 1 つのドライバにまとめて共通関数を作成し、その共通関数を構成単位として使用すると、より複雑な構成を構築することができます。次の例では、類似したタスクを 1 つの独自のドライバに分離することで、異なるセキュリティー要件を持つ複数のマシンで 1 つの基本 Solaris OS 構成ドライバを共有できるようにしています。

config.driver からの抜粋をコード例 4-3 に示します。


コード例 4-3 config.driver からの抜粋

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
 

 

config.driver は次のいくつかの作業を実行します。

1. driver.init ファイルを呼び出して、Solaris Security Toolkit フレームワークを初期化し、その実行環境を構成します。

2. JASS_FILES 環境変数と JASS_SCRIPTS 環境変数を設定します。

これらの変数では、このドライバが実行する実際の設定変更を定義します。

3. driver.run スクリプトを呼び出します。driver.run スクリプトはファイルのインストールを完了させて、構成専用のスクリプトをすべて実行します。

コード例 4-3 では、JASS_HOME_DIR/Files ディレクトリに格納されている .cshrc ファイルが、/.cshrc にコピーされて、終了スクリプト (set-root-password.finset-term-type.fin) が対象システム上で実行されます。

hardening.driver

Solaris Security Toolkit ソフトウェアに含まれているセキュリティー専用スクリプトのほとんどは、hardening.driver にリストされています。このドライバは、hardening.driver に含まれていないセキュリティー拡張機能を追加で実装することでスクリプトの変更を行います。config.driver と同様、このドライバでも driver.run スクリプトで実行されるスクリプトを定義します。

このドライバには、以下のスクリプトがリストされています。



注 - install-strong-permissions.fin スクリプトによる変更を除き、提供されている終了スクリプトによる変更はすべて元に戻すことができます。このスクリプトで行った変更が必要なくなった場合には、手動で元に戻す必要があります。install-strong-permissions.fin スクリプトは、Solaris 10 OS 上では動作しません。



また、以下のスクリプトは hardening.driver にリストされていますが、コメントアウトされています。

上記スクリプトについては、第 5 章を参照してください。

secure.driver

secure.driver は、クライアントのインストールに使用される rules.SAMPLE ファイルにあるサンプル規則に最もよく含まれているドライバです。このドライバは、Solaris Security Toolkit ソフトウェアですべての強化機能を実装するときにすぐに使用できるドライバです。要求されたタスクの初期化を行い、config.driver ドライバを呼び出してシステムを構成し、hardening.driver を呼び出してセキュリティー強化タスクをすべて実行します。

secure.driver の内容を、コード例 4-4 に示します。


コード例 4-4 secure.driver の内容

DIR="`/bin/dirname $0`"
export DIR
 
. ${DIR}/driver.init
 
. ${DIR}/config.driver
 
. ${DIR}/hardening.driver

 


製品固有のドライバの使用

この節では、特定のサン製品やその構成のセキュリティー強化に使用される、製品固有のドライバについて説明します。これらのドライバは、Solaris Security Toolkit とともに Drivers ディレクトリに格納されています。製品固有のドライバを、表 4-1 に一覧表示します。

サンの新製品や更新されたサン製品のセキュリティーを強化するために、定期的に新しいドライバがリリースされます。Solaris Security Toolkit ソフトウェアの今後のバージョンでは、新しいドライバと変更されたドライバが提供される予定です。


表 4-1 製品固有のドライバ

製品

ドライバ名

サーバーシステム[1]

server-secure.driver

server-config.driver

server-hardening.driver

Sun Cluster 3.x ソフトウェア

suncluster3x-secure.driver

suncluster3x-config.driver

suncluster3x-hardening.driver

Sun Fire ハイエンドシステムシステムコントローラ

sunfire_15k_sc-secure.driver

sunfire_15k_sc-config.driver

sunfire_15k_sc-hardening.driver


 

注 - server-secure.driversuncluster3x-secure.driver、および sunfire_15k_sc-secure.driver のすべての説明において、*-secure.driverjass-execute -d コマンドともに使用されますが、このコマンドは上記の 3 つすべてのドライバを使用し、正しい結果を生成することに注意してください。



さまざまな Sun 製品用のドライバ名の一覧。

server-secure.driver



注 - Solaris Security Toolkit 4.2 ソフトウェア以前には、このドライバは desktop-secure.driver と呼ばれていました。Solaris Security Toolkit 4.2 ソフトウェアが動作し Solaris 10 OS を使用するシステムに関しては、このドライバは現在、旧バージョンの Solaris Security Toolkit の sunfire_15k_domain-secure.driver および jumpstart-secure.driver にある機能を組み込んでいます。



このドライバは、secure.driver に基づき、Sun Fire ハイエンドシステムシステムコントローラ以外のシステムのセキュリティー確保に必要となる変更を示すスクリプト例として提供されています。このスクリプトは参考例なので、使用環境に応じてカスタマイズしてください。このドライバが secure.driver と異なる点は次のとおりです。

suncluster3x-secure.driver

このドライバは、Suntrademark Cluster 3.x ソフトウェアリリースを強化するベースライン構成を提供します。このドライバを変更すると、無効にされている Solaris OS 機能を削除できます。ただし、Sun Cluster ソフトウェアが正常に動作するために必要で、有効になっているサービスは変更しないでください。詳細については、Sun BluePrints OnLine 掲載記事『Securing the Sun Cluster 3.x Software』を参照してください。

sunfire_15k_sc-secure.driver

このドライバは、Sun Fire ハイエンドシステムのシステムコントローラ (SC) をセキュリティー保護するために唯一サポートされるメカニズムです。SC で必要でないサービスはすべて、このドライバによって無効にされます。無効にされているサービスが必要な場合は、そのサービスを無効にしないようにこのドライバを変更します。詳細については、Sun BluePrints OnLine 掲載記事『Securing the Sun Fire 12K and 15K System Controllers』を参照してください。



caution icon

注意 - suncluster3x-secure.driverを適用したあと、hosts.allow-sunclusterファイルには、クラスタノードの完全指定のドメイン名を追加する必要があります。




1 (表の脚注) Solaris Security Toolkit バージョン 4.2 ソフトウェアより前のバージョンでは、これらのドライバ名は server ではなく desktop になっていました。