Назад | Перейти на главную страницу

Создание «песочницы» Linux с помощью AppArmor

Я пытаюсь изолировать определенный процесс 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.

Я сделал что-то не так? Стоит ли рассмотреть другой подход?

Ага! Я что-то упустил. Видимо известно, что AppArmor вообще не работает с символическими ссылками. Копирование исполняемого файла Python в / opt / python-sandbox работало нормально.