【操作系统百科】SELinux 与 AppArmor
内容提要
DAC(自主访问控制)和MAC(强制访问控制)是Linux的安全机制。DAC基于用户ID(UID)和组ID(GID),而MAC在此基础上增加了强制策略。LSM框架支持多个安全模块的堆叠,SELinux采用类型强制,AppArmor则使用路径强制。SELinux复杂但粒度细,AppArmor简单但粒度粗。BPF_LSM提供可编程的安全策略。
关键要点
-
DAC(自主访问控制)基于用户ID(UID)和组ID(GID),一旦进程被入侵就拥有该用户的全部权限。
-
MAC(强制访问控制)在DAC之上增加了一层强制策略。
-
LSM框架支持多个安全模块的堆叠,包括SELinux、AppArmor等。
-
SELinux采用类型强制,具有更细的粒度但复杂度高,适用于RHEL/Fedora等发行版。
-
AppArmor使用路径强制,粒度较粗,复杂度低,适用于Ubuntu/SUSE等发行版。
-
BPF_LSM提供可编程的安全策略,不需要编写内核模块。
-
SELinux和AppArmor都可以通过拒绝日志生成策略,SELinux使用audit2allow,AppArmor使用aa-logprof。
-
Linux 5.1及以上版本支持LSM堆叠,可以同时使用多个安全模块。
延伸解读
DAC与MAC的区别
DAC(自主访问控制)和MAC(强制访问控制)是Linux安全机制的两种不同模型。DAC依赖于用户ID和组ID,存在被入侵后权限过大的风险;而MAC则在此基础上增加了强制策略,提供了更高的安全性。理解这两者的区别有助于选择合适的安全策略。
SELinux与AppArmor的适用场景
SELinux和AppArmor各有优缺点,适用于不同的发行版。SELinux提供更细粒度的控制,适合需要高安全性的环境,如RHEL和Fedora;而AppArmor则因其简单易用,适合Ubuntu和SUSE等用户。选择时应考虑系统需求和管理复杂度。
LSM框架的灵活性
Linux的LSM框架支持多个安全模块的堆叠,这意味着用户可以根据需求同时使用SELinux、AppArmor等模块。此灵活性使得系统管理员能够根据具体的安全需求定制安全策略,提升系统的整体安全性。
延伸问答
SELinux和AppArmor有什么主要区别?
SELinux采用类型强制,粒度更细但复杂度高;AppArmor使用路径强制,粒度较粗且复杂度低。
什么是DAC和MAC,它们的作用是什么?
DAC(自主访问控制)基于用户ID和组ID,MAC(强制访问控制)在DAC基础上增加强制策略,提供更高的安全性。
LSM框架的作用是什么?
LSM框架支持多个安全模块的堆叠,允许在内核关键操作前调用安全钩子以增强系统安全性。
如何生成SELinux和AppArmor的安全策略?
SELinux可以通过拒绝日志生成策略,使用audit2allow工具;AppArmor则可以通过学习模式记录访问并生成策略。
BPF_LSM是什么,它有什么优势?
BPF_LSM是可编程的安全策略模块,允许动态定义安全策略,无需编写内核模块,增强了灵活性。
SELinux和AppArmor的默认发行版分别是什么?
SELinux的默认发行版是RHEL/Fedora,AppArmor的默认发行版是Ubuntu/SUSE。