FreeBSD 使用手册
上一页 | 第16章 　强制访问控制 | 下一页

# 16.12 MAC 多级 (Multi-Level) 安全模块

模块名： `mac_mls.ko`

对应的内核配置： `options MAC_MLS`

引导选项： `mac_mls_load="YES"`

mac_mls(4) 策略， 通过严格控制信息流向来控制系统中主体和客体的访问。

在 MLS 环境中， “许可 (clearance)” 级别会在每一个主体或客体标签上进行设置， 连同对应的区间。 由于这些透明度或敏感度可以有六千多个层次， 因此为每一个主体或客体进行配置将是一件让任何系统管理员都感到头疼的任务。 所幸的是， 这个策略中已经包含了三个 “立即可用的” 标签。

这些标签是 `mls/low`、 `mls/equal` 以及 `mls/high`。 由于这些标签已经在联机手册中进行了介绍， 这里只给出简要的说明：

- `mls/low` 标签包含了最低配置， 从而允许其他客体支配它。 任何标记为 `mls/low` 的客体将是地透明度的， 从而不允许访问更高级别的信息。 此外， 这个标签也阻止拥有较高透明度的客体向其写入或传递信息。

- `mls/equal` 标签应放到不希望使用这一策略的客体上。

- `mls/high` 标签是允许的最高级别透明度。 指定了这个标签的客体将支配系统中的其他客体； 但是， 它们将不允许向较低级别的客体泄露信息。

MLS 提供了：

- 提供了一些非层次分类的层次安全模型；

- 固定规则： 不允许向上读， 不允许向下写 (主体可以读取同级或较低级别的客体， 但不能读取高级别的。 类似地， 主体可以向同级或较高级写， 而不能向下写)；

- 保密 (防止不适当的数据透露)；

- 系统设计的基础要点， 是在多个敏感级别之间并行地处理数据 (而不泄露秘密的和机密的信息)。

下列 `sysctl` 可以用来配置特殊服务和接口：

- `security.mac.mls.enabled` 用来启用/禁用 MLS 策略。

- `security.mac.mls.ptys_equal` 将所有的 pty(4) 设备标记为 `mls/equal`。

- `security.mac.mls.revocation_enabled` 可以用来在标签转为较低 grade 时撤销客体访问权。

- `security.mac.mls.max_compartments` 可以用来设置客体的最大区间层次； 基本上， 这也就是系统中所允许的最大区间数。

要管理 MLS 标签， 可以使用 setfmac(8) 命令。 要在客体上指定标签， 需要使用下面的命令：

    # setfmac mls/5 test

下述命令用于取得文件 `test` 上的 MLS 标签：

    # getfmac test

以上是对于 MLS 策略提供功能的概要。 另一种做法是在 `/etc` 中建立一个主策略文件， 并在其中指定 MLS 策略信息， 作为 `setfmac` 命令的输入。 这种方法， 将在其他策略之后进行介绍。

## 16.12.1 规划托管敏感性

通过使用多级安全策略模块， 管理员可以规划如何控制敏感信息的流向。 默认情况下， 由于其默认的禁止向上读以及向下写的性质， 系统会默认将所有客体置于较低的状态。 这样， 所有的客体都可以访问， 而管理员则可以在配置阶段慢慢地进行提高信息的敏感度这样的修改。

除了前面介绍的三种基本标签选项之外， 管理员还可以根据需要将用户和用户组进行分组， 以阻止它们之间的信息流。 一些人们比较熟悉的信息限界词汇， 如 `机密`、 `秘密`， 以及 `绝密` 可以方便您理解这一概念。 管理员也可以简单地根据项目级别建不同的分组。 无论采用何种分类方法， 在实施限制性的策略之前， 都必须首先想好如何进行规划。

这个安全策略模块最典型的用例是电子商务的 web 服务器， 其上的文件服务保存公司的重要信息以及金融机构的情况。 对于只有两三个用户的个人工作站而言， 则可能不甚适用。

上一页 | 起始页 | 下一页
MAC partition (分区) 模块 | 上一级 | MAC Biba 模块

本文档和其它文档可从这里下载：ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题，请先阅读文档，如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.