系统管理指南:安全性服务

使用 BART(任务)

您可以以普通用户、超级用户或承担主管理员角色的用户的身份来运行 bart 命令。 如果作为普通用户运行 bart 命令,则只能列出和监视有权访问的文件,如有关起始目录中文件的信息。在运行 bart 命令时成为超级用户的优势是您所创建的清单会包含有关要监视的隐藏文件和专用文件的信息。如果需要列出和监视有关具有限制性权限的文件(例如 /etc/passwd/etc/shadow 文件)的信息,请以超级用户或承担等效角色的用户的身份来运行 bart 命令。有关使用基于角色的访问控制的更多信息,请参见配置 RBAC(任务列表)

BART 安全注意事项

以超级用户的身份运行 bart 命令会使任何人都能读取输出。此输出可能包含专用文件名。如果您在运行 bart 命令时成为超级用户,请采取相应的措施保护输出。例如,使用可生成具有限制性权限的输出文件的选项。


注 –

本章中的过程和示例显示了由超级用户运行的 bart 命令。除非另有指定,否则以超级用户的身份运行 bart 命令为可选操作。


Procedure如何创建清单

可以在 Solaris 软件的初始安装之后立即创建系统清单。此类清单可提供用于比较同一系统在一段时间内的更改的基准。或者,可以将此清单与不同系统的清单进行比较。例如,如果为网络中的每个系统拍摄快照,然后将每个测试清单与控制清单进行比较,则可以迅速确定需要执行哪些操作来实现测试系统与基准配置的同步。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 安装 Solaris 软件之后,创建一个控制清单并将输出重定向到文件。


    # bart create options > control-manifest
    
    -R

    指定清单的根目录。所有由规则指定的路径都会被解释为此目录的相对路径。所有由清单报告的路径均为此目录的相对路径。

    -I

    无论是从命令行执行此选项,还是从标准输入中读取此选项,它都会接受要列出的单个文件的列表。

    -r

    此清单的 rules 文件的名称。请注意, 在与 -r 选项一起使用时,会从标准输入读取 rules 文件。

    -n

    禁用文件列表中所有常规文件的内容签名。此选项可用于改善性能。或者,可以在需要更改文件列表的内容时使用此选项,这与系统日志文件的情况类似。

  3. 检查清单内容。

  4. 保存清单以便将来使用。

    为清单选择一个有意义的名称。例如,使用系统名称及此清单的创建日期。


示例 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 -

/.smc.properties F 1389 100644 user::rw-,group::r--,mask:r--

other:r-- 3f8dca0c0 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) 手册页。清单比较工具会忽略某些行。被忽略的行包括空白行、仅包含空格的行,以及以 # 开头的注释。


Procedure如何自定义清单

可以通过以下方法之一自定义清单:

  1. 确定要列出和监视的文件。

  2. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  3. 安装 Solaris 软件之后,使用以下选项之一创建自定义清单:

    • 通过指定子树:


      # bart create -R root-directory
      
    • 通过指定一个或多个文件名:


      # bart create -I filename...
      

      例如:


      # bart create -I /etc/system /etc/passwd /etc/shadow
      
    • 通过使用 rules 文件:


      # bart create -r rules-file
      
  4. 检查清单内容。

  5. 保存清单以便将来使用。


示例 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 属性更改的指令。


Procedure如何比较同一系统在一段时间内的清单

当您要监视同一系统在一段时间内的文件层更改时,请使用此过程。此类清单可以帮助找到损坏或异常的文件,检测安全性破坏,或对系统的性能问题进行疑难解答。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 安装 Solaris 软件之后,创建系统上要监视的文件的控制清单。


    # bart create -R /etc > control-manifest
    
  3. 在每次需要监视系统更改时创建一个在准备方式上与控制清单完全相同的测试清单。


    # bart create -R /etc > test-manifest
    
  4. 将控制清单与测试清单进行比较。


    # bart compare options control-manifest  test-manifest > bart-report
    
    -r

    此比较的 rules 文件的名称。将 -r 选项和 一起使用意味着从标准输入中读取指令。

    -i

    允许用户从命令行设置全局 IGNORE 指令。

    -p

    生成用于进行程序分析的标准非本地化输出的程序模式。

    control-manifest

    控制系统的 bart create 命令输出。

    test-manifest

    测试系统的 bart create 命令输出。

  5. 检查 BART 报告中的异常情况。


示例 5–5 比较同一系统在一段时间内的清单

此示例说明了如何监视两个时间点之间 /etc 目录中发生的更改。此类比较使您可以迅速确定系统上的重要文件是否受到威胁。

上面的输出指示 vfstab 文件的权限自创建了控制清单以来已发生更改。此报告可以用于检查拥有权、日期、内容或任何其他文件属性是否已发生变化。具备此类信息有助于跟踪可能的文件篡改者和更改可能发生的时间。


Procedure如何比较不同系统的清单与控制系统的清单

您可以运行系统间比较,这样可以迅速确定在基准系统和其他系统之间是否存在任何文件层差异。例如,如果您已经在基准系统上安装了特定版本的 Solaris 软件,并且需要了解其他系统是否也安装了相同的软件包,则可以创建那些系统的清单,然后将测试清单与控制清单进行比较。此类比较会列出与控制系统比较的每个测试系统在文件内容方面的任何差异。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 安装 Solaris 软件之后,创建控制清单。


    # bart create options > control-manifest
    
  3. 保存控制清单。

  4. 在测试系统上,使用相同的 bart 选项创建清单,并将输出重定向到文件中。


    # bart create options > test1-manifest
    

    为测试清单选择一个特殊而有意义的名称。

  5. 将测试清单一直保存在系统的中心位置,直至准备比较清单为止。

  6. 需要比较清单时,将控制清单复制到测试清单的位置。或者,将测试清单复制到控制系统。

    例如:

    # cp control-manifest /net/test-server/bart/manifests

    如果测试系统不是已挂载 NFS 系统,则使用 FTP 或一些其他某个可靠方法将控制清单复制到测试系统。

  7. 将控制清单与测试清单进行比较并将输出重定向到文件。


    # bart compare control-manifest test1-manifest > test1.report
    
  8. 检查 BART 报告中的异常情况。

  9. 对于每个需要与控制清单比较的测试清单,重复执行步骤 4 至步骤 9。

    对于每个测试系统使用相同的 bart 选项。


示例 5–6 比较不同系统的清单与控制系统的清单

此示例介绍了如何通过比较控制清单与不同系统的测试清单来监视 /usr/bin 目录内容的更改。

上面的输出指示了 /usr/bin 目录中 su 文件的组 ID 与控制系统中的组 ID 不同。此信息有助于确定测试系统上是否安装了不同版本的软件或是否有人篡改了文件。


Procedure如何通过指定文件属性自定义 BART 报告

此过程为可选过程,它介绍了如何通过从命令行指定文件属性来自定义 BART 报告。如果创建了列出有关系统上所有文件或特定文件的信息的基准清单,则可以在需要监视特定目录、子目录、一个或多个文件的更改的时运行 bart compare 命令,并指定不同的属性。您可以通过从命令行指定不同的文件属性来针对同一清单运行不同类型的比较。

  1. 确定需要监视的文件属性。

  2. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  3. 安装 Solaris 软件之后,创建控制清单。

  4. 在需要监视更改时创建测试清单。

    按照准备控制清单的方式准备测试清单。

  5. 比较清单。

    例如:


    # bart compare -i dirmtime,lnmtime,mtime control-manifest.121503 \
    
    test-manifest.010504 > bart.report.010504
    
    

    请注意,使用逗号分隔在命令行语法中指定的各个属性。

  6. 检查 BART 报告中的异常情况。

Procedure如何通过使用 Rules 文件自定义 BART 报告

此过程也是可选过程,它介绍了如何通过使用 rules 文件作为 bart compare 命令的输入来自定义 BART 报告。通过使用 rules 文件,可以自定义 BART 报告,从而使您能够灵活地为多个文件或子树指定多个属性。可以使用不同的 rules 文件来针对同一清单运行不同的比较。

  1. 承担主管理员角色,或成为超级用户。

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 确定需要监视的文件和文件属性。

  3. 使用文本编辑器创建具有相应指令的 rules 文件。

  4. 安装 Solaris 软件之后,使用所创建的 rules 文件创建一个控制清单。


    # bart create -r rules-file > control-manifest
    
  5. 创建在准备方式上与控制清单完全相同的测试清单。


    # bart create -r rules-file > test-manifest
    
  6. 使用同一个 rules 文件比较控制清单与测试清单。


    # bart compare -r rules-file control-manifest test-manifest > bart.report
    
    
  7. 检查 BART 报告中的异常情况。


示例 5–7 通过使用 Rules 文件自定义 BART 报告

以下 rules 文件同时包括 bart createbart 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

在上面的输出中,bart compare 命令报告 /usr/bin 目录中的差异。此输出指示已删除了 /usr/bin/ypcat 文件,并添加了 /usr/bin/gunzip 文件。