使用 AppArmor 创建 Linux“沙盒”

使用 AppArmor 创建 Linux“沙盒”

我正在尝试对某个 Python 进程进行沙盒处理,使其仅能访问网络通信和文件系统上的选定数量的文件。我按照Ubuntu 社区文档网站以及 Chromium 项目的关于沙盒的文章

但是,我只想阻止一些 Python 进程。为了解决这个问题,我将 Python 可执行文件符号链接到另一个位置(称为python sandbox),并对其应用 AppArmor 配置文件。

当我启动时python-sandbox,我仍然能够打开文件系统上的任意文件并读取它们。出了什么问题?我做了以下操作:

创建 AppArmor 配置文件如下:

#include <tunables/global>
/opt/python-sandbox {
    #include <abstractions/base>
    #include <abstractions/fonts>
    /proc/** r,
    /usr/lib/python2.7/** r,
    /usr/local/lib/python2.7/** r,
    network,
}

将其复制到/etc/apparmor.d/具有名称的目录中opt.python-sandbox(因为符号链接是/opt/python-sandbox.

跑步apparmor_parser /etc/apparmor.d/opt.python-sandbox

我做错了什么吗?我应该考虑其他方法吗?

答案1

啊哈!我漏掉了一些东西。显然大家都知道 AppArmor 通常不适用于符号链接。将 Python 可执行文件复制到 /opt/python-sandbox 没问题。

相关内容