Differences between revisions 3 and 4
Revision 3 as of 2020-04-21 05:26:03
Size: 6679
Editor: ?liu shiwei
Comment:
Revision 4 as of 2020-04-21 05:57:01
Size: 6458
Editor: ?liu shiwei
Comment:
Deletions are marked like this. Additions are marked like this.
Line 169: Line 169:
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`.

Translation(s): English - 简体中文

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


安装 AppArmor

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

安装 AppArmor 相关应用程序:

启用 AppArmor

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

  • AppArmor Linux Security Modules (LSM) 必须在内核命令行开启,通过修改bootloader的方式:

$ 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 模式: 只记录违反规则的行为。

  • enforce 模式: 强制阻止违反规则的行为。

请注意,即使是 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所引起的

在日志中找:

  • ALLOWED (在complain模式下,违反策略时会记录到日志)

  • DENIED (在enforce强制模式下实际阻止操作时会进行记录)

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程序发送桌面通知,该程序您登录时自动启动。

  • 如果软件包 auditd 没有安装, 则桌面用户应该作为 adm Group 组的成员。

  • 如果软件包 auditd 已经安装 ,则应将 /etc/xdg/autostart/apparmor-notify.desktop 修改为 Exec=sudo aa-notify -p -f /var/log/audit/audit.log

报告错误

如果你发现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

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

注意:解析器会忽略当前内核不支持的规则。要检查实际上执行了哪些规则,请使用--warn=rules-not-enforced --warn=rule-downgraded参数,运行apparmor_parser。


CategorySystemSecurity