【Hacker News搬运】使用Flatpak和BubbleBox对所有东西进行沙盒处理
-
Title: Sandboxing all the things with Flatpak and BubbleBox
使用Flatpak和BubbleBox对所有东西进行沙盒处理
Text:
Url: https://www.ralfj.de/blog/2024/04/14/bubblebox.html
标题:使用 Flatpak 和 BubbleBox 沙盒化所有事物 作者:未提供 发布日期:未提供 顶部图片链接:无 文本: 几年前,我曾撰写博客介绍了我对沙盒化我在主要机器上必须或想要运行的不太可信应用程序的方法。 自那时以来,我的方法发生了变化,所以是时候进行更新了。 随着时间的推移,我越来越对 Firejail 感到沮丧:配置在更新时经常损坏, 而且调试 Firejail 配置文件极其困难。考虑到所有包含的文件,我们谈论的是数百行配置文件,其中包含许多 allowlist 和 blocklist 的微妙相互作用。 即使我知道我想给予访问权限的文件夹,通常也不容易确保这种访问实际上是可能的。 现在,我转而使用两种不同方法的组合:Flatpak 和 BubbleBox。 Flatpak 维护最简单的沙盒是维护他人维护的沙盒。 因此,当我想使用或必须使用诸如 Signal 或 Zoom 的软件时有 Flatpak 时,这通常是我的首选方法。 不幸的是,Flatpaks 可能带有非常自由的默认配置,使得沙盒变得毫无意义。 以下全局覆盖有助于确保这种情况不会发生: [上下文] sockets=!gpg-agent;!pcsc;!ssh-auth;!system-bus;!session-bus filesystems=~/.XCompose:ro;xdg-config/fontconfig:ro;!~/.gnupg;!~/.ssh;!xdg-documents;!home;!host [会话总线策略] org.freedesktop.Flatpak=none org.freedesktop.secrets=none BubbleBox 但是,并非所有软件都作为 Flatpak 存在。 另外,有时我想要软件基本上在我的主机系统上运行(即使用常规的 /usr),只是不访问我家目录中的所有内容。 这方面的例子是 Factorio 和 VSCodium。 后者在我想要使用它与 LaTeX 配合使用时无法在 Flatpak 中运行,而实际上这意味着它需要运行通过 apt 安装的 LaTeX。 官方建议实际上是禁用 Flatpak 沙盒,但这完全失去了意义,所以我开始寻找替代方案。 bubblewrap 提供了一个非常方便的解决方案:它可以启动在私有文件系统命名空间中运行的应用程序,并完全控制从沙盒内部可以访问主机文件系统的哪些部分。 我为 bubblewrap 编写了一个小包装器,以使此配置稍微更容易编写和管理;这个项目被称为 BubbleBox。 这个周末我终于腾出时间添加了对 xdg-dbus-proxy 的支持,因此沙盒化应用程序现在可以访问特定的 D-Bus 功能,而无需访问整个总线(通常不建议将沙盒化应用程序暴露给整个总线)。 这意味着现在是时候写这篇博客了,所以让我们开始吧 - 如果你感兴趣,请查看 BubbleBox;项目页面解释了如何设置自己的沙盒。1 我还应该提到,这并不是基于 bubblewrap 的沙盒解决方案的唯一方法。 bubblejail 相当相似,但提供了一个配置 GUI 和一个很好的默认配置集;在我弄清楚 bubblewrap 标志以使复杂 GUI 应用程序正常工作时,它是一个非常有用的资源。 (顺便说一下,“bubblejail”最初也是我脚本的名字,但后来我意识到这个名字已经被占用了。) Joachim Breitner 也最近撰写了一篇关于他自己基于 bubblewrap 的沙盒脚本的博客文章。 有很多方法可以做到这一点,figuring out my own solution was fun. 使用 bubblewrap 和 xdg-dbus-proxy 进行此操作绝对是一种乐趣。 这两个组件都是 Flatpak 项目的一部分,但作者意识到它们可以独立使用, 因此按照最佳 Unix 传统,他们将它们变成了提供所有所需机制的工具,而没有硬编码任何政策。 尽管执行非常非平凡的任务,但它们都非常容易使用和组合,并且非常文档齐全。 非常感谢所有参与的人! 1. 请注意,这里的链接无法访问,因为它是英文的,所以这里没有添加链接。
Post by: fanf2
Comments:
boustrophedon: Since the author mentioned rewriting it in Rust, I recently added support to my library extrasafe that allows you to sandbox <i>your own</i> code: <a href="https://harrystern.net/extrasafe-user-namespaces.html" rel="nofollow">https://harrystern.net/extrasafe-user-namespaces.html</a><p>So if you wanted to call ffmpeg or some other C library with complicated user-provided data, you can use extrasafe's Isolates (along with its seccomp and Landlock features) to sandbox the call. I'm not really sure how suited it is for rewriting something like bubblewrap or firejail, but it might be interesting to try.
boustrophedon: 由于作者在Rust中提到了重写它,我最近添加了对我的库extrasafe的支持,允许您沙箱<I>您自己的</I>代码:<a href=“https://x2F;/;harrystern.net#xx2F;extrasafe-usernamespaces.html”rel=“nofollow”>https://x2F/;harrystern.net;extrasafe user namespaces.html</a><p>因此,如果您想用复杂的用户提供的数据调用ffmpeg或其他一些C库,您可以使用extrasafe-7;s隔离(以及它的seccomp和Landlock功能)以沙盒调用。I-;I’我真的不确定它有多适合重写《泡沫说唱》或《消防监狱》之类的东西,但尝试一下可能会很有趣。
fbdab103: Cannot mention sandboxing flatpak without mentioning FlatSeal[0]. Offers a super convenient GUI to set per app configurations.<p>[0] <a href="https://flathub.org/apps/com.github.tchx84.Flatseal" rel="nofollow">https://flathub.org/apps/com.github.tchx84.Flatseal</a>
fbdab103: 如果不提及FlatSeal[0],就无法提及沙盒flatpak。提供了一个超级方便的GUI来设置每个应用程序的配置<p> [0]<a href=“https://;/;flathhub.org/!apps/:com.github.tchx84.Flatseal”rel=“nofollow”>https:///;flatchub.org/;应用程序/;com.github.tchx84.平密封</a>
rustcleaner: Just wanted to add, though obliquely relevant to the OP, I have daily driven Qubes OS 4.1 for at least 12 months now and have been thoroughly impressed. It actually makes me feel safe[r] in my online computing today. 8chan or Discord -delivered 0-day blowing up in one of the respective qubes should not lead to exfiltration of my Robinhood credentials, my aunt's baking recipes, or my super secret hacker darknet forum libressl key. :^)<p>You want a beefy system. If you want to pass GPUs through, you need more than one in the system. CPU core count is important yes, but I cannot emphasize enough: RAM RAM RAM. Yes I do have automatic1111 running with GPU in my Qubes tower. Yes I can spin up a WinServ2022 Datacenter qube for Siemens NX 10, with full GPU support.
rustcleaner: 我只想补充一点,尽管与OP有着间接的关系,但我已经每天驾驶Qubes OS 4.1至少12个月了,给我留下了深刻的印象。事实上,它让我在今天的在线计算中感到安全。8chan或Discord-在各自的量子位中的一个量子位进行的0天爆炸不应导致我的Robinhood证书被泄露,我的姑姑;s的烘焙食谱,或者我的超级秘密黑客暗网论坛libressl密钥。:^)<p> 你想要一个强大的系统。如果你想让GPU通过,你需要在系统中有多个GPU。CPU核心数量很重要是的,但我再怎么强调也不为过:RAM RAM RAM。是的,我的Qubes塔中确实有带GPU的automatic1111。是的,我可以为西门子NX 10开发一个WinServ2022数据中心量子器,并提供完整的GPU支持。
nextos: I like bwrap, but I dislike Flatpak because it leads to obscure dependency management.<p>AFAIK, in a scenario similar to the xz hack, it is hard to verify whether all apps are running compromised / patched versions of xz and dependencies.<p>In contrast, regular package managers solve this problem pretty well.<p>Therefore, I want bwrap or similar sandboxing + Nix / Guix.
nextos: 我喜欢bwrap,但我不喜欢Flatpak,因为它会导致模糊的依赖性管理<p> AFAIK,在类似于xz破解的场景中,很难验证是否所有应用程序都在运行受损的;xz和依赖项的修补版本<p> 相比之下,常规包管理器可以很好地解决这个问题<p> 因此,我想要bwrap或类似的沙箱+Nix;吉克斯。
jamesponddotco: If anyone want to look further into sandboxing applications on Linux, you can also look at AppArmor and the sandboxing features built into systemd.<p>I love this repository for bases for AppArmor profiles[1], really good work. Never found a repository as good for systemd, but there are a few around.<p>[1] <a href="https://github.com/roddhjav/apparmor.d">https://github.com/roddhjav/apparmor.d</a>
jamesponddotco: 如果有人想进一步了解Linux上的沙盒应用程序,您也可以查看AppArmor和systemd中内置的沙盒功能<p> 我喜欢这个为AppArmor概要文件[1]提供基础的存储库,真的很好。从来没有找到一个像systemd这样好的存储库<p> [1]<a href=“https://;#x2F;github.com/;roddhjav/:apparmor.d”>https:///;github.com/;roddhjav;服装设计师</a>