跳过导航链接 | |
退出打印视图 | |
系统管理指南:安全性服务 Oracle Solaris 10 8/11 Information Library (简体中文) |
您可以使用一般用户、超级用户或承担 Primary Administrator(主管理员)角色的用户身份来运行 bart 命令。如果以一般用户身份运行 bart 命令,则只能在目录中列出和监视您有权访问的文件(如起始目录中的文件)。以超级用户身份运行 bart 命令的优势是,您创建的清单中会包含有关要监视的隐藏文件和私有文件的信息。如果需要在目录中列出和监视有关具有限制性权限的文件(例如,/etc/passwd 或 /etc/shadow 文件)的信息,请以超级用户身份运行 bart 命令。有关使用基于角色的访问控制的更多信息,请参见基于角色的访问控制(概述)。
以超级用户身份运行 bart 命令会使任何人都能读取其输出。此输出可能包含私有的文件名。如果以超级用户身份运行 bart 命令,请采取适当的措施保护输出。例如,使用可生成具有限制性权限的输出文件的选项。
注 - 本章中的过程和示例显示了由超级用户运行的 bart 命令。除非另有说明,否则以超级用户身份运行 bart 命令为可选操作。
可以在初始安装 Oracle Solaris 软件之后立即创建系统的清单。此类型清单可提供用于比较同一个系统在一段时间内发生的更改的基准线。或者,也可以将此清单与不同系统的清单进行比较。例如,如果为网络中的每个系统创建快照,然后将每个测试清单与控制清单进行比较,则可以迅速确定需要执行哪些操作来实现测试系统与基准线配置的同步。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
# bart create options > control-manifest
指定清单的根目录。由规则指定的所有路径都会被解释为此目录的相对路径。清单中报告的所有路径均为此目录的相对路径。
接受要在目录中列出的单个文件的列表(无论是从命令行执行此选项,还是从标准输入中读取此选项)。
此清单的 rules 文件的名称。请注意,– 在与 -r 选项一起使用时,会从标准输入读取 rules 文件。
禁用文件列表中所有常规文件的内容签名。此选项可用于改善性能。或者,可以在需要更改文件列表的内容时使用此选项,这与系统日志文件的情况类似。
为清单选择一个有意义的名称。例如,使用创建清单的系统名称及日期。
示例 5-1 创建可列出有关系统上每个文件的信息的清单
如果运行 bart create 命令时不带任何选项,则会在目录中列出有关系统上安装的每个文件的信息。基于一个中心映像安装多个系统时,可使用此类清单作为基准线。或者,在需要确保安装完全一致时使用此类清单运行比较。
例如:
# bart create ! Version 1.0 ! Thursday, December 04, 2003 (16:17:39) # Format: #fname D size mode acl dirmtime uid gid #fname P size mode acl mtime uid gid #fname S size mode acl mtime uid gid #fname F size mode acl mtime uid gid contents #fname L size mode acl lnmtime uid gid dest #fname B size mode acl mtime uid gid devnode #fname C size mode acl mtime uid gid devnode / D 1024 40755 user::rwx,group::r-x,mask:r-x,other:r-x 3fd9ea47 0 0 /.java D 512 40755 user::rwx,group::r-x,mask:r-x,other:r-x 3f8dc04d 0 10 /.java/.userPrefs D 512 40700 user::rwx,group::---,mask:--- other:--- 3f8dc06b 010 /.java/.userPrefs/.user.lock.root F 0 100600 user::rw- group::---,mask:---,other:--- 3f8dc06b 0 10 - /.java/.userPrefs/.userRootModFile.root F 0 100600 user::rw-, group::---,mask:---,other:--- 3f8dc0a1 0 10 - . . . /var/sadm/pkg/SUNWdtmad/install/depend F 932 100644 user::rw-, group::r--,mask:r--,other:r-- 3c23a19e 0 0 - /var/sadm/pkg/SUNWdtmad/pkginfo F 594 100644 user::rw- group::r--,mask:r--,other:r-- 3f81e416 0 0 - /var/sadm/pkg/SUNWdtmad/save D 512 40755 user::rwx,group::r-x mask:r-x,other:r-x 3f81e416 0 0 /var/sadm/pkg/SUNWdtmaz D 512 40755 user::rwx,group::r-x mask:r-x,other:r-x 3f81e41b 0 0 /var/sadm/pkg/TSIpgxw/save D 512 40755 user::rwx group::r-x,mask:r-x,other:r-x 3f81e892 0 0 . . .
每个清单都包括一个文件头和多个文件项。每个清单文件项均单独占据一行,具体取决于文件类型。例如,对于以上输出中的每个清单项,类型 F 指定文件,而类型 D 指定目录。同时列出的还有关于大小、内容、用户 ID、组 ID 和权限的信息。输出中的文件项按文件名的编码版本顺序排列,以便正确地处理特殊字符。所有项均按文件名以升序排列。所有非标准文件名(例如那些包含嵌入的换行符或制表符的文件名)都会在排序之前将非标准字符用引号括起来。
以 ! 开头的行提供有关清单的元数据。清单版本行指明清单规范版本。日期行以日期格式显示清单的创建日期。请参见 date(1) 手册页。清单比较工具会忽略某些行。被忽略的行包括空白行、仅包含空格的行,以及以 # 开头的注释。
可以通过以下方法之一定制清单:
指定子树
为系统上的单个子树(而不是大目录的全部内容)创建清单是一种监视特定文件变化的高效方法。可以为系统上的特定子树创建基准线清单,然后定期创建该子树的测试清单。使用 bart compare 命令可将控制清单与测试清单进行比较。使用此选项,可以高效地监视重要的文件系统,以确定是否有任何文件受到入侵者的威胁。
指定文件名
由于创建包含整个系统信息的清单耗时更长,占用空间更大,所需的开销也更高,因此在仅需要列出有关系统上一个或多个特定文件的信息时可选择使用 bart 命令的此选项。
使用 rules 文件
可以使用 rules 文件创建定制清单来列出有关给定系统上特定文件和特定子树的信息,还可以使用 rules 文件监视特定的文件属性。通过使用 rules 文件创建和比较清单,您可以灵活地为多个文件或子树指定多个属性。而使用命令行只能指定一个应用于创建的每个清单或生成的每个报告包含的所有文件的全局属性定义。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
指定子树:
# bart create -R root-directory
指定一个或多个文件名:
# bart create -I filename...
例如:
# bart create -I /etc/system /etc/passwd /etc/shadow
使用 rules 文件:
# bart create -r rules-file
示例 5-2 通过指定子树创建清单
此示例说明如何创建仅包含有关 /etc/ssh 子树中文件的信息的清单。
# bart create -R /etc/ssh ! Version 1.0 ! Saturday, November 29, 2003 (14:05:36) # Format: #fname D size mode acl dirmtime uid gid #fname P size mode acl mtime uid gid #fname S size mode acl mtime uid gid #fname F size mode acl mtime uid gid contents #fname L size mode acl lnmtime uid gid dest #fname B size mode acl mtime uid gid devnode #fname C size mode acl mtime uid gid devnode / D 512 40755 user::rwx,group::r-x,mask:r-x,other:r-x 3f81eab9 0 3 /ssh_config F 861 100644 user::rw-,group::r--,mask:r--, other:r-- 3f81e504 0 3 422453ca0e2348cd9981820935600395 /ssh_host_dsa_key F 668 100600 user::rw-,group::---,mask:---, other:--- 3f81eab9 0 0 5cc28cdc97e833069fd41ef89e4d9834 /ssh_host_dsa_key.pub F 602 100644 user::rw-,group::r--,mask:r--, other:r-- 3f81eab9 0 0 16118c736995a4e4754f5ab4f28cf917 /ssh_host_rsa_key F 883 100600 user::rw-,group::---,mask:---, other:--- 3f81eaa2 0 0 6ff17aa968ecb20321c448c89a8840a9 /ssh_host_rsa_key.pub F 222 100644 user::rw-,group::r--,mask:r--, other:r-- 3f81eaa2 0 0 9ea27617efc76058cb97aa2caa6dd65a . . .
示例 5-3 通过指定文件名定制清单
此示例说明如何创建仅列出有关系统上 /etc/passwd 和 /etc/shadow 文件的信息的清单。
# bart create -I /etc/passwd /etc/shadow ! Version 1.0 ! Monday, December 15, 2003 (16:28:55) # Format: #fname D size mode acl dirmtime uid gid #fname P size mode acl mtime uid gid #fname S size mode acl mtime uid gid #fname F size mode acl mtime uid gid contents #fname L size mode acl lnmtime uid gid dest #fname B size mode acl mtime uid gid devnode #fname C size mode acl mtime uid gid devnode /etc/passwd F 542 100444 user::r--,group::r--,mask:r--, other:r-- 3fcfd45b 0 3 d6 84554f85d1de06219d80543174ad1a /etc/shadow F 294 100400 user::r--,group::---,mask:---, other:--- 3f8dc5a0 0 3 fd c3931c1ae5ee40341f3567b7cf15e2
下面对比列出了同一系统上 /etc/passwd 和 /etc/shadow 文件的 ls -al 命令的标准输出。
# ls -al /etc/passwd -r--r--r-- 1 root sys 542 Dec 4 17:42 /etc/passwd
# ls -al /etc/shadow -r-------- 1 root sys 294 Oct 15 16:09 /etc/shadow
示例 5-4 通过使用 Rules 文件定制清单
此示例说明如何通过使用 rules 文件创建一个清单,仅在清单中列出 /etc 目录中的文件。同一个 rules 文件还包括一些指令,bart compare 命令使用这引起指令监视 /etc/system 文件的 acl 属性更改。
使用文本编辑器创建仅在清单中列出 /etc 目录中文件的 rules 文件。
# List information about all the files in the /etc directory. CHECK all /etc # Check only acl changes in the /etc/system file IGNORE all CHECK acl /etc/system
有关创建 rules 文件的更多信息,请参见BART Rules 文件。
使用所创建的 rules 文件创建控制清单。
# bart create -r etc.rules-file > etc.system.control-manifest ! Version 1.0 ! Thursday, December 11, 2003 (21:51:32) # Format: #fname D size mode acl dirmtime uid gid #fname P size mode acl mtime uid gid #fname S size mode acl mtime uid gid #fname F size mode acl mtime uid gid contents #fname L size mode acl lnmtime uid gid dest #fname B size mode acl mtime uid gid devnode #fname C size mode acl mtime uid gid devnode /etc/system F 1883 100644 user::rw-,group::r--,mask:r--, other:r-- 3f81db61 0 3
在需要监视系统的更改时创建测试清单。使用相同的 bart 选项和同一个 rules 文件,按照与控制清单完全相同的方式来准备测试清单。
使用同一个 rules 文件比较清单。
要监视同一个系统在一段时间内的文件级别更改时,可使用此过程。此类型的清单可以帮助您找到损坏或异常的文件,检测安全违规,或对系统的性能问题进行故障排除。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
# bart create -R /etc > control-manifest
# bart create -R /etc > test-manifest
# bart compare options control-manifest test-manifest > bart-report
用于此次比较的 rules 文件的名称。将 -r 选项和 – 一起使用表示将从标准输入中读取指令。
允许用户从命令行设置全局 IGNORE 指令。
生成标准非本地化输出以进行程序解析的程序模式。
控制系统的 bart create 命令的输出。
测试系统的 bart create 命令的输出。
示例 5-5 比较同一个系统在一段时间内的清单
此示例说明如何监视 /etc 目录在两个时间点之间发生的更改。通过此类比较,可以迅速确定系统上的重要文件是否受到威胁。
创建控制清单。
# bart create -R /etc > system1.control.121203 ! Version 1.0 ! Friday, December 12, 2003 (08:34:51) # Format: #fname D size mode acl dirmtime uid gid #fname P size mode acl mtime uid gid #fname S size mode acl mtime uid gid #fname F size mode acl mtime uid gid contents #fname L size mode acl lnmtime uid gid dest #fname B size mode acl mtime uid gid devnode #fname C size mode acl mtime uid gid devnode / D 4096 40755 user::rwx,group::r-x,mask:r-x,other:r-x 3fd9dfb4 0 3 /.cpr_config F 2236 100644 user::rw-,group::r--,mask:r--,other:r-- 3fd9991f 0 0 67cfa2c830b4ce3e112f38c5e33c56a2 /.group.lock F 0 100600 user::rw-,group::---,mask:---,other:--- 3f81f14d 0 1 d41 d8cd98f00b204e9800998ecf8427e /.java D 512 40755 user::rwx,group::r-x,mask:r-x,other:r-x 3f81dcb5 0 2 /.java/.systemPrefs D 512 40755 user::rwx,group::r-x,mask:r-x, other:r-x 3f81dcb7 . . .
在需要监视 /etc 目录的更改时创建测试清单。
# bart create -R /etc > system1.test.121503 Version 1.0 ! Monday, December 15, 2003 (08:35:28) # Format: #fname D size mode acl dirmtime uid gid #fname P size mode acl mtime uid gid #fname S size mode acl mtime uid gid #fname F size mode acl mtime uid gid contents #fname L size mode acl lnmtime uid gid dest #fname B size mode acl mtime uid gid devnode #fname C size mode acl mtime uid gid devnode / D 4096 40755 user::rwx,group::r-x,mask:r-x,other:r-x 3fd9dfb4 0 3 /.cpr_config F 2236 100644 user::rw-,group::r--,mask:r--,other:r-- 3fd9991f 0 0 67cfa2c830b4ce3e112f38c5e33c56a2 /.group.lock F 0 100600 user::rw-,group::---,mask:---,other:--- 3f81f14d 0 1 d41d8cd98f00b204e9800998ecf8427e /.java D 512 40755 user::rwx,group::r-x,mask:r-x,other:r-x 3f81dcb5 0 2 /.java/.systemPrefs D 512 40755 user::rwx,group::r-x,mask:r-x, other:r-x 3f81dcb70 2 /.java/.systemPrefs/.system.lock F 0 100644 user::rw-,group::r-- ,mask:r--,other: r-- 3f81dcb5 0 2 d41d8cd98f00b204e9800998ecf8427e /.java/.systemPrefs/.systemRootModFile F 0 100644 user::rw-, group::r--,mask:r--, other:r-- 3f81dd0b 0 2 d41d8cd98f00b204e9800998ecf8427e . . .
将控制清单与测试清单进行比较。
# bart compare system1.control.121203 system1.test.121503 /vfstab: mode control:100644 test:100777 acl control:user::rw-,group::r--,mask:r--,other:r-- test:user::rwx, group::rwx,mask:rwx,other:rwx
上面的输出表明 vfstab 文件的权限自创建了控制清单以来已发生更改。此报告可以用于检查所有权、日期、内容或任何其他文件属性是否发生了更改。具备此类信息有助于跟踪可能的文件篡改者和更改可能发生的时间。
可以运行系统间的比较,这样您能够迅速确定在基准线系统与其他系统之间是否存在任何文件级别差异。例如,如果已经在基准线系统上安装了特定版本的 Oracle Solaris 软件,并且需要了解其他系统是否也安装了相同的软件包,则可以创建这些系统的测试清单,然后将测试清单与控制清单进行比较。此类比较会列出与控制系统比较的每个测试系统在文件内容方面的任何差异。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
# bart create options > control-manifest
# bart create options > test1-manifest
为测试清单选择一个独特而有意义的名称。
例如:
# cp control-manifest /net/test-server/bart/manifests
如果测试系统不是 NFS 挂载的系统,请使用 FTP 或其他可靠方法,将控制清单复制到测试系统。
# bart compare control-manifest test1-manifest > test1.report
对于每个测试系统使用相同的 bart 选项。
示例 5-6 将不同系统的清单与控制系统的清单进行比较
此示例说明如何通过将控制清单与不同系统的测试清单进行比较,来监视 /usr/bin 目录内容的更改。
创建控制清单。
# bart create -R /usr/bin > control-manifest.121203 !Version 1.0 ! Friday, December 12, 2003 (09:19:00) # Format: #fname D size mode acl dirmtime uid gid #fname P size mode acl mtime uid gid #fname S size mode acl mtime uid gid #fname F size mode acl mtime uid gid contents #fname L size mode acl lnmtime uid gid dest #fname B size mode acl mtime uid gid devnode #fname C size mode acl mtime uid gid devnode / D 13312 40755 user::rwx,group::r-x,mask:r-x,other:r-x 3fd9e925 0 2 /.s F 14200 104711 user::rwx,group::--x,mask:--x,other:--x 3f8dbfd6 0 1 8ec7e52d8a35ba3b054a6394cbf71cf6 /ControlPanel L 28 120777 - 3f81dc71 0 1 jre/bin/ControlPanel /HtmlConverter L 25 120777 - 3f81dcdc 0 1 bin/HtmlConverter /acctcom F 28300 100555 user::r-x,group::r-x,mask:r-x,other:r-x 3f6b5750 0 2 d6e99b19c847ab4ec084d9088c7c7608 /activation-client F 9172 100755 user::rwx,group::r-x,mask:r-x, other:r-x 3f5cb907 0 1 b3836ad1a656324a6e1bd01edcba28f0 /adb F 9712 100555 user::r-x,group::r-x,mask:r-x,other:r-x 3f6b5736 0 2 5e026413175f65fb239ee628a8870eda /addbib F 11080 100555 user::r-x,group::r-x,mask:r-x,other:r-x 3f6b5803 0 2 a350836c36049febf185f78350f27510 . . .
为需要与控制系统进行比较的每个系统创建一个测试清单。
# bart create -R /usr/bin > system2-manifest.121503 ! Version 1.0 ! Friday, December 15, 2003 (13:30:58) # Format: #fname D size mode acl dirmtime uid gid #fname P size mode acl mtime uid gid #fname S size mode acl mtime uid gid #fname F size mode acl mtime uid gid contents #fname L size mode acl lnmtime uid gid dest #fname B size mode acl mtime uid gid devnode #fname C size mode acl mtime uid gid devnode / D 13312 40755 user::rwx,group::r-x,mask:r-x,other:r-x 3fd9ea9c 0 2 /.s F 14200 104711 user::rwx,group::--x,mask:--x,other:--x 3f8dbfd6 0 1 8ec7e52d8a35ba3b054a6394cbf71cf6 /ControlPanel L 28 120777 - 3f81dc71 0 1 jre/bin/ControlPanel /HtmlConverter L 25 120777 - 3f81dcdc 0 1 bin/HtmlConverter /acctcom F 28300 100555 user::r-x,group::r-x,mask:r-x,other: r-x 3f6b5750 0 2 d6e99b19c847ab4ec084d9088c7c7608 . . .
需要比较清单时,将清单复制到同一个位置。
# cp control-manifest /net/system2.central/bart/manifests
将控制清单与测试清单进行比较。
# bart compare control-manifest system2.test > system2.report /su: gid control:3 test:1 /ypcat: mtime control:3fd72511 test:3fd9eb23
上面的输出表明 /usr/bin 目录中 su 文件的组 ID 与控制系统中的相应组 ID 不同。此信息有助于确定测试系统上是否安装了不同版本的软件,或者是否可能有人篡改了文件。
此过程为可选过程,说明如何通过从命令行指定文件属性来定制 BART 报告。如果创建了列出有关系统上所有文件或特定文件的信息的基准线清单,则可以在需要监视特定目录、子目录、一个或多个文件的更改时运行 bart compare 命令,并指定不同的属性。通过从命令行指定不同的文件属性,可以针对同一清单运行不同类型的比较。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
按照控制清单的准备方式准备测试清单。
例如:
# bart compare -i dirmtime,lnmtime,mtime control-manifest.121503 \ test-manifest.010504 > bart.report.010504
请注意,可使用逗号分隔在命令行语法中指定的各个属性。
此过程也是可选过程,说明如何通过使用 rules 文件作为 bart compare 命令的输入来定制 BART 报告。通过使用 rules 文件,可以定制 BART 报告,从而能够灵活地为多个文件或子树指定多个属性。可以使用不同的 rules 文件针对同一清单运行不同的比较。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
# bart create -r rules-file > control-manifest
# bart create -r rules-file > test-manifest
# bart compare -r rules-file control-manifest test-manifest > bart.report
示例 5-7 通过使用 Rules 文件定制 BART 报告
以下 rules 文件同时包含 bart create 命令和 bart compare 命令的指令。此 rules 文件指示 bart create 命令列出有关 /usr/bin 目录内容的信息。此外,该 rules 文件还指示 bart compare 命令仅跟踪同一个目录的大小和内容的更改。
# Check size and content changes in the /usr/bin directory. # This rules file only checks size and content changes. # See rules file example. IGNORE all CHECK size contents /usr/bin
使用所创建的 rules 文件创建控制清单。
# bart create -r bartrules.txt > usr_bin.control-manifest.121003
在需要监视 /usr/bin 目录的更改时创建测试清单。
# bart create -r bartrules.txt > usr_bin.test-manifest.121103
使用同一个 rules 文件比较清单。
# bart compare -r bartrules.txt usr_bin.control-manifest \ usr_bin.test-manifest
检查 bart compare 命令的输出。
/usr/bin/gunzip: add /usr/bin/ypcat: delete
在上面的输出中,bart compare 命令报告了 /usr/bin 目录中的差异。该输出表明删除了 /usr/bin/ypcat 文件,添加了 /usr/bin/gunzip 文件。