NetLabel Linux 安全模块接口

Paul Moore, paul.moore@hp.com

2006年5月17日

概述

NetLabel 是一种能够从网络数据包中设置和检索安全属性的机制。它旨在供 LSM 开发者使用,这些开发者希望为多种不同的数据包标记协议利用一个通用的代码库。NetLabel 安全模块 API 定义在 'include/net/netlabel.h' 中,但下面给出了一个简要概述。

NetLabel 安全属性

由于 NetLabel 支持多种不同的数据包标记协议和 LSM,因此它使用安全属性的概念来指代数据包的安全标签。NetLabel 安全属性由 NetLabel 头文件中的 'netlbl_lsm_secattr' 结构定义。在内部,NetLabel 子系统根据 NetLabel 的构建时和运行时配置,将安全属性转换为正确的低级数据包标签,并从中进行转换。LSM 开发者负责将 NetLabel 安全属性转换为其特定 LSM 中使用的任何安全标识符。

NetLabel LSM 协议操作

这些函数允许 LSM 开发者操作传出数据包上的标签,以及读取传入数据包上的标签。存在直接操作套接字和 `sk_buffs` 的函数。这些高级函数根据管理员配置 NetLabel 子系统的方式,被转换为低级协议操作。

NetLabel 标签映射缓存操作

根据具体配置,网络数据包标签与内部 LSM 安全标识符之间的转换可能耗时。NetLabel 标签映射缓存是一种缓存机制,一旦建立映射,就可以用来避免大部分此开销。一旦 LSM 收到数据包,使用 NetLabel 解码其安全属性,并将安全属性转换为 LSM 内部标识符,LSM 就可以使用 NetLabel 缓存函数将 LSM 内部标识符与网络数据包的标签关联起来。这意味着将来当传入数据包匹配缓存值时,不仅内部 NetLabel 转换机制被绕过,LSM 转换机制也同样被绕过,这将显著减少开销。