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

FreeBSD Jail с множественным веб-развертыванием Ruby

Я хочу предложить бесплатную систему развертывания для рубиновых веб-приложений (на основе стойки, а не рубина на рельсах), поэтому, по сути, я разрешаю пользователям загружать файл со своим приложением, и приложение будет отображаться на http://user.domain.com

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

Первая проблема в том, что у нас будет единый IP. Я не уверен, подходят ли эти два метода для нескольких приложений, которые все должны работать на порту 80:

http://blog.burghardt.pl/2009/01/multiple-freebsd-jails-sharing-one-ip-address/ http://www.bsdtips.org/index.php/Giving_a_jail_multiple_IPs_with_pf_and_NAT

Шаблон со стандартной установкой ruby ​​может быть выполнен с помощью http://erdgeist.org/arts/software/ezjail/

Вопрос в том, подходит ли эта настройка ИЛИ мне понадобится настройка обратного прокси-сервера nginx?

Будет ли гарантировано, что приложение ruby, работающее в тюрьме, не причинит вреда другим пользователям / серверу?

Какая будет рекомендованная установка для достижения этой мультихостинговой среды с FreeBSD + jail?

Вам понадобится nginx, действующий как обратный прокси, если у вас есть только один общедоступный IP-адрес и вы хотите, чтобы приложения были заключены в тюрьму. Однако результатом этого является то, что весь доступ с точки зрения jails будет осуществляться с хоста, поэтому пользовательские приложения могут иметь неточную информацию, если они каким-либо образом полагаются на нее. Ты можешь использовать proxy_set_header в Nginx, чтобы установить стандартный заголовок прокси, например X-Forwarded-For, и убедиться, что ваши пользователи знают, что там находится правильная информация.

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

Будет ли гарантировано, что приложение ruby, работающее в тюрьме, не причинит вреда другим пользователям / серверу?

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

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