强制完整性控制

强制完整性控制是限制访问和修改对象的系统强制执行的方法,它基于对象的完整性和用户的许可安全级。 MAC 与对象的灵敏度有关,而 MIC 与对象的可信度有关。

MIC 的标签用法

TrustedAIX®使用标签系统来执行 MIC。 在可信AIX系统中,所有命名对象都有完整性标签 (TL),用于标识对象的完整性级别。 进程也具有 TL。 进程 TL 指示进程能够访问哪个级别的信息完整性。 TL 级别越高,对象或进程的可信度就越高。

进程必须至少具有与对象相同的可信度才能修改对象。 因此,进程具有的 TL 必须等于或大于对象具有的 TL。 从而,完整性标签可用于使得只读文件可访问。

此外,进程无法使用来自可信度小于进程本身的对象的数据。 因此,对象具有的 TL 必须等于或大于进程具有的 TL。

所有的系统对象(例如,文件和进程)都具有 TL。 当创建对象时,将自动为对象设置 TL。 所有的核心转储都被视为对象,并且将由系统自动标注。

在安装TrustedAIX之前就存在于系统中的对象,在安装TrustedAIX后被访问时会收到默认的 "SYSTEM_LOWTL (SLTL)。 不会在这些对象上永久性地设置 TL。 必须在对象上运行 settxattr 命令才能设置 TL。 对于在可信AIX安装后创建的对象,这些对象的 TL 会设置为创建对象的进程的完整性级别。

用户和标签

系统通过系统缺省值或特定于用户的设置为每个用户帐户指定一个有效的 TL 范围,并且用户只能在该范围内进行操作。 进程或用户只能在进程或用户的当前 TL 中创建文件和目录,并且只能读取和写入遵循系统强加的 MIC 限制的文件。

MIC 实施

只要实施 MAC,就将实施强制完整性控制。 另外,当删除或重命名文件或目录时,将实施 MIC。

更改 TL

对象和进程的 TL 可以使用 lstxattr 命令进行查看,并且可以使用 settxattr 命令进行修改。

只有具有正确权限的用户和具有正确特权的进程才能更改文件或进程的 TL。 使用 settxattr 命令时,如果要将文件系统对象 TL 更改为较低级别的 TL,那么用户应该具有 aix.mls.label.tl.downgrade 权限。 要升级文件系统对象 TL,用户应该具有 aix.mls.label.tl.upgrade 权限。 要更改进程的 TL,比如要升级,那么用户应该具有 aix.mls.proc.tl.upgrade 权限;如果要降级,那么用户应该具有 aix.mls.proc.tl.downgrade 权限。

NOTL

有一个特殊的 TL NOTL,可应用于文件系统、ipc 对象或进程。 当对象或进程具有 NOTL TL 时,对象或进程上不执行任何 MIC 检查。 如果当前 TL 为 NOTL,那么只有特权用户才能将 TL 设置为 NOTL 或更改 TL。

开放式文件描述符上的 MIC

对于读/写和简单文件访问,MIC 检查将在进程访问文件时执行。 在进程具有文件的文件描述符之后,它将可以读取和写入文件,即使进程的 TL 更改为比文件的 TL 更低的级别。 但是,某些操作(例如,设置文件所有者、许可权、标签和特权)将在进程获取了文件描述符之后执行访问检查。 这意味着,当进程使用文件描述符访问文件时,不执行 MIC 检查。 文件和/或进程的 TL 可以更改,并且仍然允许访问。