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
中的文件仍然是为提供子目录的模块提供的旧版接口。