Container和VM的隔离性分析 (5): Linux Security Modules

358 阅读1分钟

Linux Security Module(LSM)框架提供了一种机制,可以通过新的内核扩展挂接各种安全检查。名称“module”有点不准确,因为这些扩展实际上不是可加载的内核模块。相反,它们是通过CONFIG_DEFAULT_SECURITY在构建时可选择的,并且可以通过内核命令行参数“security = ...”在引导时覆盖,如果在给定内核中构建了多个LSM。可以通过读取/sys/kernel/security/lsm来查找活动安全模块的列表。这是一个逗号分隔的列表,并且始终包括能力模块。列表反映了进行检查的顺序。能力模块将始终排在第一位,其次是任何“次要”模块(例如Yama),然后是一个“主要”模块(例如SELinux),如果已经配置了一个模块的话。
LSM接口的主要用户是强制访问控制(MAC)扩展,它们提供全面的安全策略。示例包括SELinux、Smack、Tomoyo和AppArmor等较大的MAC扩展。除了较大的MAC扩展外,其他扩展可以使用LSM构建,以在Linux核心功能中不可用的情况下提供特定的系统操作更改。如果内核中没有特定的LSM,则默认LSM将是Linux功能系统。大多数LSM选择扩展功能系统,构建其检查基于定义的能力挂钩。有关能力的更多详细信息,请参见Linux man-pages项目中的capabilities(7)。
在容器上,文件分散的系统大家通常用SELinux来进行防护,在以folder为归属,每个container有自己的根文件系统的情况下, 通常会用AppArmor来进行防护。