第2章 |
|
この章では、フレームワーク関数の使用、追加、変更、および削除について説明します。フレームワーク関数を使用すると、ソースコードを変更せずに 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 の機能を拡張する方法を、コード例 2-1 に示します。この例では、JumpStart インストール時に開発者が追加ファイルシステムをマウントできるように mount_filesystems 関数を変更しています。mount_filesystems 関数は、driver_private.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 (完全モード) 以上の場合にのみ表示されます。詳細レベルについての詳細は、第 7 章を参照してください。
バナーメッセージは、次の 2 つのいずれかの書式になります。この関数に空の文字列を渡した場合は、一行区切り文字が 1 つ表示されます。多くの場合、この行は、表示される出力に強制的に「ブレーク」を入れるときに使用されます。1 つの文字列値を入力した場合は、一行区切り文字が表示されている 2 つの行の間に表示されます。バナーメッセージの例を、コード例 2-2 に示します。
バナーメッセージの表示は、JASS_LOG_BANNER 環境変数を使用して制御できます。この環境変数についての詳細は、第 7 章を参照してください。
この関数は、デバッグメッセージを表示します。デバッグメッセージには、[FAIL] や [PASS] などの型接頭辞がありません。詳細レベルが 4 (デバッグモード) 以上の場合にのみデバッグメッセージが表示されます。デフォルトでは、デバッグメッセージを出力しません。詳細レベルについての詳細は、第 7 章を参照してください。
この関数は、エラーメッセージを表示します。エラーメッセージとは、文字列 [ERR ] が含まれているメッセージのことです。
エラーメッセージの表示は、JASS_LOG_ERROR 環境変数を使用して制御できます。この環境変数についての詳細は、第 7 章を参照してください。
この関数は、失敗メッセージを表示します。失敗メッセージとは、文字列 [FAIL] が含まれているメッセージのことです。
失敗メッセージの表示は、JASS_LOG_FAILURE 環境変数を使用して制御できます。この環境変数についての詳細は、第 7 章を参照してください。
この 2 つの関数は、ファイル内容のチェック結果に関連するメッセージを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_fileContentsExist 関数および check_fileContentsNotExist 関数で使用します。
引数: $1 - テストするファイル (文字列値)
$2 - 検索パターン (文字列値)
$3 - 脆弱性値 (0 以上の整数)
$4 - PASS または FAIL メッセージの次にユーザーに
表示する関連情報 (オプション)
戻り値: 成功または失敗のメッセージ。これらのメッセージの表示は、JASS_LOG_FAILURE
環境変数と JASS_LOG_SUCCESS 環境変数
を使用して制御できます。これらの環境変数についての詳細は、
第 7 章を参照してください。
この 2 つの関数は、ファイルのチェック結果に関連するメッセージを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_fileExists 関数および check_fileNotExists 関数と一緒に使用します。
引数: $1 - テストするファイル (文字列値)
$2 - 脆弱性値 (0 以上の整数)。この引数に NULL
文字列値が渡された場合、この関数はlogNotice 関数を
使用して、通知形式で結果を報告します。引数が
0 である場合、logSuccess 関数を使用して結果を成功と報告し、
それ以外の場合は logFailure 関数を使用して失敗と報告します。
$3 - PASS、FAIL、または NOTE メッセージの次に
ユーザーに表示する関連情報 (オプション)。
戻り値: 成功または失敗のメッセージ。これらのメッセージの表示は、
JASS_LOG_FAILURE
環境変数と JASS_LOG_SUCCESS環境変数を使用して制御できます。
これらの環境変数についての詳細は、第 7 章を参照してください。
この 2 つの関数は、ファイルグループメンバーシップのチェック結果に関連するメッセージを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_fileGroupMatch 関数および check_fileGroupNoMatch 関数で使用します。
引数: $1 - テストするファイル (文字列値)
$2 - チェックするグループ
$3 - 脆弱性値 (0 以上の整数)
$4 - PASS または FAIL メッセージの次にユーザーに
表示する関連情報 (オプション)
戻り値: 成功または失敗のメッセージ。これらのメッセージの表示は、
JASS_LOG_FAILURE
環境変数と JASS_LOG_SUCCESS 環境変数
を使用して制御できます。これらの環境変数についての詳細は、
第 7 章を参照してください。
この 2 つの関数は、ファイルのアクセス権のチェック結果に関連するメッセージを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_fileModeMatch 関数および check_fileModeNoMatch 関数で使用します。
引数: $1 - テストするファイル (文字列値)
$2 - チェックするアクセス権
$3 - 脆弱性値 (0 以上の整数)
$4 - PASS または FAIL メッセージの
次にユーザーに表示する関連情報 (オプション)
戻り値: 成功または失敗のメッセージ。これらのメッセージの表示は、
JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数
を使用して制御できます。これらの環境変数についての詳細は、
第 7 章を参照してください。
この関数は、ファイル未検出メッセージを表示するときに使用します。この関数は、セキュリティー強化と監査の両方を実行する Solaris Security Toolkit コードで使用され、指定したファイルがシステム上で検出されなかったときに標準のメッセージを表示します。
この引数に NULL 文字列値が渡された場合、この関数は logNotice 関数を使用して、通知形式で結果を報告します。そうでない場合は、logFailure 関数を使用して、結果を失敗と報告します。
通知メッセージと失敗メッセージの表示は、それぞれ JASS_LOG_NOTICE 環境変数と JASS_LOG_FAILURE 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 7 章を参照してください。
この 2 つの関数は、ファイルの所有権のチェック結果に関連するメッセージを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_fileOwnerMatch 関数および check_fileOwnerNoMatch 関数で使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージの表示は、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 7 章を参照してください。
この 2 つの関数は、ファイルタイプのチェック結果に関連するメッセージを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_fileTypeMatch 関数および check_fileTypeNoMatch 関数で使用します。
検出されるファイルタイプを、表 2-1 に示します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージの表示は、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 7 章を参照してください。
この関数は、監査検出メッセージを表示します。この関数は、メッセージとして表示する単一文字列を引数として受け取ります。この関数に対して入力された値は、printPrettyPath 関数で処理されてから表示されます。また、詳細レベルが 2 (要約モード) 以上である場合には、オプションのタグがメッセージの先頭に付加されます。以下は、この関数を使用して付加できるオプションのタグです。
注 - driver.run スクリプトのフロー内など、監査スクリプト以外で検出が行われた場合には、ドライバの名前が使用されます。 |
これら 3 つの出力タグは、まとめて使用することも単独で使用することもできます。出力結果行での表示順は、入力行で指定した順序と同じになります。この関数と詳細レベルについての詳細は、第 7 章を参照してください。
この関数は、チェックするスクリプト名、チェックの目的、根拠などの情報を表示するフォーマット済み監査スクリプトヘッダーを作成するときに使用します。この関数は、単一文字列値を引数として受け取り、関数に渡されるこのメッセージをフォーマットします。
フォーマットされたメッセージは、詳細レベルが 3 (完全モード) 以上の場合にのみ表示されます。この関数と詳細レベルについての詳細は、第 7 章を参照してください。
この関数は、JASS_DISABLE_MODE 環境変数が無効な値に設定されているときに、エラーメッセージを表示します。このユーティリティー関数は、JASS_DISABLE_MODE 環境変数の状態を報告します。この環境変数についての詳細は、第 7 章を参照してください。
[ERR ] The JASS_DISABLE_MODE parameter has an invalid value: [...] [ERR ] value must either be "script" or "conf". |
この関数は、check_os_revision 関数または check_os_min_revision 関数のいずれかがチェックに失敗したときに使用します。このユーティリティー関数は、適用されていない Solaris OS のバージョンで関数が呼び出されている場合に報告を行います。たとえば、Solaris 8 OS で Solaris 10 OS のスクリプトを使用してみるときなどに、この関数を使用します。
複数のバージョンを指定する場合は、各バージョンの間にハイフン (-) を入力します (たとえば、5.8-5.9)。
この関数は、通知メッセージを表示します。これらのメッセージの表示は、JASS_LOG_NOTICE 環境変数を使用して制御できます。
注 - JASS_LOG_NOTICE 環境変数は、Solaris 10 OS を実行しているシステムには使用しません。 |
この環境変数についての詳細は、第 7 章を参照してください。
この関数は、ユーザーに対してメッセージを表示するときに使用します。使用するのは、メッセージに関連付けられているタグが含まれていない場合です。この関数は logFormattedMessage 関数に似ていますが、フォーマットされていないメッセージを表示します。この関数は、そのまま表示される単一文字列値を引数として受け取り、何も変更は行いません。
フォーマットされていないメッセージは、詳細レベルが 3 (完全モード) 以上の場合にのみ表示されます。この関数と詳細レベルについての詳細は、第 7 章を参照してください。
この関数は、大域ゾーンで実行する必要があるためにスクリプトが実行されない logNotice を使用してメッセージを記録します。つまり、スクリプトは非大域ゾーンでは実行できません。
この関数は、通知メッセージを表示するときに使用します。この関数は、通知メッセージとして表示する単一文字列値を引数として受け取ります。通知メッセージとは、文字列 [NOTE] が含まれているメッセージのことです。
通知メッセージの表示は、JASS_LOG_NOTICE 環境変数を使用して制御できます。この環境変数についての詳細は、第 7 章を参照してください。
この 2 つの関数は、ソフトウェアパッケージがインストールされているかどうかを判断するチェック結果に関連するメッセージを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_packageExists 関数および check_packageNotExists 関数で使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージの表示は、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 7 章を参照してください。
この 2 つの関数は、ソフトウェアのパッチがインストールされているかどうかを判断するチェック結果に関連するメッセージを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_patchExists 関数および check_patchNotExists 関数で使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージの表示は、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 7 章を参照してください。
この 2 つの関数は、実行時プロセス引数のチェック結果に関連するメッセージを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_processArgsMatch 関数および check_processArgsNoMatch 関数で使用します。
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージの表示は、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 7 章を参照してください。
この 2 つの関数は、プロセスのチェック結果に関連するメッセージを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_processExists 関数および check_processNotExists 関数で使用します。
引数: $1 - プロセス名 (文字列)
$2 - 脆弱性値 (数値)
$3 - PASS または FAIL メッセージの次に
ユーザーに表示する関連情報 (オプション)
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージの表示は、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 7 章を参照してください。
この関数は、検出されないプロセスに対する FAIL メッセージを記録するときに使用します。指定したプロセスがシステムで検出されなかったときに、この関数は標準の「プロセスの未検出」メッセージを表示します。
引数: $1 - プロセス名 (文字列)
$2 - PASS または FAIL メッセージの次に
ユーザーに表示する関連情報 (オプション)
これらのメッセージの表示は、JASS_LOG_FAILURE 環境変数を使用して制御できます。この環境変数についての詳細は、第 7 章を参照してください。
この関数は、監査実行時に検出されたエラー数を報告するときに使用します。
引数: $1 - レポートと関連付ける文字列
$2 - エラーの数 (文字列)
この関数は、スクリプトの失敗を、対応するスクリプトの失敗ログに記録するときに使用します。
引数: $1 - 失敗のタイプ:
"エラー"
"警告"
"注意"
"失敗"
この例は、${JASS_REPOSITORY}/${JASS_TIMESTAMP}/jass-script-failures.txt ファイルに対して 1 つの失敗を記録します。
この 2 つの関数は、構成ファイルが存在するかどうかを判断するチェック結果に関連するメッセージを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_serviceConfigExists 関数および check_serviceConfigNotExists 関数で使用します。
引数: $1 - サービス名 (文字列)
$2 - 脆弱性値 (数値)
$3 - PASS または FAIL メッセージの次に
ユーザーに表示する関連情報 (オプション)
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージの表示は、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 7 章を参照してください。
この 2 つの関数は、指定したサービスが同じように有効または無効になっていることを記録するときに使用します。
引数: $1 - サービス名 (文字列)
$2 - 脆弱性値 (数値)
$3 - PASS または FAIL メッセージの次に
ユーザーに表示する関連情報 (オプション)
この 2 つの関数は、指定したサービスが同じようにインストールされている、またはインストールされていないことを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_serviceEnabled 関数および check_serviceDisabled 関数で使用します。
引数: $1 - サービス名 (文字列)
$2 - 脆弱性値 (数値)
$3 - PASS または FAIL メッセージの次に
ユーザーに表示する関連情報 (オプション)
この関数は、あるサービスで、指定したオプションが特定の値に設定されているかどうかを記録するときに使用します。この関数は check_serviceOptionDisabled 関数および check_serviceOptionEnabled 関数と一緒に使用します。
引数: $1 - プロセス名 (文字列)
$2 - サービスプロパティー名 (文字列)
$3 - サービス名 (文字列)
$4 - サービスプロパティー値 (文字列)
$5 - 脆弱性値 (数値)
$6 - PASS または FAIL メッセージの次に
ユーザーに表示する関連情報 (オプション)
この関数は、SMF サービスと関連付けられたプロセスのリストを出力するときに使用します。プロセスごとに、プロセス ID、プロセスユーザー ID、プロセスコマンドの 3 つの項目が出力されます。
引数: $1 - SMF サービス
$2 - PASS または FAIL
$3 - プロセス ID (pid)、プロセスユーザー ID (user)、
およびプロセスコマンド (command) と関連付けられたプロセスの
リスト。
この関数は、あるサービスで、指定したオプションが有効/無効のどちらに設定されているかを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_serviceOptionEnabled 関数および check_serviceOptionDisabled 関数と一緒に使用します。
引数: $1 - サービス名 (文字列)
$2 - プロパティー名 (文字列)
$3 - プロパティー値 (文字列)
$4 - 脆弱性値 (数値)
$5 - PASS または FAIL メッセージの次に
ユーザーに表示する関連情報 (オプション)
この関数は、特定のサービスが実行中であるかどうかを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_serviceRunning 関数および check_serviceNotRunning 関数と一緒に使用します。
引数: $1 - サービス名 (文字列)
$2 - 脆弱性値 (数値)
$3 - プロセスリスト (オプション)
$4 - PASS または FAIL メッセージの次に
ユーザーに表示する関連情報 (オプション)
この 2 つの関数は、実行コントロール開始スクリプトが存在するかどうかを判断するチェック結果に関連するメッセージを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_startScriptExists 関数および check_startScriptNotExists 関数で使用します。
引数: $1 - テストする開始スクリプト (文字列)
$2 - 脆弱性値 (数値)
$3 - PASS または FAIL メッセージの次に
ユーザーに表示する関連情報 (オプション)
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージの表示は、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 7 章を参照してください。
この 2 つの関数は、実行コントロール停止スクリプトが存在するかどうかを判断するチェック結果に関連するメッセージを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_stopScriptExists 関数および check_stopScriptNotExists 関数で使用します。
引数: $1 - テストする停止スクリプト (文字列)
$2 - 脆弱性値 (数値)
$3 - PASS または FAIL メッセージの次に
ユーザーに表示する関連情報 (オプション)
表示されるメッセージは、成功または失敗のいずれかです。これらのメッセージの表示は、JASS_LOG_FAILURE 環境変数と JASS_LOG_SUCCESS 環境変数を使用して制御できます。これらの環境変数についての詳細は、第 7 章を参照してください。
この関数は、成功メッセージを表示するときに使用します。この関数は、監査成功メッセージとして表示する単一文字列値を引数として受け取ります。成功メッセージとは、文字列 [PASS] が含まれているメッセージのことです。
成功メッセージの表示は、JASS_LOG_SUCCESS 環境変数を使用して制御できます。この環境変数についての詳細は、第 7 章を参照してください。
この関数は、Solaris Security Toolkit の実行からの概要情報を表示するときに使用します。この関数の引数は、実行と比較するドライバ、およびスクリプトの実行回数です。
この関数は、特定のユーザーアカウントがロックされていたかどうかを記録するときに使用します。どちらの関数も必要に応じて単独で使用することができますが、主に check_userLocked 関数および check_userNotLocked 関数で使用します。
引数: $1 - ユーザー名 (文字列)
$2 - 脆弱性値 (数値)
$3 - PASS または FAIL メッセージの次に
ユーザーに表示する関連情報 (オプション)
この関数は、元に戻す処理の結果に関する一般的な警告を記録するときに使用します。
[WARN] Creating backup copies of some files may cause unintended effects. [WARN] This is particularly true of /etc/hostname.[interface] files as well as crontab files in /var/spool/cron/crontabs. |
この関数は、警告メッセージを表示するときに使用します。この関数は、警告メッセージとして表示する単一文字列値を引数として受け取ります。警告メッセージとは、文字列 [WARN]が含まれているメッセージのことです。
警告メッセージの表示は、JASS_LOG_WARNING 環境変数を使用して制御できます。この環境変数についての詳細は、第 7 章を参照してください。
ここで説明する関数は、Solaris Security Toolkit ソフトウェアのいくつかの領域内で使用され、ほかのフレームワーク関数 (接尾辞 .func で終わるファイル) で提供される機能に特化していないその他の共通関数です。これらの関数は、Drivers ディレクトリの common_misc.funcs ファイルに格納されています。このファイルには、isNumeric や printPretty などの共通ユーティリティー関数が含まれています。
この関数は、audit_public.funcs ファイルで定義されている関数によって提供されているメソッド以外でスコアを増やすときに使用します。たとえば、監査スクリプトで失敗を判定できるだけでよい場合があります。こういった場合には、この関数を使用してスコアを調整して失敗を示すようにします。ユーザーが値を提供しないときは、エラーメッセージが記録され、スコアは調整されません。
引数: $1 - 監査スクリプトの現在のスコアに追加する値 (正の整数)
この関数は、呼び出し元関数がその結果を記録するよう要求しているかどうかを判断するときに使用します。
戻り値: 0 - 呼び出し元関数により記録するよう要求された出力はなし
1 - 値は LOG で、呼び出し元関数がその結果を記録するよう
要求している
この関数は、余分なスラッシュ文字 (/) をファイル名から削除するときに使用します。パス名をユーザーに表示したり、記録したりする前に、この関数を使用してパス名の整理を行います。
戻り値: すべての重複するスラッシュ文字 (/)が削除された後の
$1 にある値を返す。
この関数は、ファイルやスクリプトからコメントを削除するときに使用します。この関数では、コメントを数字 (#) で始まり、行の最後まで続くテキストの部分文字列として定義します。
引数: $1 - スクリプト名やファイル名などのトークンのリスト
この関数は、ログファイルを読み込み、エラーまたは警告を報告したスクリプトの数を返すときに使用します。
戻り値: 255 - 指定されていない失敗
0 - 成功
1 - ログファイルは読み取り不可能
この関数は、リスト A と B を取得し、A と B 両方にある要素から構成されるリスト C を戻すときに使用します。
引数: $1 - listA (空白で区切られたトークンから構成)
$2 - listB (空白で区切られたトークンから構成)
戻り値: リスト A とリスト B の両方にあるすべての要素を含むリスト C。
この関数は、リスト A と B を取得し、リスト A 内には存在するがリスト B には存在しない要素から構成されるリスト C を戻すときに使用します。
引数: $1 - listA (空白で区切られたトークンから構成)
$2 - listB (空白で区切られたトークンから構成)
戻り値: リスト A にはあるがリスト B には存在しない要素を含むリスト C。
この関数は、脆弱性値の引数が正の数であるかどうかを判定するときに使用します。この関数は、失敗ごとにエラーメッセージを記録します。脆弱性値として無効な引数が関数に指定されていないかどうかを判定する際に、この関数が必要となります。その他のすべての点では、isNumeric 関数と同様に動作します。
戻り値: 0 - 脆弱性は正の数
1 - 脆弱性は正の数ではない
この関数は、文字列の引数が正の数であるかどうかを判定するときに使用します。この関数は、入力値が 1 つの正の数であることを検証する必要がある場合に、ソフトウェア全体にわたりヘルパー関数で使用されます。値が正の数である場合は、0 が表示され、それ以外の数の場合は、1 が表示されます。
戻り値: 0 - 文字列は正の数
1 - 文字列は正の数ではない
この関数は、印刷出力結果をフォーマットして読みやすくするときに使用します。この関数は、フォーマットされていない入力文字列を受け取って、フォーマット処理します。フォーマットされた文字列は 72 文字で改行され、各出力行は 3 文字分だけインデントされます。
この関数は、パス名をフォーマットするときに使用します。この関数は、フォーマットされていないパス名を入力として受け取ります。入力された文字列から余分なスラッシュを取り除いてから、結果を表示します。文字列が空の場合には、表示場所にキーワード「<No Value>」が表示されます。
この関数は、ファイル名から JASS_ROOT_DIR 接頭辞を削除するときに使用します。この関数は、文字列引数を入力として受け取り、JASS_ROOT_DIR 接頭辞を削除して、単一のスラッシュ文字 (/) に置き換えてからその値を返します。JASS マニフェストファイルにパス名を格納する際に、add_to_manifest 関数とともにこの関数を使用します。
以下の関数は、ドライバとしての機能を持つ関数です。これらの関数は、Driversディレクトリの driver_public.funcs ファイルに格納されています。このファイルには、add_pkg や copy_a_file などの関数が含まれています。
スクリプトをカスタマイズまたは作成する場合は、次の関数を使用して標準の操作を実行してください。
この関数は、プログラム $2 がユーザーの $1 crontab ではない場合に、crontab 行 $3 を crontab に追加するときに使用します。$4 が 0 である場合、変更前に crontab ファイルをバックアップします (使用例を参照)。この関数は crontab コメント行を無視します。
引数: $1 - 変更する crontab のユーザー ID
$2 - crontab に追加するプログラム (フルパス名)
$3 - $2 が crontab ファイルに存在しない場合に追加する crontab 行
$4 - 0 の場合、変更前に backup_file を呼び出す
(そうでない場合ファイルは作成されているか、
すでにバックアップされている。)
戻り値: 1 - crontab ファイルがバックアップされていた場合。
それ以外の場合は、引数 $4 を変更せずに戻す。
注 - この関数は Solaris 10 の SMF にのみ使用し、ftp デーモンにのみ適用されます (オプション -1 または -a)。 |
注意 - 関数 add_option_to_gl_propertyまたは add_option_to_smf_propertyがある場合は、その関数の名前を add_option_to_ftpd_propertyに変更してください。 |
この関数は、Solaris 10 OS で、SMF が有効な in.ftpd サービスプロパティー値にオプションを追加するときに使用します。強化操作用にのみこの関数を使用します。この関数は、元に戻す処理のための Solaris Security Toolkit マニフェストファイルに書き込みを行います。
引数: $1 - 開始コマンドに追加するオプション a または 1 (それぞれ
ftpaccess(4) および log ftp セッションと使用)
この関数は、Solaris OS パッチをシステムに追加するときに使用します。デフォルトでは、インストールされるパッチが JASS_PATCH_DIR ディレクトリに格納されていることを前提としています。この関数のオプションを、表 2-2 に示します。
この関数は、Solaris OS パッケージをシステムに追加するときに使用します。デフォルトでは、パッケージが JASS_PACKAGE_DIR ディレクトリに格納されており、また、そのパッケージが Sun の標準フォーマット、スプールディレクトリ、またはパッケージストリームファイルのいずれかにあることを前提としています。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。元に戻す処理を実行すると、この関数を使用して追加したパッケージは、システムから削除されます。この関数のオプションを、表 2-3 に示します。
pkgadd ask ファイル名。デフォルトでは、他のファイルを指定しない場合、pkgadd ask ファイル (noask_pkgadd) が使用されます。 |
|
この関数は、ヘルパー関数を呼び出さずに、強化処理中に項目をマニフェストファイルに手動で挿入するときに使用します。コマンドで元に戻す処理を実行しなければならない場合に、この方法が最もよく使用されます。このオプションは、システムの完全性と Solaris Security Toolkit のリポジトリが保護されるように注意して使用してください。
add_to_manifest コマンドには、次の構文を使用します。
このコマンドでは、JASS_RUN_MANIFEST ファイルの項目を JASS_REPOSITORY/jass-manifest.txt ファイルに格納します。これは、終了スクリプトで実行した変更を元に戻すために重要なファイルです。
注 - Solaris Security Toolkit によるすべての操作において、上記の各引数がサポートされるわけではありません。src、dst、および args のオプションは、選択した操作によって意味が異なる場合があります。これについては、表 2-4 で説明します。 |
add_to_manifest 関数でサポートされる操作を、表 2-4 に示します。この表では、各オプションの説明のあとに、追加されたマニフェスト項目の例を記載しています。
この関数は、既存のファイルシステムオブジェクトをバックアップするときに使用します。元のファイルのバックアップには、標準の命名規則を使用します。この命名規則では、元のファイル名の最後に JASS_SUFFIX を付加します。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
Solaris Security Toolkit ソフトウェアで実行中に変更されたファイルのバックアップコピーを保存するかしないかを、JASS_SAVE_BACKUP 変数で指定します。この環境変数を 0 に設定すると、バックアップファイルはシステムに保存されません。ファイルを保存しなかった場合には、元に戻すコマンドを使用して復元することはできません。
この関数は、元のディレクトリに格納できないファイルを無効にするとき (詳細は disable_fileを参照)、および元ファイルを移動するだけでなくさらに編集するためにファイルのコピーを残すときに使用します。これには、ディレクトリ /etc/skel/、/var/spool/cron/crontabs/、/etc/init.d/、および /etc/rcx.d/ のすべてのファイルが含まれます。
引数: $1 - コピー元ファイルへの完全指定パス
$2 - ファイルを元に戻す「-u」に設定されている場合、以前の
時刻表示はファイル名から削除されます。
この関数は、ファイルグループの所有権を変更するときに使用します。この関数では、元に戻す処理を行ったときに元に戻せるように、必要なマニフェスト項目を自動的に追加します。
引数: $1 - ファイル所有者のグループ ID
$2 - グループ所有権を変更する 1 つまたは複数のファイル
通常または特別なファイルまたはディレクトリでなければならず、
ソフトリンクであってはなりません。
戻り値: 0 - ファイルが現在正しいグループ所有権を持っている場合
0 以外 - ファイルまたはファイルアクセス権が指定されていないか、
chown が失敗した場合
この関数は、ファイルのアクセス権モードを変更するときに使用します。この関数では、元に戻す処理を行ったときに元に戻せるように、必要なマニフェスト項目を自動的に追加します。
引数: $1 - 8 進数 chmod(1) 形式のファイルアクセス権 (0700 など)
$2 - chmod の対象である 1 つまたは複数のファイル
通常または特別なファイルまたはディレクトリでなければならず、
ソフトリンクは対象となりません。
戻り値: 0 - ファイルが現在正しい所有権を持っている場合
0 以外 - ファイルまたはファイルアクセス権が指定されていないか、
chown が失敗した場合
この関数は、ファイルの所有権 (およびオプションでグループ) を変更するときに使用します。この関数では、元に戻す処理を行ったときに元に戻せるように、必要なマニフェスト項目を自動的に追加します。
引数: $1 - ファイル所有者のユーザー ID
$2 - 所有権を変更する 1 つまたは複数のファイル (通常または
特別なファイル/ディレクトリでなければならず、
ソフトリンクであってはなりません。)
戻り値: 0 - ファイルが現在正しい所有権を持っている場合
0 以外 - ファイルまたはファイルアクセス権が指定されていないか、
chown が失敗した場合
この関数は、共通の操作を移動し、ファイル内の現在の値をチェックし、1 つのファイルにまとめてフレームワーク関数に格納することにより、終了スクリプトをクリーンに保つときに使用します。この関数は、終了スクリプトの作成者が単一ファイル内の変数を繰り返しチェックする場合に便利です。
この関数は、ファイル内で等号 (=) により区切られているパラメータをチェックし、記録します。新しい値が設定されると、グローバル変数 new_var が新しい値に設定されます。それ以外の場合、new_var はファイル内の既存の値に設定されます。最新の値が以前の値と異なる場合、ログメッセージが出力され、グローバル変数 change_needed が増分されます。
この関数は write_val_to_file 関数と一緒に使用してください (write_val_to_fileを参照)。
引数: $1 - ファイル名
$2 - ファイル内のキーワード
$3 - 新しい値
戻り値: 空である場合を除き、グローバル環境変数 new_var
を新しい値に設定。空の場合はファイル内の値に設定され、
設定されていない場合は "" になる。
この関数は、複数の Solaris OS リリースに搭載されている機能を検出するときに使用します。OS の最小リリースバージョンを示す引数を 1 つだけとります。対象プラットフォーム上の OS の実際のリリースバージョンが引数の値以上である場合、0 の値を返し、そうでない場合は 1 を返します。エラーが発生した場合は、255 を返します。
たとえば、この関数はコード例 2-3 に示すように使用することができます。
この例では、まず Solaris 10 OS で使用可能であった SMF FMRI を使用して、ドメインネームシステム (DNS) サービスが無効になっています。それ例外の場合、Solaris 7 OS で DNS を無効にするには /etc/named.conf の名前を変更し、Solaris 2.6 OS またはそれ以前では /etc/named.boot の名前を変更します。
この関数は、特定の OS バージョン、または値の範囲をチェックするときに使用します。1 つまたは 2 つの引数をとることができます。引数を 1 つ指定したときは、対象のオペレーティングシステムのバージョンが引数と同じ場合にのみ 0 を返し、そうでない場合には 1 を返します。
同様に、引数を 2 つ指定したときには、対象のオペレーティングシステムのバージョンが 2 つの値の範囲内に含まれている場合に、結果が 0 になります。いずれの場合も、エラーが発生したときは 255 を返します。
たとえば、この関数は コード例 2-4 に示すように使用することができます。
この例では、対象 OS バージョンが Solaris OS バージョン 2.5.1 (SunOS 5.1) から 8 (SunOS 5.8) までの範囲内に含まれている場合に、JASS_DISABLE_MODE の値に基づいて、スクリプトと構成ファイルのみを無効にしています。
この関数は、指定したファイルが読み取り専用ファイルシステムでマウントされているかどうかを判断するときに使用します。
戻り値: 255 - エラー発生
0 - ファイル $1 が存在するファイルシステムが読み取り専用で
マウントされている。
1 - ファイル $1 が存在するファイルシステムが読み取り専用で
マウントされていいない。
この関数は、ファイルのチェックサムの計算に使用します。この関数は、チェックサムが計算されるファイルを示す単一文字列値を引数としてとります。
この関数は、/etc/inet/inetd.conf ファイルの inetd サービス名を、inetconv(1M) コマンドで使用する SMF FMRI に変換します。この関数は、SMF FMRI に対してではなく、/etc/inet/inetd.conf でレガシー inetd サービス名のみを使用します。変換された FMRI は標準出力に出力されます。
この関数は、ディレクトリの内容を繰り返しコピーするときに使用します。コピー元のディレクトリ名とコピー先のディレクトリ名の 2 つの引数をとります。この関数は、コピー元ディレクトリの内容を、コピー先パラメータで指定したディレクトリにコピーします。指定したディレクトリが存在していない場合は、新しいディレクトリを作成します。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、1 つの通常ファイルをまるごとコピーするときに使用します。コピー元のファイル名とコピー先のファイル名の 2 つの引数をとります。この関数は、コピー元ファイルの内容を、コピー先パラメータで指定したファイルにコピーします。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、シンボリックリンクを対象のプラットフォームにコピーするときに使用します。コピー元のリンク名とコピー先のファイル名の 2 つの引数をとります。この関数は、コピー先パラメータとして渡された新しいファイル名を使用して、指定されたコピー元リンクから新しいシンボリックリンクを作成します。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、JASS_HOME_DIR/Files ディレクトリツリーにある 1 組のファイルシステムオブジェクトを、対象のシステムにコピーするときに使用します。この関数では、次のコピー関数を使用し、元に戻す処理を行ったときに確実に変更が元に戻るようにしています。
通常ファイル、ディレクトリ、およびシンボリックリンクのコピーが可能です。
環境変数により指定される値を含むファイル名に付加されているタグに基づいてファイルを選択的にコピーできることで、この関数は機能を拡張しています。(すべての環境変数の詳細は、第 7 章を参照してください。)
コピーするファイルは、次の条件で選択され、照合に使用される優先度順にリストされています。たとえば、ホスト固有ファイルと汎用ファイルの両方が存在し、対象システムの名前がホスト固有ファイルで定義されているホスト名と一致する場合には、ホスト固有ファイルが使用されます。次の例では、JASS_HOME_DIR 環境変数で指定された /opt/SUNWjass をホームディレクトリとして使用しますが、ユーザーによっては別のホームディレクトリを指定している場合があります。この例では、検索対象のディレクトリツリーは /opt/SUNWjass/Files/ です。
注 - copy_files 関数では、リストに指定されていても JASS_HOME_DIR/Files ディレクトリツリーで検出されないオブジェクトは無視します。 |
1. ホスト固有のバージョン - /opt/SUNWjass/Files/file.JASS_HOSTNAME
このオプションでは、ホスト対象プラットフォームの名前と JASS_HOSTNAME 環境変数で指定した値が一致する場合にのみ、ファイルがコピーされます。たとえば、ファイル名が etc/issue で JASS_HOSTNAME が eng1 である場合、この条件の下でコピーされるファイルは次のとおりです。
/opt/SUNWjass/Files/etc/issue.eng1
2. キーワード + OS 固有のバージョン - /opt/SUNWjass/Files/file-JASS_FILE_COPY_KEYWORD+JASS_OS_VERSION
このオプションでは、キーワードと OS バージョンの名前が、JASS_FILE_COPY_KEYWORD 環境変数および JASS_OS_VERSION 環境変数で指定した値と一致する場合にのみ、ファイルがコピーされます。
たとえば、検索されるファイルが /etc/hosts.allow であり、JASS_FILE_COPY_KEYWORD が「secure」(secure.driver の場合) であり、かつ JASS_OS_VERSION が 5.10 である場合、この条件の下でコピーされるファイルは次のとおりです。
/opt/SUNWjass/Files/etc/hosts.allow-secure+5.10
3. キーワード固有のバージョン - /opt/SUNWjass/Files/file-JASS_FILE_COPY_KEYWORD
このオプションでは、JASS_FILE_COPY_KEYWORD 環境変数で指定された値にキーワードが一致する場合にのみ、ファイルがコピーされます。たとえば、JASS_FILE_COPY_KEYWORD が「server」である場合、この条件の下でコピーされるファイルは次のとおりです。
/opt/SUNWjass/Files/etc/hosts.allow-server
4. OS 固有のバージョン - /opt/SUNWjass/Files/file+JASS_OS_REVISION
このオプションでは、対象プラットフォームの OS リビジョンと、JASS_HOSTNAME 環境変数で指定した値が一致する場合にのみ、ファイルがコピーされます。たとえば、検索されるファイルが /etc/hosts.allow であり、JASS_OS_REVISION が「5.10」である場合、この条件の下でコピーされるファイルは次のとおりです。
/opt/SUNWjass/Files/etc/hosts.allow+5.10
5. 汎用バージョン - /opt/SUNWjass/Files/file
このオプションでは、ファイルが対象システムにコピーされます。
たとえば、ファイル名が etc/hosts.allow である場合、この条件の下でコピーされるファイルは次のとおりです。
/opt/SUNWjass/Files/etc/hosts.allow
6. コピー元ファイルのサイズが 0 - ファイルの長さまたはサイズがゼロの場合には、そのファイルはシステムにコピーされません。
この関数は、対象システム上に空ファイルを作成するときに使用します。touch、chown、および chmod コマンドを組み合わせて使用し、特定の所有者、グループ、およびアクセス権を持つ空ファイルを作成します。
この例では、/usr/local ディレクトリに、guppy と、グループ staff に所有され、アクセス権 750 を持つ testing という名前のファイルが作成されます。この関数では、表 2-5 に記載されているオプションを使用します。
create_a_file /usr/local/testing create_a_file -o root /usr/local/testing create_a_file -o root:sys /usr/local/testing create_a_file -o root -m 0750 /usr/local/testing |
この関数は、指定したファイルとすべてのファイルバックアップ操作に対して一意の時刻表示値を作成するときに使用します。一意の接尾辞値が必要となる、バックアップ済みファイルのバックアップを作成する場合に、この関数は便利です。作成される時刻表示値の形式は、JASS_TIMESTAMP と同じ形式です。この関数で作成された時刻表示値は、JASS_SUFFIX 環境変数に格納されます。詳細については、第 7 章の 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 という名前に変更しています。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、特定の FMRI リスト上のすべての SMF サービスを無効にするときに使用します。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
引数: $1 - 無効にする 1 つ以上の SMF サービスの FMRI
この関数は、特定の FMRI リスト上のすべての SMF サービスを有効にするときに使用します。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
引数: $1 - 有効にする 1 つ以上の SMF サービスの FMRI
この関数は、指定されたキーワード値ペアで、まだアクティブな最新の Solaris Security Toolkit 処理を検索するときに使用します。キーワード値ペアの格納と取得の詳細については、set_stored_keyword_val (set_stored_keyword_val) および get_stored_keyword_val (get_stored_keyword_val) を参照してください。
この関数は、システム上の取り消されていないすべての Solaris Security Toolkit の実行を検索します。実行のいずれかで set_stored_keyword_val コマンドを使用して、検索対象のキーワード値ペアを格納している場合、関数は最新のタイムスタンプを返します。このコマンドを使用している実行が存在しない場合、何も返されません。
引数: $1 - チェックするキーワード
$2 - 検索対象の値
戻り値: そのスクリプトとキーワード値ペアを使用している
最新のアクティブな実行のタイムスタンプを出力し、
そのような実行が見つからなかった場合は "" を出力する。
この関数は、copy_filesで説明されているタグ拡張ファイル名を返すときに使用します。
戻り値: 拡張ファイル名、または空 (ファイル名が一致しなかった場合)
この例では、システム jordan 上で関数が実行されたときにファイル JASS_HOME/Files/etc/motd.jordan が存在していた場合、/etc/motd.jordan が返されます。
この関数は、保存ファイルから、格納されているキーワード値ペアを取得するときに使用します。使用する保存ファイルのデフォルトは JASS_RUN_VALUES ファイルですが、独自のファイル名を指定できます。
引数: $1 - チェックするキーワード
$2 - リポジトリ名、デフォルトは空白
戻り値: 0 - キーワードを検出。RETURN_VALUE はファイル内で
その値に設定済み
1 - ファイルが見つからない。
2 - キーワードはファイル内で設定されていない。
この関数は、lock_after_retries が設定されている user_attr エントリを持つパスワード付きのユーザーアカウントを取得するときに使用します。この関数は、監査スクリプトと終了スクリプトの両方で便利です。enable-account-lockout.finまたは enable-account-lockout.audを参照してください。
戻り値: パスワードと lock_after_retries が設定されている
ユーザーのリスト。
この 2 つの関数は、パッチがシステムに適用されているかどうかを判定するときに使用します。これらの関数は、チェックするパッチ番号を示す単一文字列値を引数として受け取ります。
この関数は、SMF サービスが有効であるかどうかを判断するときに使用します。
引数: $1 - チェックする SMF サービスの FMRI
戻り値: 0 - サービスは有効であるか、再起動後有効になる。
1 - サービスは無効でアップグレードマニフェストには
有効化スクリプトが存在しない、または FMRI が
認識されていない。
この関数は、SMF サービスがインストールされているかどうかを判断するときに使用します。スタンドアロンモードでは、SMF コマンドが検証を実行します。JumpStart モードでは、サービスマニフェストの .xml ファイルを検索することで検証が実行されます。
引数: $1 - チェックする SMF サービスの FMRI
戻り値: 0 - サービスはインストールされている (スタンドアロンモード)、
またはサービスマニフェストが存在する (JumpStart モード)。
1 - サービスはインストールされていない (スタンダードモード)、
サービスマニフェストが存在しない (JumpStart モード)、
または FMRI が認識されていない。
この関数は、SMF サービスが実行中であるかどうかを判断するときに使用します。
戻り値: 0 - サービスは実行中
1 - サービスは実行中ではない
この関数は、あるユーザーアカウントが存在するかどうかを判断するときに使用します。
戻り値: 0 - ユーザーアカウントは存在する
1 - ユーザーアカウントは存在しない
この関数は、ユーザーアカウントがパスワードファイル内でロックされているかどうかをチェックするときに使用します。
戻り値: 0 - ユーザーアカウントはロックされている
1 - ユーザーアカウントはロックされていない
この関数は、あるユーザーアカウントにパスワードが設定されているかどうかをチェックするときに使用します。
戻り値: 0 - ユーザーパスワードは「NP」ではない
1 - ユーザーパスワードは「NP」である
この関数から「NP」(パスワードなし) が返された場合、そのユーザーにはパスワードは定義されておらず、パスワードなしでログインできます。実際にユーザーがパスワードなしでログインできるかどうかは、ユーザーのログイン方法と、そのログインメカニズムのセキュリティー制限によって決まります。たとえば、Secure Shell のデフォルト構成では、パスワードを持っていないユーザーのログインを許可しません。
この関数は、あるユーザーアカウントが /etc/shadow ファイルにパスワードエントリを持っているかどうかを確認するときに使用します。
戻り値: 0 - ユーザーアカウントはパスワードファイル内にある
1 - ユーザーアカウントはパスワードファイル内にない
この関数は、あるユーザーアカウントをロックするときに使用します。
この関数は、シンボリックファイルリンクを作成するときに使用します。この関数では、元に戻す処理を行ったときに元に戻せるように、必要なマニフェスト項目を自動的に追加します。
引数: $1 - ソースリンクファイル名
$2 - 宛先リンクファイル名
この関数は、対象システム上にディレクトリを新規作成するときに使用します。この関数は、作成するディレクトリ名を示す単一文字列値を引数として受け取ります。mkdir に -p オプションを付けると、対象のディレクトリが存在している場合にエラーが報告されなくなります。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、ファイル名を別のファイル名に移動するときに使用します。元のファイル名と移動先のファイル名の 2 つのエントリが必要です。元のファイル名を、移動先パラメータで指定したファイル名に移動、つまり変更します。この関数では、元に戻す処理を行ったときにこの操作を元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、Solaris OS パッケージをシステムから削除するときに使用します。この関数で実行した操作は確定されるので、元に戻す処理で復元することはできません。表 2-6 に、この関数のオプションを示します。
pkgrm ask ファイル名。デフォルトでは、他のファイルを指定しない場合、pkgrm ask ファイル (noask_pkgrm) が使用されます。 |
|
この関数は、SMF サービスのプロパティー値を設定するときに使用します。
引数: $1 - サービスの FMRI
$2 - 設定するプロパティー名
$3 - 設定するプロパティー値
この関数は、格納されているキーワード値ペアを保存ファイルに設定するときに使用します。使用されるデフォルトのファイルは JASS_RUN_VALUES ファイルです。
戻り値: 0 - キーワードは設定されている。ファイル内にすでに存在してい
るキーワードが設定されている場合、古い値は上書きされます
1 - ファイル書き込み時に問題発生。
この関数は、あるユーザーアカウントのロックを解除するときに使用します。この関数では、元に戻す処理を行ったときに元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、再起動後に実行されるアップグレードファイルに inetconv(1M) コマンドを実行する指示を書き込むときに使用します。inetconv コマンドは inetd.conf エントリを SMF リポジトリにインポートします。この関数では、元に戻す処理を行ったときに元に戻せるように、必要なマニフェスト項目を自動的に追加します。
この関数は、ユーザーによって変更されていない Solaris Security Toolkit ソフトウェア内の任意のファイルに関する logWarning コマンドを発行するときに使用します。これらのファイルは Solaris Security Toolkit によりインストール可能ですが、構成が不完全な場合、予期せぬ結果を招くため、これらのファイルをチェックしてファイルが想定どおりであることを確認する必要があります。ファイルを変更したり、ソフトウェアに付属していないカスタムバージョンを使用したりすると、警告は出されません。
接頭辞なしのフロントスラッシュルート (/) を起点とした完全指定の
インストール済みターゲットパスを指定します。
たとえば、/etc/motd のように指定します。
この関数は、等号 (=) で区切られている名前値ペアをファイルに書き込むときに使用します。値が NULL である場合、何も書き込まれません。この関数は check_and_log_change_needed 関数と一緒に使用してください (check_and_log_change_neededを参照)。
引数: $1 - ファイル名
$2 - ファイル内のキーワード
$3 - 新しい値
このソフトウェアの監査関数には、プライベートとパブリックの 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 と表示されます。
検出されるファイルタイプを、表 2-7 に示します。
この関数は、crontab エントリ $2 がユーザー $1 の crontab ファイル内に存在するかどうかをチェックするときに使用します。
引数: $1 - crontab ファイルの所有者のユーザー名
$2 - crontab テーブル内でチェックするプログラム名
戻り値: 0 - $2 は存在する
0 以外 - crontab エントリ $2 が見つからないか
crontab ファイルが見つからない
この関数を使用すれば、共通の監査作業である、ファイル内のキーワード値ペアのチェックがより便利になります。キーワードは、等号 (=) によって値から分離された、行の最初の空白文字以外の文字である必要があります。チェック対象のファイルが存在する必要があります。存在しないと、関数の動作が未定義になります。
引数: $1 - チェックするファイル
$2 - $3 内の値と照合してチェックするキーワード
$3 - $2 内のキーワードと照合してチェックする値
この関数は、最小化プラットフォームでのみパッケージチェックを実行する必要があるときに使用します。最小化プラットフォームとは、不要な Solaris OS パッケージを削除したプラットフォームです。この関数は、JASS_CHECK_MINIMIZED 環境変数により動作が制御されることを除けば、check_packagesNotExist 関数と同じです。対象システムが最小化されていない場合には、JASS_CHECK_MINIMIZED 環境変数を 0 に設定する必要があります。この場合、いずれのチェックも行われず、チェックが実行されなかったという通知とともに、値 0 が表示されます。対象システムが最小化されている場合には、check_packageNotExists 関数と同様に動作し、成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この関数は、インストールされていないサービスをチェックするときに使用します。この関数を使用するのは、パッケージの存在が必ずしもエラーではない場合、たとえばシステムが最小化されていない場合などの特別なケースです。この関数は、環境変数 JASS_CHECK_MINIMIZED = 1 (詳細は第 7 章を参照) により制御されます。
引数: $1 - services - チェックするサービスのリスト
$2 - vulnValue - 脆弱性値 (整数)
$3 - logStatus - ログ状態 (オプション)
戻り値: 255 - エラーが発生した場合、または指定された引数が無効である場合
0 - パッケージがまったく存在しない場合
1 - 1 つ以上のパッケージが存在する場合
この 2 つの関数は、対象システムにソフトウェアパッケージがインストールされているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、対象システムにソフトウェアのパッチがインストールされているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
注 - パッチのバージョンを指定することができます。指定する場合は、インストールされているバージョンが、指定するバージョン以上でなければなりません。バージョンを指定しない場合は、いずれかのバージョンのパッチがインストールされていれば、成功と表示されます。 |
この 2 つの関数は、特定の実行時引数を使用するプロセスが、システム上で実行されているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、対象システムでプロセスが実行されているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、対象システムにサービス構成ファイルが存在しているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、サービスのリストをチェックして、各サービスが無効と有効のどちらであるかを確認するときに使用します。
引数: $1 - services - チェックするサービスのリスト
$2 - vulnValue - 脆弱性値
$3 - logStatus - ログ状態 (失敗時にログが必要である場合は LOG
に設定)
$4 - relatedInfo - 関連情報の文字列
戻り値: 255 - エラーが発生した場合、または指定された引数が無効である場合
0 - すべてのサービスが無効/有効である場合
1 - 1 つ以上のサービスが無効/有効である場合
この関数は、サービスのリストをチェックして、各サービスがインストールされているかどうかを確認するときに使用します。
引数: $1 - services - チェックするサービスのリスト
$2 - vulnValue - 脆弱性値
$3 - logStatus - ログ状態 (失敗時にログが必要である場合は LOG
に設定)
$4 - relatedInfo - 関連情報の文字列
戻り値: 255 - エラーが発生した場合、または指定された引数が無効である場合
0 - サービスがまったく存在しないまたはすべて存在する場合
1 - 1 つ以上のパッケージが存在する、または存在しない場合
この 2 つの関数は、SMF コマンドを使用して、あるサービスのプロパティーのオプションが有効と無効のどちらであるかをチェックするときに使用します。
引数: $1 - チェックするサービスのリスト
$2 - チェックするサービスのプロパティー
$3 - オプションの前のパターン
$4 - オプション
$5 - 整数の脆弱性値
$6 - 失敗時にログが必要である場合は LOG に設定 (オプション)
$7 - 関連情報の文字列 (オプション)
戻り値: 255 - エラーが発生した場合、または指定された引数が無効である場合
0 - サービスオプションは有効 (無効)
1 - サービスオプションは無効 (有効)
この関数は、SMF コマンドを使用して、あるサービスのプロパティーのオプションが無効であるかどうかをチェックするときに使用します。
引数: $1 - FMRI のリスト
$2 - property
$3 - vulnvalue
$4 - logStatus
戻り値: 255 - エラーが発生した場合、または指定された引数が無効である場合
0 - プロパティーは有効 (無効)
1 - プロパティーは無効 (有効)
この 2 つの関数は、サービスのリストをチェックして、各サービスが実行中であるかどうかを確認するときに使用します。
引数: $1 - サービスのリスト
$2 - vulnvalue
$3 - logStatus
$4 - related Info
戻り値: 255 - エラーが発生した場合、または指定された引数が無効である場合
0 - すべてのサービスが実行中である/実行中でない
1 - 1 つ以上のサービスは実行中ではない
この 2 つの関数は、対象システムに実行コントロール開始スクリプトが存在しているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、対象システムに実行コントロール停止スクリプトが存在しているかどうかを判定するときに使用します。成功は 0、失敗は 1、エラー状態は 255 と表示されます。
この 2 つの関数は、ユーザーアカウントロックされているかどうかをチェックするときに使用します。
戻り値: 255 - エラーが発生した場合、または指定された引数が無効である場合
0 - ユーザーがロックされている場合
1 - ユーザーがロックされていない場合
この関数は、チェックスクリプトのすべてのプロセスが完了したことと、そのスクリプトのスコアを計算する必要があることを通知するときに使用します。通常、この関数はチェックスクリプトの最後のエントリになります。スクリプトの終了を示すメッセージを表示する場合は、この関数に単一文字列を引数として渡します。
この関数は、実行中のサービスのコマンドまたはプロセスのリストを取得するときに使用します。
戻り値: "" - サービスプロセステストと関連付けられている
プロセスがない場合 - プロセスは
{ pid user comm [pid user common] } の形式で特定の
サービスと関連付けられている
この関数は、監査スクリプトを呼び出すときに使用します。通常、この関数は監査スクリプトの最初の命令であり、コメントや変数宣言は含まれません。この関数は、スクリプト名を定義し、バナーを表示して、スクリプトスコアを 0 にリセットします。
引数: $1 - 監査スクリプト名
$2 - 監査スクリプトの説明 (複数行にすることも可能で、
logFormattedMessage 関数を使用してフォーマットされる。)
$3 - PASS または FAIL メッセージの次にユーザーに表示する
関連情報 (オプション)で、logFormattedMessage
関数を使用してフォーマットされる。
戻り値: 255 - エラーが発生した場合、または指定された引数が無効である場合
0 - ユーザーがロックされている場合
1 - ユーザーがロックされていない場合
#-------------------------------------------------------------- # Apache # # Description of Check #-------------------------------------------------------------- |
Copyright© 2005, Sun Microsystems, Inc. All rights reserved.