我正在阅读一些有关 LSM 实现的入门知识,因此最终我会深入研究AppArmor
和SELinux
。
我知道这次讨论但这并没有清楚地解释我对这两个 LSM 实现的一个疑问:
事实是否是这样的:
- SELinux 必须在系统范围内应用(因此
auto-relabeling
首次启动的过程需要与文件系统扫描一样多的时间) - AppArmor 提供了仅针对您想要的进程/脚本定义策略的灵活性? - 通过交互式审核流程)
(?)
答案1
正如我回答另一个问题时,AppArmor 和 SELinux 之间的主要区别是标签。 AppArmor 是基于路径的,而 SELinux 为每个对象添加了附加标签。这就是为什么在第一次启动时自动重新标记以应用默认文件标签的原因。否则,不可能为文件访问编写有意义的策略,因为每个文件都将被视为相同(由于具有相同的标签)。
AppArmor 和 SELinux 都有不受限制的域,不限制进程。两个系统还具有投诉模式(在 SELinux 中称为许可域),该模式仅记录策略违规行为,但不强制执行策略。 AppArmor 和 SELinux 均在系统范围内启用,并且可以在两个系统中运行不受安全模块限制的进程。
在自动策略生成方面,两个系统都有类似的工具和机制。
AppArmor 配置文件可以使用以下方式生成aa-genprof
和aa-logprof
。aa-genprof
创建基本配置文件并将其设置为投诉模式。运行程序后,可以从日志文件生成规则。
SELinux 工具有policygentool
和audit2allow
。主要区别还是文件标签,但policygentool
可以自动创建程序数据(var)、配置文件和日志文件的文件类型。然后可以在宽松模式下加载策略,然后可以使用从日志生成规则audit2allow
。