1. AppArmor 如何通过 profile 为主机进程实施强制访问控制,编写与调试 profile 的要点是什么?
AppArmor 如何通过 profile 为主机进程实施强制访问控制(MAC)?编写与调试 profile 的要点是什么?
- AppArmor 的 MAC 机制与 profile 结构
- profile 的编写(rule 语法、attach 到可执行文件)
- 调试要点(enforce/audit/complain 模式、日志)
AppArmor 是一种基于 Linux 的强制访问控制(MAC)机制,通过 profile 为进程定义可访问的文件、网络、能力(capability)等资源规则,从而限制进程行为、缩小攻击面。profile 通过 profile <name> <path> 关联到特定可执行文件或其路径,进程启动时内核按 profile 的规则执行访问控制。编写 profile 时,常用 rule 声明文件访问(如 file、/path/** rw)、网络(network)、capability(capability net_raw)等;初次编写可用 aa-genprof 根据进程行为生成,或 aa-logprof 从日志生成规则。调试要点:使用 aa-status 查看加载的 profile 与 enforce/complain 状态,aa-enforce 与 aa-complain 切换强制执行与告警模式(complain 模式下只记录不拒绝,便于调试),通过 /var/log/kern.log 或 auditd 日志查看被拒绝的访问,据此修正规则后再切回 enforce。
AppArmor 的价值在于"针对进程的细粒度访问控制",核心是 profile 的编写与调试。调试的关键是"complain 模式先行"——先用告警模式观察真实行为,再收紧为 enforce,避免直接 enforce 导致进程功能被破坏。这比功能复杂的 SELinux 更易上手,是 Linux 主机安全基线常用手段。
# 查看已加载的 profile 与状态
aa-status
# 切换 profile 到 complain 模式(调试用)
aa-complain /usr/bin/myservice
# 切换回 enforce 模式
aa-enforce /usr/bin/myservice