Остановить доступ к файлу из Ruby - PullRequest
1 голос
/ 29 января 2010

У меня есть серверное приложение, которое позволяет пользователям выполнять свои собственные скрипты ruby. Сервер, на котором выполняются сценарии, является виртуальным экземпляром на Amazon EC2, поэтому не может быть нанесен постоянный ущерб. Однако я бы хотел принять все меры предосторожности, чтобы остановить любой опасный / злонамеренный скрипт, перезагрузки - это то, чего я хотел бы избежать.

На данный момент я запрещаю любые скрипты, которые содержат «require» или «include». Я думаю, что было бы действительно безопасно разрешить «включать»? Пользователям не требуется доступ к файловой системе сервера, поэтому, если я не разрешу вхождение строки «файл». Помешает ли это пользователям получить доступ к файловой системе сервера?

Ответы [ 2 ]

2 голосов
/ 29 января 2010

Запрещение вхождения строки «файл» вам совсем не поможет.У них все еще есть eval, pack / unpack, Dir, `и множество других вещей.

YMMV, но это то, что я бы сделал:

  • Запустите процесс ruby ​​какнепривилегированный пользователь
  • в тюрьме (т. е. chroot, freebsd jail или аналогичный)
  • в раздетой среде (без suids, без других ненужных файлов - минимум лучше)
  • с $ SAFE > = 2
  • и без доступа к записи для каких-либо файлов / папок

Возможно, все еще небезопасно, но это начало.

РЕДАКТИРОВАТЬ: Может также быть хорошей идеей, чтобы установить ограничения на потребление системных ресурсов, используя ulimit или эквивалент.

2 голосов
/ 29 января 2010

Звучит так, будто вы играете в угадайку. Разве не было бы проще запускать сценарии как пользователь с очень низкими привилегиями? Или вы можете посмотреть, как TryRuby решает подобные проблемы.

Кажется, есть несколько вариантов песочницы Ruby , но я не использовал любых из них, поэтому я не могу раздать рекомендации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...