2010-03-16 4 views
2

У меня есть веб-сервис, которому пользователи загружают скрипты python, которые запускаются на сервере. Эти скрипты обрабатывают файлы, которые находятся на сервере, и я хочу, чтобы они могли видеть только определенную иерархию файловой системы сервера (лучше всего: временная папка, на которой я копирую файлы, которые я хочу обработать, и скрипты).faking файловая система/виртуальная файловая система

В конечном итоге сервер будет основан на Linux, но если решение также возможно в Windows, было бы хорошо знать, как это сделать.

Что я, тем не менее, создает пользователя с ограниченным доступом к папкам FS - в конечном счете, только папку, содержащую скрипты и файлы, - и запускает интерпретатор python с помощью этого пользователя.

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

+1

Запуск пользовательских сценариев на сервере был подробно обсужден в нескольких других вопросах. http://stackoverflow.com/questions/1019707/sandboxing-in-linux, http://stackoverflow.com/questions/818402/letting-users-upload-python-scripts-for-execution, http: // stackoverflow. com/questions/886895/safe-python-environment-in-linux и т. д. –

+0

стыдно за меня! и большое спасибо вам :) Я посмотрю ... – attwad

+0

@ S.Lott да, но он получил лучший ответ, попросив его еще раз;) – rook

ответ

5

Для ограничения доступа к конкретным ресурсам может использоваться либо chroot jail, либо механизм безопасности более высокого порядка, такой как SELinux.

+0

chroot jails можно легко сломать :( – attwad

+0

SELinux, однако, очень сложно сломать. очень трудно жить. –

+0

Игнорировать attwad, Chroot - это путь. Если вы используете chroot grcecurity, то даже если вы можете получить корень внутри chroot, вы не сможете «изменить корень» из тюрьмы. – rook

3

Возможно, вам лучше всего использовать виртуальную машину, такую ​​как VirtualBox или VMware (возможно, даже создание одного на пользователя/сеанс).

Это позволит вам некоторый контроль над другими ресурсами, такими как память и сети, а также диск

Единственный питона, который я знаю, что есть такие функции, встроенные в это один на Google App Engine. Это может быть подходящей альтернативой для вас.

+0

есть также pypy, который обеспечивает функцию песочницы, но библиотеки и версия python не соответствуют моим потребностям, к сожалению – attwad

0

Это по своей сути небезопасное программное обеспечение. Позволяя пользователям загружать скрипты, вы вводите уязвимость удаленного выполнения кода. Вам больше беспокоиться, чем просто изменять файлы, что заставляет скрипт python получать доступ к сети или другим ресурсам?

Для решения этой проблемы вам необходимо использовать песочницу. Чтобы лучше затвердеть система, вы можете использовать многоуровневый подход безопасности.

Первый слой, а самый важный слой - python sandbox. Пользовательские скрипты будут выполняться в изолированной программной среде python. Это даст вам тонкие ограничения, которые вам нужны. Затем все приложение python должно работать в пределах собственного выделенного chroot. Я настоятельно рекомендую использовать модули ядра grsecurity, которые улучшают прочность любого chroot. Например, grsecuirty chroot нельзя сломать, если злоумышленник не сможет разорвать яму в землю ядра, что очень сложно сделать в эти дни. Убедитесь, что ваше ядро ​​обновлено.

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

Смежные вопросы