linux

Linux SELinux与AppArmor区别

小樊
45
2025-12-22 04:00:10
栏目: 智能运维

Linux SELinux 与 AppArmor 的核心差异

概览 两者都是 Linux 内核通过 LSM(Linux Security Modules) 框架实现的 强制访问控制(MAC) 机制,但侧重点不同:SELinux 以系统级的“标签/类型”为核心,策略表达能力强、细粒度与一致性更高;AppArmor 以“应用/路径”为核心,配置文件直观、上手和维护成本更低。常见发行版默认选择也不同:RHEL/CentOS/Fedora 倾向默认启用 SELinux,而 Ubuntu/openSUSE 通常默认启用 AppArmor

关键差异对比

维度 SELinux AppArmor
控制粒度与定位 系统级 MAC,面向主体/客体标签的全局策略 应用级 MAC,围绕进程/程序的配置文件
标识方式 给文件、进程等对象打上安全上下文标签(基于 inode) 文件路径匹配为主
策略语言与复杂度 类型强制(TE)、角色(RBAC)、MLS/MCS 等,规则体系复杂 基于配置文件的访问控制列表,语法直观
学习与调优 需理解标签/类型/域,配合工具逐步收敛策略 提供complain/学习模式,可先记录违规再生成/调整配置
文件系统依赖 依赖支持安全标签的文件系统(如 ext4 启用 xattrs) 文件系统无关,对挂载类型更友好
默认与生态 RHEL/CentOS/Fedora 默认启用,生态与工具链成熟 Ubuntu/openSUSE 默认启用,预置大量应用配置
典型命令/工具 getenforce、setenforce、sepolicy、audit2allow apparmor_status、aa-complain、aa-enforce、apparmor_parser
适用场景 高安全合规、细粒度最小权限、复杂多域环境 快速为关键应用(如 Nginx/MySQL)加“安全带”,容器/主机加固

上述要点分别来自对两者工作原理、发行版默认策略、管理命令与工具、以及文件系统依赖性的公开资料与运维实践总结。

如何选择

实践建议

0
看了该问题的人还看了