FreeBSD Jail с несколькими веб-развертываниями на Ruby
Я рассчитываю предложить бесплатную систему развертывания для веб-приложений ruby (на основе стойки, а не 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?
1 ответ
Вам понадобится nginx, действующий в качестве обратного прокси-сервера, если у вас есть только один публичный IP, и вы хотите, чтобы приложения были заключены в тюрьму. Однако эффект этого состоит в том, что весь доступ с точки зрения тюрьмы будет осуществляться с хоста, поэтому пользовательские приложения могут иметь неточную информацию, если они будут полагаться на это каким-либо образом. Ты можешь использовать proxy_set_header
в Nginx установить стандартный заголовок прокси-сервера, такой как X-Forwarded-For, и убедиться, что ваши пользователи знают, что там находится правильная информация.
Linux поддерживает так называемое прозрачное проксирование, которое позволяет приложению подделывать IP-адрес источника в пакете при прохождении через хост. В FreeBSD есть базовая поддержка для этого, но она доступна только для пользователя root, так как не было добавлено никаких элементов управления доступом, чтобы позволить пользователю контролировать это. Ядро может быть исправлено, чтобы позволить любому пользователю подделывать пакеты, но это угроза безопасности, поэтому вам нужно подумать, что лучше всего подходит для вашей среды.
Будет ли гарантировано, что приложение ruby, работающее в тюрьме, не нанесет никакого вреда другим пользователям / серверу?
Тюрьмы - это довольно безопасный способ снижения риска для хост-сервера, выполняемого на нем сервисами. В прошлом были "тюремные перерывы", но я не верю, что они были в последнее время. Также могут быть допущены ошибки конфигурации, которые могут привести к разрыву тюрьмы. Тем не менее, ezjail является зрелым и должен настроить вас в безопасной среде.
Однако подумайте, что в тюрьме может быть причинен ущерб, и вам нужно подумать о том, как именно вы можете обнаружить, что что-то не соответствует вашим условиям использования.