第1章 |
|
この章では、フレームワーク関数の使用、追加、変更、および削除について説明します。フレームワーク関数を使用すると、ソースコードを変更せずに Solaris Security Toolkit ソフトウェアの動作を柔軟に変更することができます。
フレームワーク関数は、新しい終了スクリプトと監査スクリプトの開発に必要なコーディング量を制限し、共通機能の一貫性を維持するときに使用します。たとえば、共通のログ関数を使用することで、新しいソースコードを開発したり、既存のソースコードを変更したりすることなく、レポートメカニズムを構成することができます。同様に、この共通関数のモジュール化コードを使用すれば、バグや拡張機能をより体系的に処理することもできます。
さらに、フレームワーク関数では元に戻すオプションも使用できます。たとえば、cp や mv コマンドの代わりにフレームワーク関数 backup_file を使用すると、元に戻す処理時に操作を復元できます。
Solaris Security Toolkit ソフトウェアはモジュラーフレームワークをベースにしており、このフレームワークは、組織のニーズに合ったさまざまな方法で組み合わせることができます。しかし、時には Solaris Security Toolkit ソフトウェアが提供している標準機能が、実際の使用環境のニーズに合っていないこともあります。フレームワーク関数をカスタマイズすることによって標準機能を補完すれば、Solaris Security Toolkit ソフトウェアが提供している機能を強化および拡張することができます。フレームワーク関数で行うのは、Solaris Security Toolkit ソフトウェアの実行方法の設定、使用する関数の定義、および環境変数の初期化です。
多くの場合、簡単に標準のフレームワーク関数のファイルとスクリプトをコピーして、用途に合わせて機能をカスタマイズすることができます。たとえば、user.run ファイルを使用すると、標準のフレームワーク関数を追加、変更、置換、または拡張できます。user.run ファイルは、user.init ファイルが環境変数の追加または変更に使用できることを除けば、user.init ファイルと目的は同じです。
場合によっては、新しいフレームワーク関数を作成する必要があります。その場合、類似したフレームワーク関数をコーディングの手引きやテンプレートとして利用し、このマニュアルに記載されている推奨事項に従ってください。フレームワーク関数の作成は、Solaris Security Toolkit ソフトウェアの設計および実装に精通しているユーザーだけが行うようにしてください。
標準のフレームワークをカスタマイズすることによって Solaris Security Toolkit の機能を拡張する方法を、コード例 1-1 に示します。この例では、JumpStart インストール時に開発者が追加ファイルシステムをマウントできるように mount_filesystems 関数を変更しています。mount_filesystems 関数は、driver.funcs スクリプトから user.run ファイルに直接コピーします。関数の変更は、行番号 8 と 9 で行っています。
コードを簡潔にするために、新しいファイルシステムのマウントに使用する変数を Solaris Security Toolkit 環境変数に変換していません。移植性と柔軟性を持たせるためには、環境変数を使用して実際の値を抽象化してください。これにより、製造、品質保証、開発などの要件が異なる環境にもソフトウェアが配備されるようになるため、変更に一貫性を持たせることができます。
注 - このマウントポイントを使用している終了スクリプト内に同じ機能を実装すれば、ファイルシステムのマウント、使用、アンマウント機能をすべてスクリプト内に埋め込むことは可能です。しかし、複数のスクリプトが単一ファイルシステムを使用している場合には、mount_filesystems を使用した方がより効果的かつ効率的にファイルシステムをマウントできます。 |
![]() |
注意 - mount_filesystems を変更した場合のマイナス面は、Solaris Security Toolkit ソフトウェアのアップデート版のインストール時に mount_filesystems を再度変更する必要があることです。 |
以下の関数は、すべてのログ関数とレポート関数を制御する関数で、Drivers ディレクトリの common_log.funcs ファイルに格納されています。ログ関数とレポート関数は、Solaris Security Toolkit ソフトウェアのすべての操作モードで使用されるため、共通関数と見なされます。たとえば、このファイルには logWarning や logError などの共通関数が含まれています。
この関数は、バナーメッセージを表示します。通常、このメッセージは、ドライバ、終了スクリプト、監査スクリプトによる出力の前に表示されます。また、バナーメッセージは実行の開始時と終了時に使用され、ログ詳細レベルが 3 以上の場合にのみ表示されます。詳細レベルについての詳細は、第 6 章を参照してください。
バナーメッセージは、次の 2 つの書式になります。この関数に空の文字列を渡した場合は、一行区切り文字が 1 つ表示されます。多くの場合、この行は、表示される出力に強制的に「ブレーク」を入れるときに使用されます。1 つの文字列値を入力した場合は、一行区切り文字が表示されている 2 つの行の間に表示されます。バナーメッセージの例を、コード例 1-2 に示します。
バナーメッセージは、JASS_LOG_BANNER 環境変数を使用して制御できます。この環境変数についての詳細は、第 6 章を参照してください。
この関数は、デバッグメッセージを表示します。この関数は、デバッグメッセージとして表示する単一文字列を引数として受け取ります。デフォルトでは、デバッグメッセージは Solaris Security Toolkit ソフトウェアでは表示されません。この機能は将来の使用のためと、開発者がデバッグログメッセージをコードに追加するときのために用意されています。詳細レベルが 4 以上の場合にのみデバッグメッセージが表示されます。詳細レベルについての詳細は、第 6 章を参照してください。
この関数は、エラーメッセージを表示します。この関数は、エラーメッセージとして表示する単一文字列値を引数として受け取ります。エラーメッセージとは、文字列 [ERR ] が含まれているメッセージのことです。
エラーメッセージは、JASS_LOG_ERROR 環境変数を使用して制御できます。この環境変数についての詳細は、第 6 章を参照してください。
この関数は、失敗メッセージを表示します。この関数は、失敗メッセージとして表示する単一文字列値を引数として受け取ります。失敗メッセージとは、文字列 [FAIL] が含まれているメッセージのことです。
失敗メッセージは、JASS_LOG_FAILURE 環境変数を使用して制御できます。この環境変数についての詳細は、第 6 章を参照してください。
この 2 つの関数は、チェックの成功または失敗に関連するメッセージを記録するときに使用します。これらの関数はともに、ファイル内容のチェック結果を報告します。どちらの関数も必要に応じて単独で使用することができますが、主に check_fileContentsExist 関数および check_fileContentsNotExist 関数と一緒に使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージは、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この 2 つの関数は、チェックの成功または失敗に関連するメッセージを記録するときに使用します。これらの関数はともに、ファイルのチェック結果を報告します。どちらの関数も必要に応じて単独で使用することができますが、主に check_fileExists 関数および check_fileNotExists 関数と一緒に使用します。
この引数に NULL 文字列値が渡された場合、この関数は logNotice 関数を使用して、通知形式で結果を報告します。そうでない場合は、logFailure 関数を使用して、結果を失敗と報告します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージは、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この 2 つの関数は、チェックの成功または失敗に関連するメッセージを記録するときに使用します。これらの関数はともに、ファイルのグループメンバーシップのチェック結果を報告します。どちらの関数も必要に応じて単独で使用することができますが、主に check_fileGroupMatch 関数および check_fileGroupNoMatch 関数と一緒に使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージは、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この 2 つの関数は、チェックの成功または失敗に関連するメッセージを記録するときに使用します。これらの関数はともに、ファイルアクセス権のチェック結果を報告します。どちらの関数も必要に応じて単独で使用することができますが、主に check_fileModeMatch 関数および check_fileModeNoMatch 関数と一緒に使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージは、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この関数は、ファイル未検出メッセージを表示するときに使用します。この関数は、セキュリティー強化と監査の両方を実行する Solaris Security Toolkit コード全体で使用され、指定したファイルがシステム上で検出されなかったときに標準のメッセージを表示します。
この引数に NULL 文字列値が渡された場合、この関数は logNotice 関数を使用して、通知形式で結果を報告します。そうでない場合は、logFailure 関数を使用して、結果を失敗と報告します。
通知メッセージと失敗メッセージは、それぞれ JASS_LOG_NOTICE 環境変数と JASS_LOG_FAILURE 環境変数を使用して制御できます。この環境変数についての詳細は、第 6 章を参照してください。
この 2 つの関数は、チェックの成功または失敗に関連するメッセージを記録するときに使用します。これらの関数は、ファイル所有権のチェック結果を報告します。どちらの関数も必要に応じて単独で使用することができますが、主に check_fileOwnerMatch 関数および check_fileOwnerNoMatch 関数と一緒に使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージは、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この 2 つの関数は、チェックの成功または失敗に関連するメッセージを記録するときに使用します。これらの関数は、ファイルタイプのチェック結果を報告します。どちらの関数も必要に応じて単独で使用することができますが、主に check_fileTypeMatch 関数および check_fileTypeNoMatch 関数と一緒に使用します。
検出されるファイルタイプを、表 1-1 に示します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージは、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この関数は、監査検出メッセージを表示します。この関数は、メッセージとして表示する単一文字列を引数として受け取ります。この関数に対して入力された値は、printPrettyPath 関数で処理されてから表示されます。また、詳細レベルが 2 である場合には、オプションのタグがメッセージの先頭に付加されます。以下は、この関数で付加できるオプションのタグです。
注 - driver.run スクリプトのフロー内など、監査スクリプト以外で検出が行われた場合には、現在のドライバの名前が使用されます。 |
これら 3 つの出力タグは、まとめて使用することも単独で使用することもできます。出力結果行での表示順は、指定した順序と同じになります。この関数と詳細レベルについての詳細は、第 6 章を参照してください。
この関数は、チェックするスクリプト名、チェックの目的、根拠などの情報を表示するフォーマット済み監査スクリプトヘッダを作成するときに使用します。この関数は、単一文字列値を引数として受け取り、関数に渡されるこのメッセージをフォーマットします。
フォーマットされたメッセージは、詳細レベルが 3 以上の場合にのみ表示されます。この関数と詳細レベルについての詳細は、第 6 章を参照してください。
この関数は、JASS_DISABLE_MODE 環境変数が無効な値に設定されているときに、エラーメッセージを表示します。このユーティリティー関数は、JASS_DISABLE_MODE 環境変数の状態を報告します。この関数は引数をとらず、以下のような出力を行います。
[ERR ] The JASS_DISABLE_MODE parameter has an invalid value: [...] [ERR ] value must either be "script" or "conf". |
この環境変数についての詳細は、第 6 章を参照してください。
この関数は、check_os_revision 関数または check_os_min_revision 関数のいずれかがチェックに失敗したときに使用します。このユーティリティー関数は、適用されていない Solaris OS のバージョンで関数が呼び出されている場合に報告を行います。たとえば、Solaris 2.6 OS で Solaris 8 OS のスクリプトを使用してみるときなどに、この関数を使用します。
複数のバージョンを指定する場合は、各バージョンの間にハイフン (-) を入力します (たとえば、"5.6-5.8")。
この関数は、通知メッセージを表示します。メッセージは、JASS_LOG_NOTICE 環境変数を使用して制御できます。この環境変数についての詳細は、第 6 章を参照してください。
この関数は、ユーザーに対してメッセージを表示するときに使用します。使用するのは、メッセージに関連付けられているタグが含まれていない場合です。logFormattedMessage 関数と同様、この関数もフォーマットされていないメッセージを表示します。この関数は、そのまま表示される単一文字列値を引数として受け取り、何も変更は行いません。
フォーマットされていないメッセージは、詳細レベルが 3 以上の場合にのみ表示されます。この関数と詳細レベルについての詳細は、第 6 章を参照してください。
この関数は、通知メッセージを表示するときに使用します。この関数は、通知メッセージとして表示する単一文字列値を引数として受け取ります。通知メッセージとは、文字列 [NOTE] が含まれているメッセージのことです。
通知メッセージは、JASS_LOG_NOTICE 環境変数を使用して制御できます。この環境変数についての詳細は、第 6 章を参照してください。
この 2 つの関数は、チェックの成功または失敗に関連するメッセージを記録するときに使用します。これらの関数は、ソフトウェアパッケージがインストールされているかどうかのチェック結果を報告します。どちらの関数も必要に応じて単独で使用することができますが、主に check_packageExists 関数および check_packageNotExists 関数と一緒に使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージは、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この 2 つの関数は、チェックの成功または失敗に関連するメッセージを記録するときに使用します。これらの関数は、ソフトウェアパッチがインストールされているかどうかのチェック結果を報告します。どちらの関数も必要に応じて単独で使用することができますが、主に check_patchExists 関数および check_patchNotExists 関数と一緒に使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージは、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この 2 つの関数は、チェックの成功または失敗に関連するメッセージを記録するときに使用します。これらの関数は、実行時プロセス引数のチェック結果を報告します。どちらの関数も必要に応じて単独で使用することができますが、主に check_processArgsMatch 関数および check_processArgsNoMatch 関数と一緒に使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージは、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この 2 つの関数は、チェックの成功または失敗に関連するメッセージを記録するときに使用します。これらの関数は、プロセスのチェック結果を報告します。どちらの関数も必要に応じて単独で使用することができますが、主に check_processExists 関数および check_processNotExists 関数と一緒に使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージは、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この関数は、検出されないプロセスに対する FAIL メッセージを記録するときに使用します。この関数は、「プロセスの未検出」メッセージを表示します。指定したプロセスがシステムで検出されなかったときに、この関数は標準のメッセージを表示します。
メッセージは、JASS_LOG_FAILURE 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この 2 つの関数は、チェックの成功または失敗に関連するメッセージを記録するときに使用します。これらの関数は、構成ファイルが存在するかどうかのチェック結果を報告します。どちらの関数も必要に応じて単独で使用することができますが、主に check_serviceConfigExists 関数および check_serviceConfigNotExists 関数と一緒に使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージは、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この 2 つの関数は、チェックの成功または失敗に関連するメッセージを記録するときに使用します。これらの関数は、実行コントロール開始スクリプトが存在するかどうかのチェック結果を報告します。どちらの関数も必要に応じて単独で使用することができますが、主に check_startScriptExists 関数および check_startScriptNotExists 関数と一緒に使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージは、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この 2 つの関数は、チェックの成功または失敗に関連するメッセージを記録するときに使用します。これらの関数は、実行コントロール停止スクリプトが存在するかどうかのチェック結果を報告します。どちらの関数も必要に応じて単独で使用することができますが、主に check_stopScriptExists 関数および check_stopScriptNotExists 関数と一緒に使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージは、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 6 章を参照してください。
この関数は、成功メッセージを表示するときに使用します。この関数は、監査成功メッセージとして表示する単一文字列値を引数として受け取ります。成功メッセージとは、文字列「[PASS]」が含まれているメッセージのことです。
成功メッセージは、JASS_LOG_SUCCESS 環境変数を使用して制御できます。この環境変数についての詳細は、第 6 章を参照してください。
この関数は、警告メッセージを表示するときに使用します。この関数は、警告メッセージとして表示する単一文字列値を引数として受け取ります。警告メッセージとは、文字列「[WARN]」が含まれているメッセージのことです。
警告メッセージは、JASS_LOG_WARNING 環境変数を使用して制御できます。この環境変数についての詳細は、第 6 章を参照してください。
ここで説明する関数は、Solaris Security Toolkit ソフトウェアのいくつかの領域内で使用され、他のフレームワーク関数 (接尾辞 .func で終わるファイル) で提供される機能に特化していないその他の共通関数です。これらの関数は、Drivers ディレクトリの common_misc.funcs ファイルに格納されています。このファイルには、isNumeric や printPretty などの共通ユーティリティー関数が含まれています。
この関数は、入力された引数が正の数であるかどうかを判定するときに使用します。この関数は、入力値が 1 つの正の数であることを検証する必要がある場合に、ソフトウェア全体にわたりヘルパー関数で使用されます。この関数は、単一文字列を引数として受け取り、その値が正の数であるかどうかを判定します。値が正の数である場合は、値 0 が表示され、それ以外の数の場合は、値 1 が表示されます。
この関数は、入力された引数が正の数であるかどうかを判定するときに使用します。この関数は、単一文字列を引数として受け取り、その値が正の数であるかどうかを判定します。正の数でない場合は、エラーメッセージを記録します。脆弱性値として無効な引数が関数に指定されていないかどうかを判定する際に、この関数が必要となります。その他のすべての点では、isNumeric 関数と同様に動作します。この関数は、監査操作に対してのみ適用されます。
この関数は、指定した入力文字列が LOG に設定されているかどうかを判定するときに使用します。この関数は、単一文字列を引数として受け取り、呼び出し元関数でその結果を記録する必要があるかどうかを判定します。評価される文字列が LOG という文字列の場合には、値 1 を返して、呼び出し元関数でその結果を記録する必要があることを示します。入力文字列にそれ以外の値が含まれている場合は、値 0 を返し、呼び出し元関数では出力が記録されないことを示します。この関数は、監査操作に対してのみ適用されます。
この関数は、audit_public.funcs ファイルで定義されている関数によって提供されているメソッド以外でスコアを調整するときに使用します。この関数は、監査スクリプトの現在のスコアに追加される値を示す正の数を引数として受け取ります。たとえば、監査スクリプトで失敗を判定できるだけでよい場合があります。こういった場合には、この関数を使用してスコアを調整して失敗を示すようにします。1 が追加されないときは、エラーメッセージが記録され、スコアは調整されません。この関数は、監査処理に対してのみ適用されます。
この関数は、印刷出力結果をフォーマットして読みやすくするときに使用します。この関数は、フォーマットされていない入力文字列を受け取って、フォーマット処理します。フォーマットされた文字列は 72 文字で改行され、各出力行は 3 文字分だけインデントされます。
この関数は、パス名をフォーマットするときに使用します。この関数は、フォーマットされていないパス名を入力として受け取ります。入力された文字列から余分なスラッシュを取り除いてから、結果を表示します。文字列が空の場合には、表示場所にキーワード「<No Value>」が表示されます。
この関数は、ファイルやスクリプトからコメントを削除するときに使用します。この関数は、トークン (スクリプト名、ファイル名など) のリストを入力として受け取り、コメントアウトされているテキストを削除します。この関数では、コメントを「#」(番号) 記号で始まり、行の最後まで続くテキストの部分文字列として定義します。
この関数は、余分な「/」(スラッシュ) 文字をファイル名から削除するときに使用します。この関数は、単一文字列引数を入力として受け取り、その文字列から重複しているスラッシュ記号 (/) を取り除いた値を返します。パス名をユーザーに表示したり、記録したりする前に、この関数を使用してパス名の整理を行います。
この関数は、ファイル名から JASS_ROOT_DIR 接頭辞を削除するときに使用します。この関数は、文字列引数を入力として受け取り、JASS_ROOT_DIR 接頭辞を削除して、単一の「/」(スラッシュ) 文字に置き換えてからその値を返します。JASS マニフェストファイルにパス名を格納する際に、add_to_manifest 関数とともにこの関数を使用します。
以下の関数は、ドライバとしての機能を持つ関数です。これらの関数は、Driversディレクトリの driver.funcs ファイルに格納されています。このファイルには、add_pkg や copy_a_file などの関数が含まれています。
スクリプトをカスタマイズまたは作成する場合は、次の関数を使用して標準の操作を実行してください。
この関数は、Solaris OS パッチをシステムに追加するときに使用します。デフォルトでは、インストールされるパッチが JASS_PATCH_DIR ディレクトリに格納されていることを前提としています。この関数のオプションを、表 1-2 に示します。
この関数は、Solaris OS パッケージをシステムに追加するときに使用します。デフォルトでは、パッケージが JASS_PACKAGE_DIR ディレクトリに格納されており、また、そのパッケージが Sun の標準フォーマット、スプールディレクトリ、またはパッケージストリームファイルのいずれかにあることを前提としています。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。元に戻す処理を実行すると、この関数を使用して追加したパッケージは、システムから削除されます。この関数のオプションを、表 1-3 に示します。
pkgadd ask ファイル名。デフォルトでは、他のファイルを指定しない場合、pkgadd ask ファイル (noask_pkgadd) が使用されます。 |
|
add_pkg -d ${JASS_ROOT_DIR}/${JASS_PACKAGE_DIR}/SUNWjass.pkg SUNWjass |
この関数は、ヘルパー関数を呼び出さずに、強化処理中に項目をマニフェストファイルに手動で挿入するときに使用します。コマンドで元に戻す処理を実行しなければならない場合に、この方法が最もよく使用されます。このオプションは、システムの完全性と Solaris Security Toolkit のリポジトリが保護されるように注意して使用してください。
add_to_manifest コマンドには、次の構文を使用します。
このコマンドでは、JASS_RUN_MANIFEST ファイルの項目を JASS_REPOSITORY/jass-manifest.txt ファイルに格納します。これは、終了スクリプトで実行した変更を元に戻すために重要なファイルです。
注 - Solaris Security Toolkit によるすべての操作において、上記の各引数がサポートされるわけではありません。また、src、dst、および args のオプションは、選択した操作によって意味が異なる場合があります。これについては、表 1-4 で説明します。 |
add_to_manifest 関数でサポートされる操作を、表 1-4 に示します。この表では、各オプションの説明の後に、追加されたマニフェスト項目の例を記載しています。
この関数は、既存のファイルシステムオブジェクトをバックアップするときに使用します。元のファイルのバックアップには、標準の命名規則を使用します。この命名規則では、元のファイル名の最後に JASS_SUFFIX を付加します。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
Solaris Security Toolkit ソフトウェアで実行中に変更されたファイルのバックアップコピーを保存するかしないかを、JASS_SAVE_BACKUP 変数で指定します。この環境変数を 0 に設定すると、バックアップファイルはシステムに保存されません。ファイルを保存しなかった場合には、元に戻すコマンドを使用して復元することはできません。
この関数は、複数の Solaris OS リリースに搭載されている機能を検出するときに使用します。OS の最小リリースバージョンを示す引数を 1 つだけとります。対象プラットフォーム上の OS の実際のリリースバージョンが引数の値以上である場合、0 の値を返し、そうでない場合は 1 を返します。エラーが発生した場合は、255 を返します。
たとえば、この関数は コード例 1-3 に示すように使用することができます。
この例では、共通デスクトップ環境 (CDE) はバージョン 5.6 以前の Solaris OS には搭載されていないため、このスクリプトでは、バージョンが 5.6 以降であることを確認してから、指定した実行コントロールスクリプトを無効にしています。
この関数は、特定の OS バージョン、または値の範囲をチェックするときに使用します。1 つまたは 2 つの引数をとることができます。引数を 1 つ指定したときは、対象のオペレーティングシステムのバージョンが引数と同じ場合にのみ 0 を返し、そうでない場合には 1 を返します。
同様に、引数を 2 つ指定したときには、対象のオペレーティングシステムのバージョンが 2 つの値の範囲内に含まれている場合に、結果が 0 になります。いずれの場合も、エラーが発生したときは 255 を返します。
たとえば、この関数は コード例 1-4 に示すように使用することができます。
この例では、対象 OS バージョンが Solaris OS バージョン 2.5.1 から 8 までの範囲内に含まれている場合に、JASS_DISABLE_MODE の値に基づいて、スクリプトと構成ファイルのみを無効にしています。
この関数は、ファイルのチェックサムの計算に使用します。この関数は、チェックサムが計算されるファイルを示す単一文字列値を引数としてとります。この関数ではチェックサムの計算に Solaris cksum プログラムを使用しており、checksum:number of octets という形式で値を出力します。
この関数は、ディレクトリの内容を繰り返しコピーするときに使用します。コピー元のディレクトリ名とコピー先のディレクトリ名の 2 つの引数をとります。この関数は、コピー元ディレクトリの内容を、コピー先パラメータで指定したディレクトリにコピーします。指定したディレクトリが存在していない場合は、新しいディレクトリを作成します。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、1 つの通常ファイルをまるごとコピーするときに使用します。コピー元のファイル名とコピー先のファイル名の 2 つの引数をとります。この関数は、コピー元ファイルの内容を、コピー先パラメータで指定したファイルにコピーします。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、シンボリックリンクを対象のプラットフォームにコピーするときに使用します。コピー元のリンク名とコピー先のファイル名の 2 つの引数をとります。この関数は、コピー先パラメータとして渡された新しいファイル名を使用して、指定されたコピー元リンクから新しいシンボリックリンクを作成します。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、JASS_HOME_DIR/Files ディレクトリツリーにある 1 組のファイルシステムオブジェクトを、対象のシステムにコピーするときに使用します。この関数では、これまでに説明した適切なコピー関数を使用し、元に戻す処理を行ったときに確実に変更が元に戻るようにしています。通常ファイル、ディレクトリ、およびシンボリックリンクのコピーが可能です。
ファイル名に付加されているタグに基づいてオブジェクトを選択的にコピーできることで、この関数は機能を拡張しています。
このオプションでは、対象プラットフォームの名前と ${HOST} で指定したタグが一致する場合にのみ、オブジェクトがコピーされます。この HOST 環境変数には、JASS_HOSTNAME 環境変数と同じネーミング形式を使用します。
このファイルが検出されなかった場合は、続いて一般ファイルの検索が行われます (次に記載されているオプション)。
このオプションでは、対象プラットフォームの OS バージョンと ${OS} で指定したタグが一致する場合にのみ、オブジェクトがコピーされます。OS パラメータには、JASS_OS_REVISION 環境変数と同じネーミング形式を使用します。したがって、Solaris 8 OS 専用のファイルは "filename+5.8" と表記します。
このファイルが検出されなかった場合は、ホスト名に関連するファイルの検索が行われます (次に記載されているオプション)。
このオプションでは、ファイルが対象システムにコピーされます。
上記の基準は、ファイルの照合に使用する優先度順にリストされています。たとえば、ホスト固有ファイルと一般ファイルの両方が存在し、対象システムの名前がホスト固有ファイルで定義されているホスト名と一致する場合には、ホスト固有ファイルが使用されます。
注 - copy_files 関数では、リストに指定されていても JASS_HOME_DIR/Files ディレクトリツリーで検出されないオブジェクトは無視します。 |
この関数は、対象システム上に空ファイルを作成するときに使用します。touch、chown、および chmod コマンドを組み合わせて使用し、特定の所有者、グループ、およびアクセス権を持つ空ファイルを作成します。
この例では、/usr/local ディレクトリに、guppy と、グループ staff に所有され、アクセス権 750 を持つ testing という名前のファイルが作成されます。この関数では、表 1-5 に記載されているオプションを使用します。
この関数は、指定したファイルとすべてのファイルバックアップ操作に対して一意の時刻表示値を作成するときに使用します。一意の接尾辞値が必要となる、バックアップ済みファイルのバックアップを作成する場合に、この関数は便利です。作成される時刻表示値の形式は、JASS_TIMESTAMP と同じ形式です。この関数で作成された時刻表示値は、JASS_SUFFIX 環境変数に格納されます。詳細については、第 6 章の JASS_TIMESTAMPを参照してください。
この関数は、サービス構成ファイルを無効にするときに使用します。この関数は、このファイルが格納されているディレクトリ名と、サービス構成ファイル名を示す 2 つの文字列値を引数として受け取ります。「_」(下線) の接頭辞をファイル名の先頭に付加することで、サービス構成ファイルを無効にして、このファイルが実行されないようにします。
この例では、ファイル名を /etc/dfs/dfstab から /etc/dfs/_dfstab.JASS.<timestamp> という名前に変更しています。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、元のディレクトリに格納できないファイルを無効にするときに使用します。たとえば、/var/spool/cron/crontabs ディレクトリに、個人ユーザーの crontab ファイルが保存されているとします。無効化またはバックアップした crontab ファイルのコピーを crontabs ディレクトリに格納すると、cron サービスではエラーになります。それは、無効化またはバックアップしたファイルの名前と一致するユーザー名がないためです。
この問題に対処するには、この関数で .JASS 接尾辞が付いたミラーディレクトリを作成し、この中に無効になったファイルを格納します。たとえば、無効にするファイルが /var/spool/cron/crontabs ディレクトリ内にある場合には、/var/spool/cron/crontabs.JASS ディレクトリを作成し、ここに無効になったファイルを移動します。
他の無効化関数と同様に、無効にするファイルには .JASS.<timestamp> という接尾辞が付きます。この関数の違いは、無効になったファイルが元のファイルと同じディレクトリには格納されない点です。
この例では、ファイル /var/spool/cron/crontabs/uucp を /var/spool/cron/crontabs.JASS ディレクトリに移動して、uucp.JASS.<timestamp> という名前に変更しています。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、実行コントロールファイルの実行を無効にするときに使用します。この関数は、スクリプトが格納されているディレクトリ名と、実行コントロールスクリプト名を示す 2 つの文字列値を引数として受け取ります。「_」(下線) の接頭辞をファイル名の先頭に付加することで、スクリプトを無効にして、実行コントロールフレームワークでこのファイルが実行されないようにします。ファイルを実行するときは、開始実行コントロールスクリプトの名前を S で始め、終了実行コントロールスクリプトの名前を Kで始めるようにします。また、無効にしたファイルには接尾辞 .JASS.<timestamp> を付加します。
この例では、ファイル名を /etc/rc2.d/S71rpc から /etc/rc2.d/_S71rpc.JASS.<timestamp> という名前に変更しています。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この 2 つの関数は、パッチがシステムに適用されているかどうかを判定するときに使用します。これらの関数は、チェックするパッチ番号を示す単一文字列値を引数として受け取ります。
この関数は、対象システム上にディレクトリを新規作成するときに使用します。この関数は、作成するディレクトリ名を示す単一文字列値を引数として受け取ります。mkdir に -p オプションを付けると、対象のディレクトリが存在している場合にエラーが報告されなくなります。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、ファイル名を別のファイル名に移動するときに使用します。元のファイル名と移動先のファイル名の 2 つのエントリが必要です。元のファイル名を、移動先パラメータで指定したファイル名に移動、つまり変更します。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、Solaris OS パッケージをシステムから削除するときに使用します。この関数で実行した操作は確定されるので、元に戻す処理で復元することはできません。表 1-6 に、この関数のオプションを示します。
pkgrm ask ファイル名。デフォルトでは、他のファイルを指定しない場合、pkgrm ask ファイル (noask_pkgrm) が使用されます。 |
|
このソフトウェアの監査関数には、プライベートとパブリックの 2 種類があります。audit_private.funcs ファイルで定義されている関数はプライベートであるため、パブリックには使用できません。このファイルで定義されているプライベートスクリプトは使用しないでください。audit_public.funcs ファイルで定義されているパブリックスクリプトだけを使用してください。
パブリック関数は、監査スクリプトで使用される監査関数を定義する関数で、JASS_AUDIT_DIR ファイルに格納されています。このファイルで定義されている関数はパブリックなので、標準およびカスタムの監査スクリプトのどちらででも自由に使用できます。多くの場合、このファイルで定義されている関数は、audit_private.funcs ファイルで定義されている関数を呼び出すスタブです。今後のリリースでの元のコードの変更や拡張について心配することなく、ユーザーがこれらのスクリプトをパブリックインタフェースにコーディングできるように、これらのスタブが実装されています。
監査関数は、システムに格納されている構成と実行時構成の構成要素を評価する、監査スクリプトの一部として使用します。次の関数は、Solaris Security Toolkit ソフトウェアの監査フレームワークに対するパブリックインタフェースです。
監査スクリプトをカスタマイズまたは作成する場合は、次の関数を使用して標準の操作を実行してください。
この 2 つの関数は、指定ファイルに、指定した検索文字列と一致する内容が含まれているかどうかを判定するときに使用します。これらの関数は、指定されたファイルを検索し、その内容を検索文字列と照合します。検索文字列は、正規表現の形式で指定します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、対象システム上にファイルが存在しているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、ファイルが対象システム上のグループに属しているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、対象システム上でファイルにアクセス権が指定されているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、ファイルが対象システム上の特定のユーザーに属しているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この関数は、Solaris Security Toolkit ソフトウェアで定義されているファイルテンプレートが、対象システムにインストールされているファイルテンプレートと一致しているかどうかを判定するときに使用します。たとえば、この関数を使用してファイルテンプレート /etc/motd をチェックする場合、JASS_FILES_DIR/etc/motd と /etc/motd の内容を比較し、内容が同一であるかどうかを判定します。同じ内容である場合には、成功は 0、失敗は 1、エラー状態は 255 と表示されます。複数のファイルを指定する場合には、すべてのファイルが表示コード 0 を取得する必要があります。
この 2 つの関数は、ファイルシステムオブジェクトが、対象システム上の特定のオブジェクトであるかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
検出されるファイルタイプを、表 1-7 に示します。
この関数は、最小化プラットフォームでのみパッケージチェックを実行する必要があるときに使用します。この関数は、JASS_CHECK_MINIMIZED 環境変数により動作が制御されることを除けば、check_packagesNotExist 関数と同じです。対象システムが最小化されていない場合には、JASS_CHECK_MINIMIZED 環境変数を 0 に設定する必要があります。この場合、いずれのチェックも行われず、チェックが実行されなかったという通知とともに、値 0 が表示されます。対象システムが最小化されている場合には、check_packageNotExists 関数と同様に動作し、成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、対象システムにソフトウェアパッケージがインストールされているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、対象システムにソフトウェアのパッチがインストールされているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
注 - パッチのバージョンを指定することができます。指定する場合は、インストールされているバージョンが、指定するバージョン以上でなければなりません。バージョンを指定しない場合は、いずれかのバージョンのパッチがインストールされていれば、成功と表示されます。 |
この 2 つの関数は、特定の実行時引数を使用するプロセスが、システム上で実行されているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、対象システムでプロセスが実行されているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、対象システムにサービス構成ファイルが存在しているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、対象システムに実行コントロール開始スクリプトが存在しているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、対象システムに実行コントロール停止スクリプトが存在しているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この関数は、チェックスクリプトのすべてのプロセスが完了したことと、そのスクリプトのスコアを計算する必要があることを通知するときに使用します。通常、この関数はチェックスクリプトの最後のエントリになります。スクリプトの終了を示すメッセージを表示する場合は、この関数に単一文字列を引数として渡します。
この関数は、監査スクリプトを呼び出すときに使用します。通常、この関数は監査スクリプトの最初の命令であり、コメントや変数宣言は含まれません。この関数は、スクリプト名を定義し、バナーを表示して、スコアを 0 にリセットします。
#-------------------------------------------------------------- # Apache # # Description of Check #-------------------------------------------------------------- |
Copyright© 2004, Sun Microsystems, Inc. All rights reserved.