)
在 Linux 安全领域,防火墙和网络过滤只是防线的一部分。即使外部攻击被挡住,一旦攻击者通过漏洞控制了某个运行中的程序,传统的 Unix 权限模型往往无法阻止其进一步扩大破坏范围。强制访问控制(Mandatory Access Control, MAC)正是为了应对这一威胁而生的内核级安全机制。本文将深入对比 Linux 世界中最主流的两套 MAC 实现——SELinux 和 AppArmor,从基本概念、架构设计、日常管理到实战排错,帮助读者理解它们各自的优势与局限。一、传统权限模型的局限在传统 Linux 系统中,权限管理的核心逻辑非常朴素:每个程序以某个用户账户的身份运行,该账户决定了程序能访问哪些文件和设备。普通程序使用启动它的用户账户;网络服务和数据库等守护进程虽然以 root 身份启动,但出于安全考虑,通常会在启动后立即切换到权限受限的专用账户。这套机制简洁高效,却存在致命缺陷:一旦攻击者控制了某个程序,他就自动获得了该程序所属用户的全部权限。程序正常运行时可能只需要读取几个配置文件和一个日志目录,但以该用户身份却能访问文件系统中无数不相关的文件。如果被攻击的程序恰好拥有 root 权限,后果更加灾难性——攻击者可以不受限制地操控整台机器:安装恶意软件、窃取数据、建立后门,一切皆有可能。这就是 MAC 系统存在的意义。二、强制访问控制的核心思想MAC 系统(如 SELinux 和 AppArmor)在内核层面对运行中的程序进行监控,确保每个程序只能执行预定义规则允许的操作。与传统权限模型相比,MAC 有几个关键特征: