跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 11.1 管理:安全服务 Oracle Solaris 11.1 Information Library (简体中文) |
bart 命令用来创建和比较清单。任何用户都可以运行此命令。不过,用户只能对他们有权访问的文件进行编目和监视。因此,用户和大多数角色都可以有效地对其起始目录中的文件进行编目,但 root 帐户可以对所有文件进行编目,包括系统文件。
任何人都可以读取 BART 清单和报告。如果 BART 输出包含敏感信息,请采取适当的措施来保护输出。例如,使用可生成具有限制性权限的输出文件的选项,或将输出文件置于受保护的目录中。
|
此过程介绍了如何为系统创建基线清单。基于一个中心映像安装多个系统时,可使用此类清单。或者,在需要确认安装完全一致时使用此类清单运行比较。有关基准线清单的更多信息,请参见BART 清单。要了解格式约定,请参见示例 6-1。
注 - 不要尝试对联网的文件系统进行编目。使用 BART 监视联网的文件系统会占用大量的资源,但生成的清单价值很小。
开始之前
要为您的系统创建控制清单,您必须承担 root 角色。
# bart create options > control-manifest
指定清单的根目录。由规则指定的所有路径都会被解释为此目录的相对路径。清单中报告的所有路径均为此目录的相对路径。
接受要在目录中列出的单个文件的列表(无论是从命令行执行此选项,还是从标准输入中读取此选项)。
此清单的 rules 文件的名称。- 参数从标准输入中读取规则文件。
禁用文件列表中所有常规文件的内容签名。此选项可用于改善性能。或者,可以在需要更改文件列表的内容时使用此选项,这与系统日志文件的情况类似。
有关格式的说明,请参见示例 6-1。
用来保护系统清单的一种方法是将其置于只有 root 帐户可以访问的目录中。
# mkdir /var/adm/log/bartlogs # chmod 700 /var/adm/log/bartlogs # mv control-manifest /var/adm/log/bartlogs
为清单选择一个有意义的名称。例如,使用创建清单的系统名称及日期 (mach1-120312)。
示例 6-1 BART 清单格式说明
在本示例中,样例输出后面是对清单格式的说明。
# bart create ! Version 1.1 ! HASH SHA256 ! Friday, September 07, 2012 (22:22:27) # 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 3ebc418eb5be3729ffe7e54053be2d33ee884205502c81ae9689cd8cca5b0090 0 0 . . . /zone D 512 40755 user::rwx group::r-x,mask:r-x,other:r-x 3f81e892 154de3e7bdfd0d57a074c9fae0896a9e2e04bebfe5e872d273b063319e57f334 0 0 . . .
每个清单都包括一个文件头和多个文件项。每个文件项均单独占据一行,具体取决于文件类型。例如,对于以上输出中的每个文件项,类型 F 指定文件,而类型 D 指定目录。同时列出的还有关于大小、内容、用户 ID、组 ID 和权限的信息。输出中的文件项按文件名的编码版本顺序排列,以便正确地处理特殊字符。所有项均按文件名以升序排列。所有非标准文件名(例如那些包含嵌入的换行符或制表符的文件名)都会在排序之前将非标准字符用引号括起来。
以 ! 开头的行提供有关清单的元数据。清单版本行指明清单规范版本。散列行指明所使用的散列机制。有关用作校验和的 SHA256 散列的更多信息,请参见 sha2(3EXT) 手册页。
日期行以日期格式显示清单的创建日期。请参见 date(1) 手册页。清单比较工具会忽略某些行。被忽略的行包括元数据、空白行、仅包含空格的行,以及以 # 开头的注释。
可以通过以下方法之一定制清单:
指定子树
指定单个子树是监视选定的重要文件(如 /etc 目录中的所有文件)的变化的高效方法。
指定文件名
指定文件名是监视特别敏感的文件(如配置和运行数据库应用程序的文件)的高效方法。
使用 rules 文件
通过使用规则文件创建和比较清单,您可以灵活地为多个文件或子树指定多个属性。从命令行中,您可以指定一个应用于清单或报告中的所有文件的一个全局属性定义。通过规则文件,您可以指定不全局应用的属性。
开始之前
您必须承担 root 角色。有关更多信息,请参见如何使用指定给您的管理权限。
指定子树:
# bart create -R subtree
指定一个或多个文件名:
# bart create -I filename...
例如:
# bart create -I /etc/system /etc/passwd /etc/shadow
使用 rules 文件:
# bart create -r rules-file
提示 - 如果您使用了规则文件,请将规则文件与清单保存在一起。为进行有效的比较,在运行比较时必须使用该规则文件。
通过比较清单随时间的变化,您可以找出损坏或异常的文件、检测安全违规或排除系统的性能问题。
开始之前
要创建并比较包含系统文件的清单,您必须承担 root 角色。
# bart create -R /etc > control-manifest
# bart create -R /etc > test-manifest
# mv test-manifest /var/adm/log/bartlogs
在对清单进行比较时请使用创建它们时所用的相同命令行选项和规则文件。
# bart compare options control-manifest test-manifest > bart-report
示例 6-2 跟踪同一系统中文件在一段时间内的变化
本示例说明了如何跟踪 /etc 目录在一段时间内的变化。通过此类比较,您可以查明系统上的重要文件是否受到安全威胁。
创建控制清单。
# cd /var/adm/logs/manifests # bart create -R /etc > system1.control.090712 ! Version 1.1 ! HASH SHA256 ! Friday, September 07, 2012 (11:11:17) # 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 /.cpr_config F 2236 100644 owner@:read_data/write_data/append_data/read_xattr/wr ite_xattr/read_attributes/write_attributes/read_acl/write_acl/write_owner/synchr onize:allow,group@:read_data/read_xattr/read_attributes/read_acl/synchronize:all ow,everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 4e271c59 0 0 3ebc418eb5be3729ffe7e54053be2d33ee884205502c81ae9689cd8cca5b0090 /.login F 1429 100644 owner@:read_data/write_data/append_data/read_xattr/write_x attr/read_attributes/write_attributes/read_acl/write_acl/write_owner/synchronize :allow,group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow,ev eryone@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 4bf9d6d7 0 3 ff6251a473a53de68ce8b4036d0f569838cff107caf1dd9fd04701c48f09242e . . .
之后,使用相同的命令行选项创建一个测试清单。
# bart create -R /etc > system1.test.101012 Version 1.1 ! HASH SHA256 ! Wednesday, October 10, 2012 (10:10:17) # 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 /.cpr_config F 2236 100644 owner@:read_data/write_data/append_data/read_xattr/wr ite_xattr/read_attributes/write_attributes/read_acl/write_acl/write_owner/synchr onize:allow,group@:read_data/read_xattr/read_attributes/read_acl/synchronize:all ow,everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 4e271c59 0 0 3ebc418eb5be3729ffe7e54053be2d33ee884205502c81ae9689cd8cca5b0090 . . .
比较这些清单。
# bart compare system1.control.090712 system1.test.101012 /security/audit_class mtime 4f272f59
此输出表明自控制清单创建以来,audit_class 文件的修改时间已发生变化。如果出现意外变化,您可以进一步进行调查。
通过比较来自不同系统的清单,您可以确定系统是否是以完全相同的方式安装的,或者系统是否已同步升级。例如,如果您为系统定制了特定的安全目标,该比较将查找代表您的安全目标的清单与来自其他系统的清单之间的任何差异。
开始之前
要比较系统清单,您必须承担 root 角色。
# bart create options > control-manifest
有关选项,请参见 bart(1M) 手册页。
# bart create options > test1-manifest
例如:
# cp control-manifest /net/ test-server/var/adm/logs/bartlogs
如果测试系统不是 NFS 挂载的系统,请使用 sftp 或其他可靠方法将清单复制到一个中央位置。
# bart compare control-manifest test1-manifest > test1.report
示例 6-3 识别 /usr/bin 目录中的可疑文件
本示例比较两个系统上 /usr/bin 目录中的内容。
创建控制清单。
# bart create -R /usr/bin > control-manifest.090711 ! Version 1.1 ! HASH SHA256 ! Wednesday, September 07, 2011 (11:11:17) # 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 /2to3 F 105 100555 owner@:read_data/read_xattr/write_xattr/execute/read_attribut es/write_attributes/read_acl/write_acl/write_owner/synchronize:allow,group@:read _data/read_xattr/execute/read_attributes/read_acl/synchronize:allow,everyone@:re ad_data/read_xattr/execute/read_attributes/read_acl/synchronize:allow 4bf9d261 0 2 154de3e7bdfd0d57a074c9fae0896a9e2e04bebfe5e872d273b063319e57f334 /7z F 509220 100555 owner@:read_data/read_xattr/write_xattr/execute/read_attribu tes/write_attributes/read_acl/write_acl/write_owner/synchronize:allow,group@:rea d_data/read_xattr/execute/read_attributes/read_acl/synchronize:allow,everyone@:r ead_data/read_xattr/execute/read_attributes/read_acl/synchronize:allow 4dadc48a 0 2 3ecd418eb5be3729ffe7e54053be2d33ee884205502c81ae9689cd8cca5b0090 ...
为需要与控制系统进行比较的每个系统创建一个相同的清单。
# bart create -R /usr/bin > system2-manifest.101011 ! Version 1.1 ! HASH SHA256 ! Monday, October 10, 2011 (10:10:22) # 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 /2to3 F 105 100555 owner@:read_data/read_xattr/write_xattr/execute/read_attribut es/write_attributes/read_acl/write_acl/write_owner/synchronize:allow,group@:read _data/read_xattr/execute/read_attributes/read_acl/synchronize:allow,everyone@:re ad_data/read_xattr/execute/read_attributes/read_acl/synchronize:allow 4bf9d261 0 2 154de3e7bdfd0d57a074c9fae0896a9e2e04bebfe5e872d273b063319e57f334 ...
将清单复制到同一个位置。
# cp control-manifest.090711 /net/system2.central/bart/manifests
比较这些清单。
# bart compare control-manifest.090711 system2.test.101011 > system2.report /su: gid control:3 test:1 /ypcat: mtime control:3fd72511 test:3fd9eb23
此输出表明 /usr/bin 目录中 su 文件的组 ID 与控制系统中的相应组 ID 不同。此信息可能表明测试系统上安装了不同的软件版本。因为 GID 已更改,所以很有可能是有人篡改了此文件。
此过程对于从现有清单的输出中过滤特定文件属性非常有用。
开始之前
您必须承担 root 角色。有关更多信息,请参见如何使用指定给您的管理权限。
例如:
# bart compare -i lnmtime,mtime control-manifest.121511 \ test-manifest.010512 > bart.report.010512
在命令行语法中使用逗号分隔每个文件属性。
通过使用规则文件,您可以为您关注的特定文件和文件属性定制 BART 清单。通过使用缺省 BART 清单上的不同规则文件,您可以为相同的清单运行不同的比较。
开始之前
您必须承担 root 角色。有关更多信息,请参见如何使用指定给您的管理权限。
# bart create -r myrules1-file > control-manifest
# bart create -r myrules1-file > test-manifest
# bart compare -r myrules1-file control-manifest test-manifest > bart.report
示例 6-4 使用规则文件定制 BART 清单和比较报告
以下规则文件指示 bart create 命令列出 /usr/bin 目录中的文件的所有属性。此外,该规则文件还指示 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
使用所创建的规则文件创建控制清单。
# bart create -r usrbinrules.txt > usr_bin.control-manifest.121011
在需要监视 /usr/bin 目录的变化时请准备一个完全相同的清单。
# bart create -r usrbinrules.txt > usr_bin.test-manifest.121111
使用同一个 rules 文件比较清单。
# bart compare -r usrbinrules.txt usr_bin.control-manifest.121011 \ usr_bin.test-manifest.121111
检查 bart compare 命令的输出。
/usr/bin/gunzip: add /usr/bin/ypcat: delete
之前的输出表明删除了 /usr/bin/ypcat 文件,添加了 /usr/bin/gunzip 文件。