6647
Comment:
|
6679
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: 简体中文 -~ | ~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[AppArmor/HowToUse|English]] - 简体中文 -~ |
Translation(s): English - 简体中文
本页介绍如何在Debian上使用 AppArmor并进行故障排除。
Contents
安装 AppArmor
AppArmor 在 Debian 7 "Wheezy" 开始进入Debian软件源。
安装 AppArmor 相关应用程序:
auditd (如果你需要自动配置工具)
启用 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-profiles-extra 提供并启用Debian特定的(非上游)配置文件.
apparmor-profiles 提供了各种实验配置文件,并且默认情况下启用了一些配置文件。
还有这里有一些新的 submitted pacthes/profiles for AppArmor in Debian
启用 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 已经安装 ,则应将 /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
然后重启应用程序,并检查日志。
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。