跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:安全服务 Oracle Solaris 11 Information Library (简体中文) |
您可以使用一般用户、超级用户或承担角色的用户身份来运行 bart 命令。如果以一般用户身份运行 bart 命令,则只能在目录中列出和监视您有权访问的文件(如起始目录中的文件)。以超级用户身份运行 bart 命令的优势是,您创建的清单中会包含有关要监视的隐藏文件和私有文件的信息。如果需要在目录中列出和监视有关具有限制性权限的文件(例如,/etc/passwd 或 /etc/shadow 文件)的信息,请以超级用户身份运行 bart 命令。有关使用基于角色的访问控制的更多信息,请参见基于角色的访问控制(概述)。
以超级用户身份运行 bart 命令会使任何人都能读取其输出。此输出可能包含私有的文件名。如果以超级用户身份运行 bart 命令,请采取适当的措施保护输出。例如,使用可生成具有限制性权限的输出文件的选项。
注 - 本章中的过程和示例显示了由超级用户运行的 bart 命令。除非另有说明,否则以超级用户身份运行 bart 命令为可选操作。
|
可以在初始安装 Oracle Solaris 软件之后立即创建系统的清单。此类型清单可提供用于比较同一个系统在一段时间内发生的更改的基准线。或者,也可以将此清单与不同系统的清单进行比较。例如,如果为网络中的每个系统创建快照,然后将每个测试清单与控制清单进行比较,则可以迅速确定需要执行哪些操作来实现测试系统与基准线配置的同步。
开始之前
要创建系统清单,必须采用 root 角色。
# bart create options > control-manifest
指定清单的根目录。由规则指定的所有路径都会被解释为此目录的相对路径。清单中报告的所有路径均为此目录的相对路径。
接受要在目录中列出的单个文件的列表(无论是从命令行执行此选项,还是从标准输入中读取此选项)。
此清单的 rules 文件的名称。请注意,– 在与 -r 选项一起使用时,会从标准输入读取 rules 文件。
禁用文件列表中所有常规文件的内容签名。此选项可用于改善性能。或者,可以在需要更改文件列表的内容时使用此选项,这与系统日志文件的情况类似。
为清单选择一个有意义的名称。例如,使用创建清单的系统名称及日期。
示例 6-1 创建可列出有关系统上每个文件的信息的清单
如果运行 bart create 命令时不带任何选项,则会在目录中列出有关系统上安装的每个文件的信息。基于一个中心映像安装多个系统时,可使用此类清单作为基准线。或者,在需要确保安装完全一致时使用此类清单运行比较。
例如:
# bart create ! Version 1.1 ! HASH SHA256 ! Wednesday, September 07, 2011 (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 和权限的信息。输出中的文件项按文件名的编码版本顺序排列,以便正确地处理特殊字符。所有项均按文件名以升序排列。所有非标准文件名(例如那些包含嵌入的换行符或制表符的文件名)都会在排序之前将非标准字符用引号括起来。
以 ! 开头的行提供有关清单的元数据。清单版本行指明清单规范版本。散列行指明所使用的散列机制。日期行以日期格式显示清单的创建日期。请参见 date(1) 手册页。清单比较工具会忽略某些行。被忽略的行包括空白行、仅包含空格的行,以及以 # 开头的注释。
可以通过以下方法之一定制清单:
指定子树
为系统上的单个子树(而不是大目录的全部内容)创建清单是一种监视特定文件变化的高效方法。可以为系统上的特定子树创建基准线清单,然后定期创建该子树的测试清单。使用 bart compare 命令可将控制清单与测试清单进行比较。使用此选项,可以高效地监视重要的文件系统,以确定是否有任何文件受到入侵者的威胁。
指定文件名
由于创建包含整个系统信息的清单耗时更长,占用空间更大,所需的开销也更高,因此在仅需要列出有关系统上一个或多个特定文件的信息时可选择使用 bart 命令的此选项。
使用 rules 文件
可以使用 rules 文件创建定制清单来列出有关给定系统上特定文件和特定子树的信息,还可以使用 rules 文件监视特定的文件属性。通过使用 rules 文件创建和比较清单,您可以灵活地为多个文件或子树指定多个属性。而使用命令行只能指定一个应用于创建的每个清单或生成的每个报告包含的所有文件的全局属性定义。
开始之前
您必须是 root 角色。
指定子树:
# bart create -R root-directory
指定一个或多个文件名:
# 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
# bart compare options control-manifest test-manifest > bart-report
用于此次比较的 rules 文件的名称。将 -r 选项和 – 一起使用表示将从标准输入中读取指令。
允许用户从命令行设置全局 IGNORE 指令。
生成标准非本地化输出以进行程序解析的程序模式。
控制系统的 bart create 命令的输出。
测试系统的 bart create 命令的输出。
示例 6-2 比较同一个系统在一段时间内的清单
此示例说明如何监视 /etc 目录在两个时间点之间发生的更改。通过此类比较,可以迅速确定系统上的重要文件是否受到威胁。
创建控制清单。
# bart create -R /etc > system1.control.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 /.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 . . .
在需要监视 /etc 目录的更改时创建测试清单。
# bart create -R /etc > system1.test.101011 Version 1.1 ! HASH SHA256 ! Monday, October 10, 2011 (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.090711 system1.test.101011 /security/audit_class mtime 4f272f59
上面的输出表明自控制清单创建以来,audit_class 文件的修改时间已发生变化。此报告可以用于检查所有权、日期、内容或任何其他文件属性是否发生了更改。具备此类信息有助于跟踪可能的文件篡改者和更改可能发生的时间。
可以运行系统间的比较,这样您能够迅速确定在基准线系统与其他系统之间是否存在任何文件级别差异。例如,如果已经在基准线系统上安装了特定版本的 Oracle Solaris 软件,并且需要了解其他系统是否也安装了相同的软件包,则可以创建这些系统的测试清单,然后将测试清单与控制清单进行比较。此类比较会列出与控制系统比较的每个测试系统在文件内容方面的任何差异。
开始之前
要比较系统清单,必须采用 root 角色。
# 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 选项。
示例 6-3 将不同系统的清单与控制系统的清单进行比较
此示例说明如何通过将控制清单与不同系统的测试清单进行比较,来监视 /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 /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 命令,并指定不同的属性。通过从命令行指定不同的文件属性,可以针对同一清单运行不同类型的比较。
开始之前
您必须是 root 角色。
按照控制清单的准备方式准备测试清单。
例如:
# bart compare -i dirmtime,lnmtime,mtime control-manifest.121503 \ test-manifest.010504 > bart.report.010504
请注意,可使用逗号分隔在命令行语法中指定的各个属性。
此过程也是可选过程,说明如何通过使用 rules 文件作为 bart compare 命令的输入来定制 BART 报告。通过使用 rules 文件,可以定制 BART 报告,从而能够灵活地为多个文件或子树指定多个属性。可以使用不同的 rules 文件针对同一清单运行不同的比较。
开始之前
您必须是 root 角色。
# 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
示例 6-4 通过使用 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 文件。