4


システムの変更のリセット

この章では、Solaris Security Toolkit ソフトウェアの強化中に実行された変更のリセット (元に戻す処理) の内容と手順について説明します。このオプションを使用すると、Solaris Security Toolkit の強化処理を実行する前の状態に、システムを自動的に戻すことができます。

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


変更のログ作成とリセット方法について

Solaris Security Toolkit の強化処理では、その実行のたびに JASS_REPOSITORY実行ディレクトリが作成されます。ディレクトリ名は、実行の開始日時に基づきます。画面への出力表示に加え、ディレクトリ内にファイルが作成されて、変更の追跡と操作ログの作成も行われます。

ディレクトリに保存されたファイルは、システムの変更を追跡します。このファイルがあることで、元に戻す機能が使用可能になります。



caution icon

注意 - 管理者は JASS_REPOSITORYディレクトリ内のファイルの内容を書き換えてはなりません。ファイルを変更すると、データの内容が壊れてしまい、元に戻す機能の使用時に、予期しないエラーが発生したりシステムが破損したりするおそれがあります。



Solaris Security Toolkit ソフトウェアでシステムを強化すると、JumpStart またはスタンドアロンモードのいずれのモードでも、JASS_REPOSITORY/jass-manifest.txt ファイルに変更のログが記録されます。このファイルには、変更をリセットする際に元に戻す機能で使用される操作が一覧表示されます。このファイルには、作成されたファイルや、コピー、移動、削除されたファイルなど、Solaris Security Toolkit ソフトウェアによって実行された強化処理についての情報が含まれます。また、ソフトウェアパッケージのインストールなど、より複雑な変更をリセットする際に必要な標準項目とカスタム項目も含まれる場合があります。強化処理を実行するたびに、jass-manifest.txt ファイルが個別に作成されます。



注 - Solaris Security Toolkit ソフトウェアの元に戻す機能は、マニフェストファイル内に項目がある変更のみリセットします。



元に戻す処理では、Solaris Security Toolkit 処理の実行中に作成された、JASS_REPOSITORY に保存されているマニフェストファイルが調べられます。ユーザーが使用する、バックアップ、強制、または保持オプションによっては、この処理によってバックアップファイルが元の場所に復元される場合があります。バックアップ、強制、および保持オプションの詳細は、次のページを参照してください。

強化処理中にファイルがバックアップされていないと、JASS_SAVE_BACKUP 変数が user.init ファイル内で 0 として定義されるか、あるいは -c オプションが使用された場合、元に戻す機能は使用できません。詳細は、システムの変更を元に戻すための要件を参照してください。

Solaris Security Toolkit の処理を元に戻しても、関連するディレクトリは削除されません。その代わり、JASS_REPOSITORY ディレクトリに jass-undo-log.txtreverse-jass-manifest.txt の 2 つのファイルが作成されます。jass-execute -u を次回実行するときは、すでに元に戻されている処理は表示されません。強化処理は一度だけ元に戻すことができます。


システムの変更を元に戻すための要件

Solaris Security Toolkit ソフトウェアの元に戻す機能には、以下の制限事項と要件があります。


変更を元に戻すスクリプトのカスタマイズ

Solaris Security Toolkit フレームワークでは、終了スクリプトの設計と構築が柔軟に行えます。このフレームワークを使用すれば、組織の必要性に応じて Solaris Security Toolkit ソフトウェアの機能を拡張できるほか、システムのライフサイクルに合わせてシステム構成を上手に管理することができます。

スクリプトをカスタマイズするときは、元に戻す機能が変更によってどのような影響を受けるかを理解しておくことが重要です。ヘルパー関数を使用すれば、マニフェストファイルに正しい変更が行われるので、スクリプトを簡単にカスタマイズできます。元に戻す機能は、マニフェストファイルの内容に基づいて強化処理をリセットします。通常、ヘルパー関数は、組織の必要性に応じてスクリプトをカスタマイズするために必要な要素を提供します。

ヘルパー関数のリストとその使用方法については、『Solaris Security Toolkit 4.2 リファレンスマニュアル』を参照してください。システムコマンドの代わりに、これらのヘルパー関数を使用すれば、元に戻す処理でマニフェストファイル内の関連項目を参照できます。

場合によっては、ヘルパー関数を持たない関数を実行する必要があります。そのようなときは、add_to_manifest と呼ばれる特殊関数を使用します。この関数を使用すると、マニフェストファイルに手動で項目を追加でき、ヘルパー関数を呼び出す必要はありません。この特殊関数を使用するときは、システムと Solaris Security Toolkit リポジトリの完全性を保護するために注意が必要です。この特殊関数の使用例としては、Sun の pkg 形式でないソフトウェアパッケージを追加する場合があります。この場合、強化処理で追加されたほかの形式のパッケージの削除方法を、元に戻す機能に指示する必要があります。

ヘルパー関数と特殊関数 add_to_manifest を使用すれば、Solaris Security Toolkit ソフトウェアでスクリプトのカスタマイズと元に戻す処理への変更の反映を簡単かつ、柔軟に行えます。

これらの関数を使用せずに終了スクリプトの動作を変更すると、その変更が Solaris Security Toolkit ソフトウェアに認識されません。そのため、マニフェストファイルで参照されない変更をすべて手動で元に戻す必要があります。

ほかの例を考えてみます。たとえば、システム上のファイルを変更するときは、最初にオリジナルバージョンのファイルを保存する必要があります。通常、ユーザーは /usr/bin/cp コマンドを実行することにより、この作業を Solaris Security Toolkit ソフトウェアのコンテキスト外で行います。ただし、Solaris Security Toolkit ソフトウェアのコンテキスト内では、このコマンドを直接使用すると、リスト項目を作成する必要性が Solaris Security Toolkit ソフトウェアに認識されません。cp コマンドを使用する代わりに、backup_file ヘルパー関数を使用します。この関数は、接尾辞 JASS_SUFFIX を付けてオリジナルファイルのコピーを保存し、ファイルのコピーが作成されたことを Solaris Security Toolkit ソフトウェアに知らせるリスト項目を追加します。また、この関数はファイルのチェックサムも計算します。ファイルのチェックサムは、元に戻す機能と jass-check-sum コマンドで使用されます。


手動で変更されたファイルのチェック

jass-execute -u コマンドは、強化処理の実行後に手動で変更されたファイルを自動的にチェックしますが、場合によっては、jass-check-sum コマンドを使用し、変更されたファイルを一覧表示した上で確認した方が便利なときもあります。

このコマンドを使用すると、JASS_REPOSITORY ディレクトリの内容を確認して、マニフェストファイルに示されるすべてのファイルにチェックサムを実行できるので、強化処理の際にチェックサムが記録されたあとに変更されたファイルを特定できます。このチェックを実行してから強制的な元に戻す処理を実行すれば、不要な障害追跡にかかる時間を節約できる可能性がある有用な情報が得られます。

以下に出力例を示します。


コード例 4-1 手動で変更されたファイルの出力例

# ./jass-check-sum
File Name             Saved CkSum             Current CkSum
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/etc/inet/inetd.con   1643619259:6883         2801102257:6879
/etc/logadm.conf      2362963540:1042         640364414:1071
/etc/default/inetd    3677377803:719          2078997873:720

 

この出力は、強化処理の完了後に 3 つのファイルが変更されていることを示しています。


元に戻す機能でのオプションの使用

この節では、元に戻す機能を実行する際に使用できる jass-execute -u コマンドとオプションについて説明します。



注 - 元に戻す機能では、-c-d-a-h-l、または -H オプションを使用することはできません。非出力モードで元に戻す機能を実行する場合は、-b-k、または -f オプションを指定する必要があります。



jass-execute -u コマンドは、元に戻す処理を実行する際の標準的な方法です。このコマンドは、前回の強化後に手動で変更されたファイルを検出します。Solaris Security Toolkit ソフトウェアで、強化後に手動で変更されたファイルが検出されると、次に示す応答のどれか 1 つを選択するように求められます。

1. 最新のファイルをバックアップしてからオリジナルファイル (強化前に存在していたファイル) を復元する。

2. 最新のファイルを保持し、オリジナルファイルを復元しない。

3. 手動で変更されたファイルを強制的に上書きして (この結果データが消失する可能性がある)、オリジナルファイルを復元する。

4. 常に最新のファイルをバックアップしてからオリジナルファイル (強化前に存在していたファイル) を復元する。

5. 常に最新のファイルを保持し、オリジナルファイルを復元しない。

6. 手動で変更されたファイルを常に強制的に上書きして (この結果データが消失する可能性がある)、オリジナルファイルを復元する。

前回の強化処理以降に変更されたファイルを元に戻すコマンドがどのように処理すべきかを定義する場合は、元に戻すコマンドを実行する際にバックアップ (-b)、保持 (-k)、または強制 (-f) オプションを指定してください。

表 4-1 に、元に戻すコマンドで使用できるコマンド行オプションを示します。各オプションについての詳細は、以降の節を参照してください。


表 4-1 元に戻すコマンドで使用するコマンド行オプション

オプション

説明

-b

前回の強化後に手動で変更されたファイルをバックアップしたあと、システムを元の状態に復元します。

-f

強化後に手動でファイルが変更されていても、強化中に行われた変更を強制的にリセットします。

-k

強化後にファイルに手動で行われた変更を保持します。

-m

出力を電子メールアドレスに送信します。

-o

出力をファイルに送信します。

-q

画面に出力を表示しません。非出力オプションとも呼ばれます。出力は JASS_REPOSITORY/jass-undo-log.txt に保存されます。

-V

元に戻す実行の詳細レベルを指定します。


 

バックアップオプション

-b オプションは、前回の強化後に手動で変更されたファイルを自動的にバックアップした後、ファイルを強化前の状態に戻します。手動の変更を実行するには、復元されるファイルとバックアップされるファイルを比較し、両者の違いを手動で調整する必要があります。このオプションを使用してファイルをバックアップすると、ファイルは以下のように表示されます。


/etc/motd.BACKUP.JASS_SUFFIX

 

強制オプション

-f オプションは、強化後に手動でファイルが変更されていても、強化中に行われた変更を強制的にリセットします。保存されているファイルのチェックサムと現在のバージョンのファイルは比較されません。そのため、強化後に手動でファイルを変更していると、変更内容が上書きされて、元に戻した後に変更内容が失われます。

元に戻す処理の完了後、変更を手動で再実装する必要がある場合もあります。また、変更の種類によっては、ファイル間の違いの調整が必要な場合もあります。



注 - これらの問題を回避するには、jass-check-sum コマンドを使用するか、前述した -b コマンド行オプションを使用します。



保持オプション

-k オプションは、強化処理の実行後にファイルに手動で行われた変更をすべて自動的に保持し、オリジナルファイルを復元しません。-k オプションは、ファイルの不一致を検出します。また、通知データを生成してそのログを記録します。オリジナルファイルによる上書きは行いません。リセットされる変更は、保存されたチェックサムが有効なものだけです。

このオプションには欠点があります。たとえば、終了スクリプトによって変更されたファイルのサブセットがあとで変更されると、システムが矛盾した状態になることがあります。

たとえば、remove-unneeded-accounts.fin 終了スクリプトを使用したとします。このスクリプトは、システム上の /etc/passwd および /etc/shadow ファイルを変更します。強化処理の終了後、ユーザーがパスワードを変更すると、/etc/shadow ファイルに関連付けられたチェックサムが Solaris Security Toolkit ソフトウェアによって保存された値と一致しなくなります。その結果、保持オプションを使用すると、/etc/passwd ファイルのみ元の状態にコピーし直されます。/etc/shadow ファイルは現在の状態のままです。したがって、2 つのファイルが一致しません。

出力ファイルオプション

-o /complete/path/to/output_file オプションを使用すると、jass-execute のコンソール出力が別の output_file に転送されます。

このオプションは、JASS_REPOSITORY ディレクトリ内に保持されるログには影響しません。Solaris Security Toolkit の元に戻す処理は大量の出力を生成するので、このオプションは、低速の端末接続環境で実行する場合に特に有効です。

非出力オプション



注 - 非出力モードで元に戻す機能を実行する場合は、-b-k、または -f オプションを指定する必要があります。



-q オプションを使用すると、Solaris Security Toolkit ソフトウェアは画面に出力を表示しなくなります。このオプションは、JASS_REPOSITORY ディレクトリ内に保持されるログには影響しません。-o オプションと同様、このオプションも、Solaris Security Toolkit ソフトウェアを cron ジョブを利用して実行する場合や、低速のネットワーク接続環境で実行する場合に特に便利です。

電子メール通知オプション

-m e-mail_address オプションを使用すると、完了した実行のコピーが Solaris Security Toolkit ソフトウェアによって、指定された電子メールアドレスに送信されます。他のオプションを使用すると、ログに加えて電子メールレポートも生成されます。


システムの変更を元に戻す

場合によっては、Solaris Security Toolkit の 1 つまたは複数の強化処理で行われた変更のリセットが必要になります。セキュリティー強化処理によって行われた変更がシステムに悪影響を与えているときは、変更を元に戻します。

たとえば、強化処理の実行後、SVM (Solaris Volume Manager) などの必要なサービスが無効になっていることが検出された場合は、次の処理を行います。

1. 強化処理を取り消します。

2. カスタマイズされたドライバを作成します。

ドライバのカスタマイズ手順については、『Solaris Security Toolkit 4.2 リファレンスマニュアル』、第 4 章の「ドライバのカスタマイズ」を参照してください。

3. JASS_SVCS_ENABLE 環境変数を使用し、使用する SVM サービスを有効にします。

JASS_SVCS_ENABLE の使用方法については、『Solaris Security Toolkit 4.2 リファレンスマニュアル』、第 7 章の「JASS_SVCS_ENABLE」を参照してください。

4. 強化処理を繰り返します。

この節では、1 つまたは複数の強化処理によって行われた変更を元に戻す方法について説明します。強化処理を効果的に元に戻すには、制限事項と要件があります。システムの変更を元に戻すための要件を参照してください。


procedure icon  Solaris Security Toolkit の実行を元に戻す

1. システムをバックアップして再起動します。

元に戻す処理を実行する前に、システムをバックアップして再起動することで、システムが既知の作業状態に確実に戻る (または戻れる) ようにしておきます。

2. jass-execute -u コマンドで使用するオプションを決めます。

元に戻す機能でのオプションの使用を参照してください。

以下の説明では、jass-execute -u コマンドを使用することを前提にします。

3. 標準的な -u オプションを使用して 1 つまたは複数の強化処理を元に戻すには、JASS_HOME_DIR/bin から次のコマンドを入力します。


# ./jass-execute -u

 

Solaris Security Toolkit ソフトウェアは、JASS_REPOSITORY 内のマニフェストファイルをすべて検索して、個々の強化処理に関する情報を収集します。マニフェストファイルが空または存在しない場合は、元に戻す変更は存在せず、実行する必要はないと見なされます。また、マニフェストファイルと同じディレクトリ内に jass-undo-log.txt と呼ばれるファイルが存在する場合も、処理はすでにリセット済みで、実行する必要はないと見なされます。収集プロセスが完了すると、結果が表示されます。以下に出力例を示します。


コード例 4-2 元に戻す際に使用可能な処理の出力例

# ./jass-execute -u
[NOTE] Executing driver, undo.driver
Please select a JASS run to restore through:
1. January 24, 2003 at 13:57:27 (/var/opt/SUNWjass/run/20030124135727)
2. January 24, 2003 at 13:44:18 (/var/opt/SUNWjass/run/20030124134418)
3. January 24, 2003 at 13:42:45 (/var/opt/SUNWjass/run/20030124134245)
4. January 24, 2003 at 12:57:30 (/var/opt/SUNWjass/run/20030124125730)
 
Choice? (`q' to exit)?

 

この例では、4 つの強化処理が検出されています。これらの強化処理によってシステムが変更されていますが、まだ元に戻されていません。強化処理のリストは、常に時系列の逆の順序で表示されます。リストの最初の項目が最新の強化処理です。

4. 出力を確認して元に戻す処理を決定したら、該当する番号を入力します。

どの項目を選択した場合でも、選択した値以下のインデックス番号の処理がすべて元に戻されます。つまり、最新の強化処理から選択した強化処理まで、変更の実行順序とは逆の順序で元に戻されます。前の例で考えてみると、処理 3 を選択した場合、最初に処理 1 の変更が元に戻され、次に処理 2 の変更が元に戻され、最後に処理 3 の変更が元に戻されます。

コード例 4-3 は、元に戻す処理で 2 つのマニフェストファイル項目を処理する際に生成される出力を示しています。


コード例 4-3 元に戻す処理で複数のマニフェストファイル項目を処理する場合の出力例

[...]
 
===============================================================
undo.driver: Performing UNDO of
//var/opt/SUNWjass/run/20050715145837.
================================================================
 
[...]
 
================================================================
undo.driver: Undoing Finish Script: update-cron-allow.fin
================================================================
 
[NOTE] Undoing operation COPY.
cp -p /etc/cron.d/cron.allow.JASS.20050715145906
/etc/cron.d/cron.allow
rm -f /etc/cron.d/cron.allow.JASS.20050715145906
 
[NOTE] Removing a Solaris Security Toolkit-created file.
rm -f /etc/cron.d/cron.allow
 
[...]

 

この例では、コピー処理が元に戻され、強化処理で追加されたファイルが削除されます。元に戻す処理の出力には、システムを復元する際に使用される実際のコマンドが示されるので、システムの構成の障害追跡が必要な場合は、そのプロセスを明確に把握して参照できます。

前回の強化処理が成功した以降に変更されたファイルが Solaris Security Toolkit によって検査されてこの検査が正常に完了する場合、すべての処理とその対応マニフェストファイルが処理されて変更が取り消されるまで元に戻す処理は継続します。

Solaris Security Toolkit ソフトウェアは、JASS_REPOSITORY 内のマニフェストファイルをすべて検索して個々の強制処理に関する情報を収集することに加え、次の処理も行います。

a. 変更された各ファイルのチェックサムを比較する。

b. チェックサムファイルに不一致がある場合、通知を生成してログに記録する。

c. これらのファイルをどのように処理するかをユーザーに尋ねる。

5. 元に戻す処理で例外 (強化処理のあとに変更されたファイル) が検出された場合は、オプションの 1 つを入力します。



注 - Solaris Security Toolkit ソフトウェアは特定の例外ファイルに対してなされたユーザーのバックアップ、保持、および強制選択を記憶するため、元に戻す処理でそのファイルが次に例外となる際にファイルに対する選択を行う必要がありません。



以下に、例外と例外を処理するためのオプションを示す出力例を示します。


コード例 4-4 例外を元に戻す場合の出力例

[...]
 
================================================================
undo.driver: Undoing Finish Script: enable-process-accounting.fin
================================================================
 
[NOTE] Undoing operation COPY.
[WARN] Checksum of current file does not match the saved value.
[WARN]    filename = /var/spool/cron/crontabs/adm
[WARN]    current  = db27341e3e1f0f27d371d2e13e6f47ce
[WARN]    saved    = a7f95face84325cddc23ec66d59374b0
 
Select your course of action:
1. Backup - Save the current file, BEFORE restoring original.
2. Keep   - Keep the current file, making NO changes.
3. Force  - Ignore manual changes, and OVERWRITE current file.
 
NOTE: The following additional options are applied to this and ALL 
subsequent files:
4. ALWAYS Backup.
5. ALWAYS Keep.
6. ALWAYS Force.
 
Enter 1, 2, 3, 4, 5, or 6:

 

この例で項目 1 を選択すると、次の出力が表示されます。


コード例 4-5 元に戻す処理でバックアップオプションを選択した場合の出力例

Enter 1, 2, 3, 4, 5, or 6: 1
 
[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.
 
[NOTE] BACKUP specified, creating backup copy of 
/var/spool/cron/crontabs/adm.
[NOTE] File to be backed up is from an undo operation.
[NOTE] Copying /var/spool/cron/crontabs/adm to
/var/spool/cron/crontabs/adm.BACKUP.JASS.20050715151817
cp -p /var/spool/cron/crontabs.JASS/adm.JASS.20050715151719
/var/spool/cron/crontabs/adm
rm -f /var/spool/cron/crontabs.JASS/adm.JASS.20050715151719
 
[NOTE] Undoing operation COPY.
cp -p /var/spool/cron/crontabs.JASS/root.JASS.20050715151717
/var/spool/cron/crontabs/root
rm -f /var/spool/cron/crontabs.JASS/root.JASS.20050715151717
 
[NOTE] Undoing operation MAKE DIRECTORY.
rmdir /var/spool/cron/crontabs.JASS
 
[NOTE] Undoing operation SYMBOLIC LINK.
rm -f /etc/rc3.d/S22acct
 
[NOTE] Undoing operation SYMBOLIC LINK.
rm -f /etc/rc0.d/K22acct

 

項目 4 を選択すると、次の出力が表示されます。


コード例 4-6 元に戻す処理で「常にバックアップ」オプションを選択した場合の出力例

Enter 1, 2, 3, 4, 5, or 6: 4
[NOTE] Always do BACKUP selected.  Overriding JASS_UNDO_TYPE with
BACKUP.
 
[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.
 
[NOTE] BACKUP specified, creating backup copy of 
/var/spool/cron/crontabs/adm.
[NOTE] File to be backed up is from an undo operation.
[NOTE] Copying /var/spool/cron/crontabs/adm to
/var/spool/cron/crontabs/adm.BACKUP.JASS.20050715152126
cp -p /var/spool/cron/crontabs.JASS/adm.JASS.20050715151953
/var/spool/cron/crontabs/adm
rm -f /var/spool/cron/crontabs.JASS/adm.JASS.20050715151953
 
[NOTE] Undoing operation COPY.
[WARN] Checksum of current file does not match the saved value.
[WARN]    filename = /var/spool/cron/crontabs/root
[WARN]    current  = 741af21a62ea7a9e7abe6ba04855aa76
[WARN]    saved    = bcf180f45c65ceff3bf61012cb2b4982
[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.
[NOTE] BACKUP specified, creating backup copy of 
/var/spool/cron/crontabs/root.
[NOTE] File to be backed up is from an undo operation.
[NOTE] Copying /var/spool/cron/crontabs/root to
/var/spool/cron/crontabs/root.BACKUP.JASS.20050715152127
cp -p /var/spool/cron/crontabs.JASS/root.JASS.20050715151951
/var/spool/cron/crontabs/root
rm -f /var/spool/cron/crontabs.JASS/root.JASS.20050715151951
 
[NOTE] Undoing operation MAKE DIRECTORY.
rmdir /var/spool/cron/crontabs.JASS
 
[NOTE] Undoing operation SYMBOLIC LINK.
rm -f /etc/rc3.d/S22acct
 
[NOTE] Undoing operation SYMBOLIC LINK.
rm -f /etc/rc0.d/K22acct

 

選択した元に戻す処理が Solaris Security Toolkit によって完了したところで、強化後に変更フラグが付いたファイルを確認するとともに、必要に応じてシステムの変更を行うことをお勧めします。ファイルの変更によってシステムが矛盾した状態になっている可能性があるため、それらの変更を手動で確認するまでは、システムを再起動しないでください。



注 - この例では、変更されたファイルは /etc/.login.BACKUP.JASS.20050715151817 という新しい名前で保存されます。元に戻す処理が完了したら、そのファイルを /etc/.login と比較して、さらに調整が必要であるかどうかを判断します。



6. 例外を調整してから、操作を続行します。

7. 例外を調整した後、システムを再起動します。

Solaris OS 構成に加えた変更を有効にするためには、システムを再起動する必要があります。



caution icon

注意 - Solaris Security Toolkit を JumpStart モードで稼働させると、Solaris Security Toolkit は rootパスワードを設定します。その後元に戻す操作を行うと、rootパスワードはその以前の設定であるパスワードなしの状態に戻ります。これは、パスワードをまったく入力することなく誰でもルートアカウントにログインできることを意味します。元に戻す操作を行なったあとは、必ず passwd(1) コマンドを使用して rootパスワードをリセットしてください。システムがこのような状態にある場合は、Solaris Security Toolkit 4.2 ソフトウェアによる警告メッセージも表示されます。