На Linux делают людей chroot веб-приложение Java или используют IPTables и работают как некорневой?

При выполнении Контейнера Сервлета Java, которому требуется служить, и статический и динамический контент на порте 80 у Вас есть классический вопрос того, выполнить ли сервер как:

  1. Как базируются в, надо надеяться, chroot тюрьме, если Вы можете (еще не получать эту работу)
  2. Как не пользователь root и затем используют IPTables для порта передачи 80 к некоторому другому порту (> 1024), на котором работает контейнер
  3. Оба: Как не пользователь root, IPTables, и chroot тюрьма.

Проблема с выбирает. 1 сложность chrooting и тем не менее проблем безопасности рабочего корня. Проблема с выбирает. 2 то, что каждый дистрибутив Linux имеет различный способ сохранить IPTables. Опция 3, конечно, является, вероятно, идеей, но очень трудно устанавливать.

Наконец каждый дистрибутив имеет раздражающие различия в сценариях демона.

Что люди находят как лучшее решение агностика дистрибутива и являются там ресурсами, чтобы показать, как сделать это?

Править: Я не выполнил бы Apache перед контейнером сервлета, потому что сайт является главным образом динамическим, и место общей памяти важно (размещающие затраты).

5
задан Adam Gent 17 June 2010 в 16:25
поделиться

4 ответа

Запуск без полномочий root и использование стандартного веб-сервера ( apache ) или облегченного (например, lighttpd или nginx ) на порт 80 для перенаправления на ваш экземпляр.

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

5
ответ дан 14 December 2019 в 04:30
поделиться

Проверьте authbind, который разработан специально для предоставления не-root пользователям контролируемого доступа к привилегированным портам.

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

3
ответ дан 14 December 2019 в 04:30
поделиться

Я использую jetty на порту 8080 и перенаправляю с помощью

iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

2
ответ дан 14 December 2019 в 04:30
поделиться

почему бы просто не запустить его как root? Что плохого может случиться?

Я никогда не слышал о взломе контейнера сервлетов Java, когда хакер может вырваться из JVM и получить доступ к ОС.

Допустим, это случается. Хакер прочитал код JVM и нашел дыру. Он проникает в вашу систему через контейнер сервлетов и входит в систему как пользователь, который запускает контейнер сервлетов.

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

какой еще ущерб может быть нанесен, если этот пользователь root? ОС одноразовая, просто протрите ее и переустановите.

-2
ответ дан 14 December 2019 в 04:30
поделиться
Другие вопросы по тегам:

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