chroot для небезопасного осуществления программ

Я, никогда не имею не устанавливают chroot-заключенную-в-тюрьму среду прежде, и я боюсь, что нуждаюсь в некоторой помощи, чтобы сделать это хорошо.

Для объяснения вскоре, о чем это - все: у Меня есть веб-сервер, в который пользователи отправляют сценарии Python для обработки различных файлов, которые хранятся на сервере (система для цели Исследования). Каждый день задание крона запускает выполнение загруженных сценариев через команду этого вида:

/usr/bin/python script_file.py

Все это действительно небезопасно, и я хотел бы создать тюрьму, в которой я скопирую необходимые файлы (загруженные сценарии, файлы для обработки, двоичный файл Python и зависимости).

Я уже посмотрел на различные утилиты для создания тюрем, но ни один из них не казался актуальным или испытывал недостаток в основательной документации (т.е. ссылки, предложенные в том, Как я могу запустить недоверяемый скрипт Python),

Кто-либо мог вести меня к эффективному решению моей проблемы? как рабочий пример сценария, который создает тюрьму, помещает некоторые файлы в него, и выполняет сценарий Python?

Большое спасибо.

3
задан 13.05.2010, 11:03

2 ответа

Вы нуждаетесь в debootstrapchroot, проверяете инструкции относительно установки Вашего chroot: https://wiki.kubuntu.org/DebootstrapChroot

0
ответ дан 08.12.2019, 04:24

Вам было бы нужно довольно много библиотек в Вашем chroot, и это не будет препятствовать тому, чтобы кто-то установил сервер сокета. Поскольку необходимо позволить сценариям Python работать, который означает полный доступ к стандартным модулям Python, как сокет, и т.д. Я действительно не вижу то, что Вы сможете защитить с этим chroot?

Если пользователь может создать сервер сокета, он сможет соединить в этом chroot и получить доступ/изменить к чему-либо.

Даже простой сценарий как os.system('rm -rf /') не может быть предотвращен и представил бы Вашу неприменимую тюрьму.

Возможное решение состояло бы в том, чтобы использовать модуль как TOMOYO, который может быть настроен для предотвращения доступа на основе примитивов от ядра (открытый, запишите, и т.д.).

0
ответ дан 08.12.2019, 04:24

Теги

Похожие вопросы