在Linux上,人们是否chroot Java Web应用程序或使用IPTables并以非root身份运行?

Ada*_*ent 5 java linux security webserver chroot

当您运行要在端口80上同时提供静态和动态内容的Java Servlet容器时,您会遇到是否运行服务器的经典问题:

  1. 如果可以的话,有希望成为chroot监狱的根本(还没有得到这个工作)
  2. 作为非root用户,然后使用IPTables将端口80转发到容器正在运行的其他端口(> 1024)
  3. 两者:作为非root用户,IPTables和chroot jail.

选择的问题.1是chrooting的复杂性,仍然是运行root的安全问题.选择的问题.2是每个Linux发行版都有不同的持久化IPTables的方式.选项3当然可能是想法,但很难设置.

最后,每个发行版都有守护脚本中令人讨厌的差异.

人们发现什么是最好的发动机不可知解决方案,是否有资源来展示如何做到这一点?

编辑:我宁愿不在servlet容器前运行Apache,因为该站点主要是动态的,总内存占用很重要(托管成本).

jma*_*g2k 5

以非root用户身份运行,并在端口80上使用标准Web服务器(apache)或轻量级服务器(如lighttpdnginx)重定向到您的实例.

这样做的好处是,标准Web服务器可以提供静态内容,从而减少Web应用程序的负载.您甚至可以让它反向代理并缓存Web应用程序流量.