我使用默认的 AppArmor Firefox 配置文件,该配置文件应该只允许将下载保存到 ~/Downloads。但是,我仍然可以下载到我的主目录中的任何位置。我检查了所有内容是否已加载并强制执行。出于测试目的,我添加了显式拒绝deny @{HOME}/Dropbox/** w
并重新加载。这样就成功了,我无法再在 Dropbox 目录中的任何位置保存任何内容。我删除了测试拒绝并注释掉了“默认配置文件允许下载到...并从...上传”部分,看看会发生什么:
#owner @{HOME}/ r,
#owner @{HOME}/Public/ r,
#owner @{HOME}/Public/* r,
#owner @{HOME}/Downloads/ r,
#owner @{HOME}/Downloads/* rw,
正如怀疑的那样,一切都没有改变。我想这一定是主目录上的一些意外允许。我重置了更改并尝试查找与 Firefox 配置文件相关的所有带有 HOME 的行:
grep 'HOME' $(grep include usr.bin.firefox | sed 's/^.*<\(.*\)>.*/\1/g') usr.bin.firefox
abstractions/audio:owner @{HOME}/.esd_auth r,
abstractions/audio:owner @{HOME}/.asoundrc r,
abstractions/audio:owner @{HOME}/.cache/event-sound-cache.* rwk,
abstractions/audio:owner @{HOME}/.pulse-cookie rwk,
abstractions/audio:owner @{HOME}/.pulse/ rw,
abstractions/audio:owner @{HOME}/.pulse/* rwk,
abstractions/audio:owner @{HOME}/.config/pulse/cookie rwk,
abstractions/audio:owner @{HOME}/.alsoftrc r,
abstractions/cups-client: owner @{HOME}/.cups/client.conf r,
abstractions/cups-client: owner @{HOME}/.cups/lpoptions r,
abstractions/gnome: owner @{HOME}/.gnome/Gnome r,
abstractions/gnome: owner @{HOME}/.gtk r,
abstractions/gnome: owner @{HOME}/.gtkrc r,
abstractions/gnome: owner @{HOME}/.gtkrc-2.0 r,
abstractions/gnome: owner @{HOME}/.gtk-bookmarks r,
abstractions/gnome: owner @{HOME}/.themes/ r,
abstractions/gnome: owner @{HOME}/.themes/** r,
abstractions/gnome: owner @{HOME}/.config/gtk-2.0/** r,
abstractions/gnome: owner @{HOME}/.config/gtk-2.0/gtkfilechooser.ini* rw,
abstractions/gnome: owner @{HOME}/.gconfd/lock/* r,
abstractions/gnome: owner @{HOME}/.gnome/application-info r,
abstractions/gnome: owner @{HOME}/.fonts.cache-* rwl,
abstractions/ibus: owner @{HOME}/.config/ibus/ r,
abstractions/ibus: owner @{HOME}/.config/ibus/bus/ rw,
abstractions/ibus: owner @{HOME}/.config/ibus/bus/* rw,
usr.bin.firefox: owner @{HOME}/.local/share/applications/defaults.list r,
usr.bin.firefox: owner @{HOME}/.local/share/applications/mimeapps.list r,
usr.bin.firefox: owner @{HOME}/.local/share/applications/mimeinfo.cache r,
usr.bin.firefox: deny @{HOME}/.local/share/recently-used.xbel r,
usr.bin.firefox: owner @{HOME}/.thumbnails/*/*.png r,
usr.bin.firefox: owner @{HOME}/ r,
usr.bin.firefox: owner @{HOME}/Public/ r,
usr.bin.firefox: owner @{HOME}/Public/* r,
usr.bin.firefox: owner @{HOME}/Downloads/ r,
usr.bin.firefox: owner @{HOME}/Downloads/* rw,
usr.bin.firefox: owner @{HOME}/.{firefox,mozilla}/ rw,
usr.bin.firefox: owner @{HOME}/.{firefox,mozilla}/** rw,
usr.bin.firefox: owner @{HOME}/.{firefox,mozilla}/**/*.{db,parentlock,sqlite}* k,
usr.bin.firefox: owner @{HOME}/.{firefox,mozilla}/plugins/** rm,
usr.bin.firefox: owner @{HOME}/.{firefox,mozilla}/**/plugins/** rm,
usr.bin.firefox: owner @{HOME}/.gnome2/firefox*-bin-* rw,
usr.bin.firefox: owner @{HOME}/.cache/mozilla/{,firefox/} rw,
usr.bin.firefox: owner @{HOME}/.cache/mozilla/firefox/** rw,
usr.bin.firefox: owner @{HOME}/.cache/mozilla/firefox/**/*.sqlite k,
usr.bin.firefox: owner @{HOME}/.mozilla/**/extensions/** mixr,
我没有看到任何可以让 Firefox 在 HOME 中任何地方写入的内容。有任何想法吗?
技术信息:
$ uname -r
3.16.0-38-generic
Linux Mint 17.2 with XFCE
其他注意事项:
在我的笔记本电脑上,我有 Debian Jessie 和 Gnome,而 AppArmor 似乎表现得更好。虽然我没有在那台机器上使用默认的 firefox 配置文件,但我制作了一个看起来与 firefox-esr/iceweasel 非常相似的配置文件。它按预期工作。
答案1
所以我对包含的第一次追踪并没有涵盖所有内容......我没有意识到一些抽象也有自己的包含。我打开门abstractions/ubuntu-browsers.d/firefox
,发现嫌疑人包括abstractions/ubuntu-browsers.d/user-files
。我打开用户文件,其中包含有问题的行owner @{HOME}/** w
。整个文件对我来说太宽松了,所以我user-files
从firefox
抽象中完全删除了包含内容,重新加载,瞧!
让 HOME 中的所有内容都可以在抽象中写入(特别是被其他抽象使用的抽象)听起来是一个可怕的想法。我只能得出这样的结论:Ubuntu 提供的默认 Firefox 配置文件非常无用,只提供了一种错误的安全感。
这个故事的主旨?彻底测试您的 AppArmor 配置文件,小心抽象,并编写您自己的配置文件或真正检查第三方提供的任何配置文件。