使用非root用户sucat-tomcat的启动与以root身份运行它是一样的吗?

时间:2013-07-06 16:24:26

标签: unix tomcat

我已经读过以root用户身份运行Tomcat是一个安全问题。我希望Tomcat能够收听端口80,这是Centos的一个特权端口。我创建了一个用户并将他添加到了wheel组。该用户使用sudo sh startup.sh启动tomcat。我不是基于unix的操作系统的专家,所以我仍然感到困惑。如果我以root用户身份启动tomcat,我是否已将自己暴露给相同的漏洞?

3 个答案:

答案 0 :(得分:2)

如果您使用sudo调用启动脚本,则以root身份运行tomcat。你是对的,不建议以root身份运行tomcat。非root用户无法绑定到端口80,并且有一些解决方案可以解决此问题。一种方法是将tomcat作为非root运行,并使tomcat监听端口8080.启用防火墙并将前往80端口的请求转发到端口8080。

service iptables start

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

iptables-save
service iptables restart

答案 1 :(得分:2)

是的,您实际上是以root身份运行Tomcat,不建议这样做。

您可以使用Authbind直接在端口80上运行Tomcat。在Ubuntu上配置非常容易,我不确定CentOS。您可以找到一些说明here(它们适用于Tomcat 6,但大部分可能仍适用于Tomcat 7)。

或者,您可以让Apache侦听端口80,并使用mod_proxymod_jk将请求转发到端口8080上的Tomcat。

答案 2 :(得分:1)

请注意,在端口80上运行tomcat的建议解决方案是将mod-jk与Apache Web服务器一起使用,而不是让tomcat直接在端口80上侦听。