Translation(s): 简体中文

本页介绍如何在Debian上使用 AppArmor并进行故障排除。


安装 AppArmor

AppArmor 在 Debian 7 "Wheezy" 开始进入Debian软件源。

安装 AppArmor 相关应用程序:

启用 AppArmor

如果你使用的是 Debian 10 "Buster" 或者更新的版本, AppArmor 默认开启, 你可以跳过这一步。

$ sudo mkdir -p /etc/default/grub.d
$ echo 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT apparmor=1 security=apparmor"' \
  | sudo tee /etc/default/grub.d/apparmor.cfg
$ sudo update-grub
$ sudo reboot

检查当前状态

AppArmor 每个配置文件可以被分别设置成不同的模式:

请注意,即使是 complain 模式下, 配置文件内的 deny 规则,也会强制执行或阻止.

查看当前内核是否已经启用 AppArmor ( Y 表示如果已启用 ):

$ cat /sys/module/apparmor/parameters/enabled

列出所有的进程的 AppArmor 配置状态 (enforced-强制, complain-记录, unconfined-不限制):

$ sudo aa-status

列出所有进程中被 AppArmor 控制的进程列表:

$ ps auxZ | grep -v '^unconfined'

列出当前监听的网络端口中,没有被 AppArmor 控制的进程列表:

$ sudo aa-unconfined
$ sudo aa-unconfined --paranoid

查找/安装更多配置文件

AppArmor 配置文件保存在目录 /etc/apparmor.d/ 下。 有一些软件包自动安装他们自己的配置文件到这个目录. 要查找更多的配置文件:

启用 AppArmor 配置文件

把配置文件复制到 /etc/apparmor.d/ 的那些软件包, 会自行启用它们的配置文件运行在complain模式, 也可以手动复制配置文件到这个目录,然后手动设置它们运行在 complain 记录模式, 或者运行在 enforce 强制模式。

例如,从 /usr/share/apparmor/extra-profiles/安装一个 "额外" 的配置文件,并设置为 complain 记录模式。

# 列出配置文件
$ ls /usr/share/apparmor/extra-profiles/

# 安装配置文件
$ sudo cp /usr/share/apparmor/extra-profiles/usr.bin.example /etc/apparmor.d/

# 设置为complain 模式
sudo aa-complain /etc/apparmor.d/usr.bin.example

要将配置文件设置为强制模式,请使用aa-enforce而不是aa-complain。但是要 当心:许多配置文件不是最新的,并且会在强制模式下破坏功能,请准备调试

调试除错

要查看AppArmor的运行日志,可以使用 systemd journal程序, 或者 /var/log/syslog 或者 /var/log/kern.log (或者 /var/log/audit.log 需要安装auditd 软件包).

当出现问题时,诊断是否是由AppArmor所引起的

在日志中找:

The full log message should provide more information on what exact access has been denied. You can use this to edit profiles before turning them on in enforce mode. 完整的日志消息会提供的更多信息。你可以在[[#Edit_AppArmor_profiles|修改配置文件]进入enforce模式之前, 参考这些日志信息。

有时,可以禁用配置文件,以便测试问题是否仍然存在:

# 禁用一个配置文件
$ sudo aa-disable /etc/apparmor.d/usr.bin.example
# 测试之后,重新开启`complain`模式
$ sudo aa-complain /etc/apparmor.d/usr.bin.example
# 或者开启`enforce`模式
$ sudo aa-enforce /etc/apparmor.d/usr.bin.example

桌面通知

发生策略违规时,apparmor-notify 软件包可以使用aa-notify程序发送桌面通知,该程序您登录时自动启动。

报告错误

如果你发现debian的 AppArmor 软件包的配置文件有问题, 请使用 Reportbug 来提交给debian。

禁用 AppArmor

AppArmor是一种安全机制,不建议禁用它。如果您确实需要在系统上禁用AppArmor,请执行以下操作:

$ sudo mkdir -p /etc/default/grub.d
$ echo 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT apparmor=0"' \
  | sudo tee /etc/default/grub.d/apparmor.cfg
$ sudo update-grub
$ sudo reboot

编辑 AppArmor 配置文件

你可以在这里找到如何写配置文档的说明文档:

修改配置文件后,使用apparmor_parser(8)将配置文件重新加载到内核中:

$ sudo apparmor_parser -r /etc/apparmor.d/usr.bin.example

然后重启应用程序,并检查日志。

Note: the parser silently ignores rules that are not supported by the running kernel. To check which rules are actually enforced, pass the --warn=rules-not-enforced --warn=rule-downgraded options to apparmor_parser. 注意:解析器会忽略当前内核不支持的规则。要检查实际上执行了哪些规则,请使用--warn=rules-not-enforced --warn=rule-downgraded参数,运行apparmor_parser。


CategorySystemSecurity