При выполнении Контейнера Сервлета Java, которому требуется служить, и статический и динамический контент на порте 80 у Вас есть классический вопрос того, выполнить ли сервер как:
Проблема с выбирает. 1 сложность chrooting и тем не менее проблем безопасности рабочего корня. Проблема с выбирает. 2 то, что каждый дистрибутив Linux имеет различный способ сохранить IPTables. Опция 3, конечно, является, вероятно, идеей, но очень трудно устанавливать.
Наконец каждый дистрибутив имеет раздражающие различия в сценариях демона.
Что люди находят как лучшее решение агностика дистрибутива и являются там ресурсами, чтобы показать, как сделать это?
Править: Я не выполнил бы Apache перед контейнером сервлета, потому что сайт является главным образом динамическим, и место общей памяти важно (размещающие затраты).
Запуск без полномочий root и использование стандартного веб-сервера ( apache ) или облегченного (например, lighttpd или nginx ) на порт 80 для перенаправления на ваш экземпляр.
Это имеет то преимущество, что стандартный веб-сервер может обслуживать статический контент, уменьшая нагрузку на ваше веб-приложение. Вы даже можете использовать обратный прокси-сервер и кэшировать трафик веб-приложений.
Проверьте authbind, который разработан специально для предоставления не-root пользователям контролируемого доступа к привилегированным портам.
Таким образом, вы можете эффективно повысить привилегии пользователя Tomcat до нужных вам полномочий root (открыть привилегированные порты), не давая процессу webapp лишних полномочий для создания хаоса.
Я использую jetty на порту 8080 и перенаправляю с помощью
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
почему бы просто не запустить его как root? Что плохого может случиться?
Я никогда не слышал о взломе контейнера сервлетов Java, когда хакер может вырваться из JVM и получить доступ к ОС.
Допустим, это случается. Хакер прочитал код JVM и нашел дыру. Он проникает в вашу систему через контейнер сервлетов и входит в систему как пользователь, который запускает контейнер сервлетов.
то вы облажались. самые ценные и единственные ценные вещи на вашем сервере доступны этому пользователю. не имеет значения, что пользователь является обычным пользователем.
какой еще ущерб может быть нанесен, если этот пользователь root? ОС одноразовая, просто протрите ее и переустановите.