Создание "песочницы" 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
,
Я сделал что-то неправильно? Должен ли я рассмотреть другой подход?
1 ответ
Ага! Я что-то пропустил. Очевидно, известно, что AppArmor вообще не работает с символическими ссылками. Копирование исполняемого файла Python в /opt/python-sandbox работало нормально.