4


取消系统更改

本章提供的信息和步骤可用于取消(撤消)Solaris Security Toolkit 软件在加强安全性运行过程中所做的更改。此选项提供一种自动机制,通过该机制可使系统返回到 Solaris Security Toolkit 加强安全性操作或一系列操作之前的状态。

本章包含以下主题:


了解如何记录并取消更改

每次 Solaris Security Toolkit 加强安全性操作都在 JASS_REPOSITORY 下创建一个运行目录。这些目录的名称基于运行的日期和时间。除了在屏幕上显示输出之外,Solaris Security Toolkit 软件还会在目录下创建一系列文件以跟踪更改并记录其操作。

存储在目录中的文件跟踪对系统进行的修改,并使撤消功能生效。



caution icon

注意 - 管理员不应更改 JASS_REPOSITORY中的文件内容。



当在 JumpStart 或者独立模式下使用 Solaris Security Toolkit 软件加强系统的安全性时,软件将系统更改记录在 JASS_REPOSITORY/jass-manifest.txt 文件中。此文件列出了撤消功能用于取消更改的操作。该文件包含有关通过 Solaris Security Toolkit 软件加强安全性操作的信息,包括创建、复制、移动或删除的文件。另外,此文件还可包含取消更复杂的更改(例如软件包安装)时所需的条目(标准条目和定制条目)。每次加强安全性操作都会创建一个单独的 jass-manifest.txt 文件。



注 - Solaris Security Toolkit 软件的撤消功能仅能取消那些在清单文件中具有相应条目的更改。



撤消操作会仔细检查那些在 Solaris Security Toolkit 运行过程中生成并保存在JASS_REPOSITORY 中的清单文件。并将备份文件恢复到它们原来的位置。如果文件没有备份,则无法使用撤消功能。

撤消 Solaris Security Toolkit 操作并不会删除相关的目录。而是在 JASS_REPOSITORY 目录下创建两个文件:jass-undo-log.txtreverse-jass-manifest.txt。随后再次执行 jass-execute -u 时,不会列出已撤消的操作。加强安全性操作只能撤消一次。


撤消系统更改的要求

在使用 Solaris Security Toolkit 软件的撤消功能时,请注意以下限制和要求。


定制脚本以撤消更改

Solaris Security Toolkit 框架为设计和构建 finish 脚本提供了灵活性。该框架允许扩展 Solaris Security Toolkit 软件的功能以更好地满足组织的要求,同时也能帮助您在配置的生命周期内改善对系统配置的管理。

当定制脚本时,了解所采取的操作如何影响撤消功能是非常重要的。为了简化定制脚本,助手功能可对清单文件做适当的更改。(撤消功能根据清单文件的内容取消加强系统安全性运行操作。) 在多数情况下,这些助手功能提供了为您机构定制脚本所需的操作。

有关助手功能的列表和使用它们的信息,请参阅《Solaris Security Toolkit 4.1 Reference Manual》。使用这些助手功能代替它们对应的系统命令,从而使撤消运行操作能够参考清单文件中的相关条目。

在某些情况下,要执行的功能可能不具有助手功能。在这些情况下,请使用名为 add_to_manifest 的特殊功能。使用此功能可将条目手动插入到清单文件中,而不必调用助手功能。请慎重使用此特殊功能,以保护系统和 Solaris Security Toolkit 信息库的完整性。例如,可使用此特殊功能添加非 Sun 的 pkg 格式的软件包。在此实例中,需要通知撤消功能如何删除在加强安全性运行操作过程中以其他格式添加的软件包。

利用助手功能和特殊的 add_to_manifest 功能,Solaris Security Toolkit 软件提供了一种简单灵活的方法,可定制脚本,并可撤消运行操作对系统进行的更改。

如果更改 finish 脚本时,没有使用这些功能,则 Solaris Security Toolkit 无法了解已经发生的更改。因此,必须手动撤消清单文件没有相关记录的任何更改。

在另一个实例中,在更改系统中的文件之前,应首先保存文件的原始版本。在 Solaris Security Toolkit 软件环境外,用户通常执行 /usr/bin/cp 命令以完成该任务。然而,在 Solaris Security Toolkit 软件环境下,如果直接使用此命令,Solaris Security Toolkit 软件无从了解需要创建一个清单条目。因此,请使用 backup_file 助手功能,而不要使用 cp 命令。该功能以 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

 

该输出表明加强安全性运行操作结束后更改了三个文件。


使用带有撤消功能的选项

本节介绍了 jass-execute -u 命令和在执行撤消操作时可使用的选项。



注 - 不能在撤消功能中使用 -d-a-h-l-H 选项。在静止模式下运行撤销功能时,您必须提供 -b、 -k -f 选项。



jass-execute -u命令是执行撤消操作的标准命令。此命令会自动发现上次执行加强安全性操作以来手动进行的任何更改。如果 Solaris Security Toolkit 软件发现了上次执行加强安全性操作以来手动更改的文件,系统会提示选择以下响应操作:

1. 在恢复原始的文件(加强安全性运行操作前存在的文件)之前,请备份最新的文件。

2. 保留最新的文件,且不要恢复原始文件。

3. 强制覆盖手动更改的任何文件(可能会丢失数据)并恢复原始文件。

如果要更改缺省的撤消操作,在执行撤消命令时请使用 -b-k-f 选项。

表 4-1 列出了可与撤消操作一起使用的命令行选项。有关每个选项的详细信息,请参阅以下几节。


表 4-1 将命令行选项与撤消命令结合使用

选项

说明

-b

备份自上次加强安全性运行操作以来手动更改的所有文件,然后将系统恢复到原始状态。

-f

取消在加强安全性运行操作时未遇到异常情况下的更改,也包括加强安全性运行操作后手动更改的文件。

-k

在加强安全性运行操作后保存对文件所做的手动更改。

-m

将输出发送到一个电子邮件地址。

-o

将输出定向到一个文件。

-q

防止将输出显示到屏幕上。又称为静止选项。输出存储在JASS_REPOSITORY/jass-undo-log.txt 文件中。


 

备份选项

-b 选项自动备份自上次加强安全性运行操作以来手动更改的任何文件,然后将文件恢复到加强安全性运行操作前的原始状态。为实现手动更改,需要将恢复文件与备份文件作对比,并手工调整它们之间的不同。使用此选项备份文件的实例用法如下。


/etc/motd.BACKUP.JASS_SUFFIX

 

强制选项

-f 选项取消加强安全性运行操作过程中未发生异常情况的更改,也包括在加强安全性运行操作之后手动更改的文件。该撤消运行操作不会将所保存的文件校验和与现有文件版本的校验和进行比较。因此,如果在加强安全性运行操作后手动更改了文件,则在执行具有强制选项的撤消操作后,文件更改会被覆盖或者丢失。

您可能需要在撤消运行操作完成后再次进行手动更改。此外,有必要根据所做的更改类型调整文件组之间的差异。为避免发生这些问题,请使用前面提到的 jass-check-sum 命令或 -b 命令行选项。

保留选项

-k 选项自动保留加强安全性运行操作后所做的手动更改而不恢复原始文件。-k 选项可搜索文件中的任何不匹配内容,生成通知并进行记录,但不用原始文件覆盖现有文件。只有那些在文件 jass-checksums.txt中保存了有效的校验和的更改才会进行取消。

此选项并非没有缺点。例如,如果使用 finish 脚本修改了一部分文件之后又手动修改了这些文件,则该选型会导致系统不一致。

以 finish 脚本remove-unneeded-accounts.fin 为例。该脚本修改了系统中的 /etc/passwd/etc/shadow 文件。如果用户在加强安全性运行操作完成后手动更改了口令,则与 /etc/shadow 文件相关的校验和将与 Solaris Security Toolkit 软件保存的值不匹配。因此,如果使用了保留选项,则只将 /etc/passwd 文件复制回原始状态,/etc/shadow 文件仍保持其当前形式,两个文件不再一致。

输出文件选项

-o output-file 选项将 jass-execute 运行的控制台输出重新定向到一个单独的文件(output-file)。

此选项不影响 JASS_REPOSITORY 目录中的日志。终端连接缓慢时,可使用该选项,因为 Solaris Security Toolkit 撤消操作会产生大量重要的输出。

静止输出选项

-q 选项可阻止 Solaris Security Toolkit 软件将输出显示到屏幕上。此选项不影响 JASS_REPOSITORY 目录中的日志。与 -o 选项类似,此选项特别有助于通过 cron(时钟守护进程)作业或较慢的网络连接来运行 Solaris Security Toolkit 软件。

电子邮件通知选项

-m email-address 选项指示 Solaris Security Toolkit 软件将一个已完成运行操作的副本发送到一个电子邮件地址。使用其他选项除了可在系统上生成日志外,还可生成电子邮件报告。


撤消系统更改

有时必须取消在一个或多个 Solaris Security Toolkit 加强安全性运行操作过程中所做的更改。如果发现在加强安全性运行操作时所做的更改对系统产生了负面影响,请撤消这些更改。

例如,如果在加强安全性运行操作后发现禁用了一项所需的服务(例如 NFS),请撤消这次加强安全性运行操作。然后,启用 NFS 并用修订的安全性配置文件重复加强安全性运行操作。

本节提供了在一个或者多个加强安全性运行操作的过程中取消更改的指导。请注意,对于有效地取消加强安全性运行操作有一些限制和要求。请参阅撤消系统更改的要求


procedure icon  撤消 Solaris Security Toolkit 运行操作

1. 备份并重新引导系统。

在每次撤消运行前重新引导并备份系统以确保能够返回或恢复到一个已知的工作状态。

2. 确定在使用 jass-execute -u 命令时使用哪些选项。

请参阅使用带有撤消功能的选项

以下指导假设您正在使用 jass-execute -u 命令。

3. 要使用标准 -u 选项撤消一个或多个加强安全性运行操作,请在 JASS_HOME_DIR 中输入以下命令:


# ./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. 检查输出以确定需要撤消哪些运行操作,然后输入相应的数字。

对于所选的项,Solaris Security Toolkit 软件取消每个索引号等于或小于所选值的运行操作。即撤消运行操作将按照与原先所做更改相反的顺序来撤消这些更改,从最近的加强安全性运行操作开始一直到所选的运行操作。使用前面的实例作为指导,如果选择了运行操作 3,则撤消运行操作首先取消运行操作 1 的更改,然后取消运行操作 2 的更改,最后取消运行操作 3 的更改。

以下实例显示了撤消运行操作处理两个清单文件条目时生成的输出。


代码示例 4-3 撤消运行操作处理多个清单文件条目的输出样例

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

 

在此实例中,Solaris Security Toolkit 软件撤消了一个复制操作并删除了加强安全性运行过程中所添加的一个文件。撤消运行操作的输出记录了用于恢复系统的实际命令,在需要对系统配置进行错误诊断时可以清楚地理解此过程并用作参考。

撤消运行操作会继续进行,直到处理完所有运行操作和相关的清单文件并取消了更改为止。

Solaris Security Toolkit 软件除了通过查找所有位于 JASS_REPOSITORY 中的清单文件以收集有关每次加强安全性运行的信息之外,它还会比较每个修改的文件的校验和。在校验和文件中的任何不匹配都会产生一个通知并进行记录。对于这些文件,撤消运行操作会询问所要采取的操作。

5. 如果撤消运行操作发现异常(在加强安全性运行操作后手动更改了文件),请输入这些选项之中的一个。

以下是一个显示了异常和处理异常选择的实例。


代码示例 4-4 撤消异常的输出样例

[...]
 
================================================================
undo.driver: Undoing Finish Script: install-templates.fin
================================================================
 
[NOTE] Undoing operation COPY.
cp -p /etc/skel/local.login.JASS.20030125223413 /etc/skel/local.login
rm -f /etc/skel/local.login.JASS.20030125223413
 
[NOTE] Undoing operation COPY.
[WARN] Checksum of current file does not match the saved value.
[WARN]    filename = /etc/.login
[WARN]    current = 3198795829:585, saved = 1288382808:584
 
Please select the course of action:
 
1. Backup.  Save current file before restoring original.
2. Keep.    Keep the current file, making no changes.
3. Force.   Ignore manual changes and overwrite current file.
 
Enter 1, 2, or 3:
 

 

在本实例中,如果选择条目 1,会显示以下输出。


代码示例 4-5 在撤消过程中选择备份选项的输出样例

Enter 1, 2, or 3: 1
 
[NOTE] BACKUP specified, creating backup copy of /etc/.login.
[NOTE] File to be backed up is from an undo operation.
[NOTE] Copying /etc/.login to /etc.login.BACKUP.JASS.20030125224926
cp -p /etc/.login.JASS.20030125223413 /etc/.login
rm -f /etc/.login.JASS.20030125223413
 
[...]

 

对于在任何加强安全性运行操作后手动更改的文件采取适当的操作。

当撤消运行操作遇到更改的文件并且选择不覆盖它们时,请在重新引导系统之前解决这些问题。



注 - 在本实例实例中,更改的文件以新的文件名保存:/etc/.login.BACKUP.JASS.20030125224926。在撤消运行操作完成后,将文件与 /etc/.login 相比较以确定是否需要进一步进行处理。



6. 在继续之前解决异常情况。

7. 解决完异常情况后,请重新引导系统。

在加强安全性运行操作前重新引导系统对于停止和启动可用的服务是必要的。