Apparmor Overview
1. 简介
AppArmor 是类似于 Linux 的安全系统的强制访问控制 (MAC)。AppArmor 将单个程序限制在一组文件、功能、网络访问和限制中,统称为程序的 AppArmor 策略,或简称为配置文件。无需重新启动即可将新的或修改的策略应用于正在运行的系统。AppArmor 旨在通过以管理员友好的语言呈现其配置文件,使其易于理解和用于大多数常见需求。 AppArmor 的限制是有选择性的,因此系统上的某些程序可能会受到限制,而其他程序则不会。选择性限制允许管理员灵活地关闭有问题的配置文件以进行故障排除,同时限制系统的其他部分。 不受限制的程序在标准 Linux 自由访问控制 (DAC) 安全性下运行。AppArmor 增强了传统 DAC,因为首先在传统 DAC 下评估受限程序,如果 DAC 允许该行为,则咨询 AppArmor 策略。 AppArmor 支持按配置文件学习(投诉)模式,以帮助用户编写和维护策略。学习模式允许通过正常运行程序并学习其行为来创建配置文件。在 AppArmor 充分了解行为之后,配置文件可能会转为强制模式。虽然生成的配置文件可能比为特定环境和应用程序量身定制的手工配置文件更宽松,但学习模式可以大大减少使用 AppArmor 所需的工作量和知识,并增加重要的安全层。
2. 版本
AppArmor 有两个主要版本,即 2.x
系列(当前)和 3.x
系列(开发)。2.x 系列在其生命周期中看到了渐进式的改进,只是在语义兼容性方面出现了渐进式的中断。3.x 系列是 AppArmor 的重大扩展。两个主要系列都使用相同的基本策略语言,只有细微的语义差异。3.x 系列允许更多扩展的策略和细粒度的控制。
3. 包含 AppArmor 的发行版
- Annvix
- Arch Linux, documentation and Arch specific notes
- CentOs, documentation and CentOS specific notes
- Debian, documentation and Debian specific notes
- Gentoo
- openSUSE (integrated in default install), documentation and Suse specific notes
- Pardus Linux
- PLD
- Ubuntu (integrated in default install), documentation and Ubuntu specific notes
这些发行版的任何衍生产品也应该有 AppArmor 可用。更新的 RPMS可以在openSUSE 构建服务中找到。这些不限于 SUSE 发行版。
4. 源代码
AppArmor 项目源代码分为内核模块(在 Linux 内核和 git 开发树中可用)和启动板中可用的用户空间工具。
4.1 Kernel
AppArmor 在 2.6.36
的上游内核中。内核模块 git 树中提供了早期版本:
- 如何获取 AppArmor 内核源
- 注意:master 分支不稳定,会时不时地rebase。发布分支将是稳定的,不会被重新定位。
AppArmor v2.4
兼容性补丁在稳定的内核分支中可用。例如 v3.4-aa2.8
或 kernel-patches
目录中的发行版 tarball。
4.2 Userspace
5. AppArmor 配置文件
开发 AppArmor 配置文件位于 Bazaar
存储库中。安装发行版的 Bazaar 软件包后,可以使用以下命令下载它们:
git clone git://git.launchpad.net/apparmor-profiles
找到与您的发行版和版本匹配的子目录,并在里面查找当前正在开发的各种配置文件。您可以通过将配置文件复制到 /etc/apparmor.d
并重新启动 AppArmor 来使用配置文件:
$ /etc/init.d/apparmor restart
restart apparmor # if upstart is being used, with initscripts that have been fully updated to support upstart
如何创建或修改 AppArmor 配置文件
6. 命令
AppArmor 手册 Ubuntu Profile enforcement:
- apparmor_parser:将 AppArmor 配置文件加载到内核中
- aa-audit:将 AppArmor 安全配置文件设置为审核模式
- aa-enforce:设置 AppArmor 安全配置文件以强制模式被禁用或抱怨模式。
- aa-complain:将 AppArmor 安全配置文件设置为抱怨模式
Ubuntu Monitoring tools:
- aa-status:显示有关当前 AppArmor 策略的各种信息
- aa-notify:显示有关记录的 AppArmor 消息的信息
- aa-unconfined:输出带有 tcp 或 udp 端口但没有 AppArmor 的进程列表已加载配置文件
Ubuntu Profile development:
- aa-autodep:猜测基本的 AppArmor 配置文件要求
- aa-logprof:用于更新 AppArmor 安全配置文件的实用程序
- aa-genprof:AppArmor 的配置文件生成实用程序
- mod_apparmor:Apache 的细粒度 AppArmor 限制
- aa_change_hat
- aa_change_profile:更改任务配置文件
- PAM plugin:可用于根据在用户或任务级别完成的身份验证附加配置文件
7. 教程
- 使用工具创建和修改 AppArmor 策略
- 手动创建和修改 AppArmor 策略
- 将 mod_apparmor 与 Apache 一起使用来限制 Web 应用程序- DRAFT
- 使用 AppAmor 和 libvirt 来限制虚拟机
- 将 AppArmor 与 PAM 集成以实现基于登录的策略
- 使用 AppArmor 进行基于角色的访问控制 (RBAC) - 草稿
- 使用 AppArmor 实现多级安全 (MLS) - DRAFT
- 使用 AppArmor 限制和控制通过 wine 运行的 Windows 应用程序- DRAFT
- 使用完整的系统策略- DRAFT
- 如何在 systemd 中使用 AppArmor - DRAFT
参考: