Linux SELinux如何与AppArmor比较
导读:Linux SELinux 与 AppArmor 对比 概览 两者都是 Linux 内核的 LSM(Linux Security Modules) 强制访问控制(MAC)机制,用来在进程与系统对象之间实施最小权限。差异核心在于:SELinu...
Linux SELinux 与 AppArmor 对比
概览 两者都是 Linux 内核的 LSM(Linux Security Modules) 强制访问控制(MAC)机制,用来在进程与系统对象之间实施最小权限。差异核心在于:SELinux 以标签/类型(inode 为基础)实施细粒度策略,功能强大但复杂度高;AppArmor 以路径为中心,策略更直观、上手更快,适合快速为应用编写与部署配置文件。
关键差异对比
| 维度 | SELinux | AppArmor |
|---|---|---|
| 安全标签与识别 | 给进程与客体打安全上下文/类型(基于 inode),跨重命名、硬链接等保持稳定 | 以文件路径识别客体,策略直观 |
| 策略模型与粒度 | 基于域(domain)-类型(type),可精细到进程、文件、端口、能力等多类客体 | 围绕应用 profile声明允许的路径、能力、网络等,粒度相对更贴近应用 |
| 规则与编译 | 策略/规则体系复杂,常见需工具链与策略模块管理 | 规则无需编译,文本 profile 直接加载 |
| 文件系统依赖 | 需要支持安全标签/扩展属性的文件系统 | 文件系统无关,对 NFS 等场景更友好 |
| 默认与发行版 | RHEL/CentOS/Fedora 默认启用 | SUSE/openSUSE、Ubuntu 常见默认启用 |
| 模式与运维 | 三种模式:Enforcing/Permissive/Disabled;排错常用 getenforce/setenforce、semanage、restorecon、audit2allow |
两种模式:Enforcing/Complain;排错常用 apparmor_status、aa-enforce/aa-complain、aa-genprof、aa-unconfined |
| 典型排错 | 查看 AVC 拒绝日志,修正类型/端口/上下文(如 semanage port、restorecon) |
查看 complain 日志,生成/调整 profile(如 aa-genprof) |
| 上手难度 | 学习曲线更陡,但上限高、可覆盖复杂场景 | 更易上手,适合快速落地常见服务 |
以上对比要点来自对两者工作机制、命令与发行版默认策略的综合梳理。
如何选择
- 追求更强的细粒度与系统性安全(多服务、多租户、复杂合规场景):优先 SELinux。其基于类型与域的模型、端口/上下文等策略对象更完备,适合长期、体系化的安全治理。
- 需要快速为应用编写/部署限制(运维效率优先、已有大量存量服务):优先 AppArmor。路径匹配与 complain/学习模式显著降低门槛,便于快速收敛风险。
常用命令与最小上手示例
- SELinux
- 查看/切换模式:
getenforce、setenforce 0|1 - 策略与端口:
semanage port -l | grep ssh、semanage port -m -t ssh_port_t -p tcp 9999 - 上下文与修复:
ls -Z、ps -Z、restorecon -R /var/www - 日志与自助修复:查看 /var/log/audit/audit.log 的 AVC 拒绝;必要时用
audit2allow生成模块
- 查看/切换模式:
- AppArmor
- 状态与模式:
apparmor_status、aa-enforce < profile>、aa-complain < profile> - 生成与排查:
aa-genprof < cmd>、aa-unconfined - 配置路径:profile 位于 /etc/apparmor.d/,可在 Enforcing/Complain 间切换以辅助编写与验证
- 状态与模式:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux SELinux如何与AppArmor比较
本文地址: https://pptw.com/jishu/767908.html
