Linux 安全模块使用¶
Linux 安全模块 (LSM) 框架提供了一种机制,允许新的内核扩展挂接各种安全检查。“模块”这个名称有点用词不当,因为这些扩展实际上不是可加载的内核模块。 相反,它们是在构建时通过 CONFIG_DEFAULT_SECURITY 选择的,并且可以在启动时通过 "security=..."
内核命令行参数覆盖,前提是给定的内核中构建了多个 LSM。
LSM 接口的主要用户是强制访问控制 (MAC) 扩展,它们提供全面的安全策略。 示例包括 SELinux、Smack、Tomoyo 和 AppArmor。 除了更大的 MAC 扩展之外,还可以使用 LSM 构建其他扩展,以便在 Linux 本身的核心功能中无法使用这些调整时,对系统操作进行特定更改。
Linux 功能模块将始终包含在内。 之后可以是任意数量的“次要”模块,以及最多一个“主要”模块。 有关功能的更多详细信息,请参阅 Linux 手册页项目中的 capabilities(7)
。
可以通过读取 /sys/kernel/security/lsm
找到活动安全模块的列表。 这是一个逗号分隔的列表,并且始终包含功能模块。 该列表反映了进行检查的顺序。 功能模块始终是第一个,然后是任何“次要”模块(例如 Yama),然后是配置的一个“主要”模块(例如 SELinux)。
与“主要”安全模块关联的进程属性应使用 /proc/.../attr
中的特殊文件进行访问和维护。 安全模块可以在其中维护一个模块特定的子目录,以模块命名。 /proc/.../attr/smack
由 Smack 安全模块提供,包含其所有特殊文件。 /proc/.../attr
中的文件直接保留为提供子目录的模块的遗留接口。