【问题标题】:Is sudo-ing tomcat's startup with a non-root user the same as running it as root?sudo-ing tomcat 以非 root 用户启动与以 root 用户运行它相同吗?
【发布时间】:2013-07-04 11:54:17
【问题描述】:

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

【问题讨论】:

    标签: unix tomcat


    【解决方案1】:

    如果您使用 sudo 调用启动脚本,则您是以 root 身份运行 tomcat。您是对的,不建议以 root 身份运行 tomcat。非 root 用户无法绑定到端口 80,有一些解决方案可以解决这个问题。一种方法是以非 root 身份运行 tomcat,并让 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
    

    【讨论】:

    • 很高兴它成功了。保持启用防火墙通常是个好主意。请注意不要将自己锁在机器之外,并在需要允许 ping 请求、ssh 连接、HTTP 端口等的地方在防火墙上打洞。
    【解决方案2】:

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

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

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

    【讨论】:

    • 建议使用 mod_jk 代替 mod_proxy 在同一服务器上运行 tomcat 和 apache。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 2017-07-08
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      相关资源
      最近更新 更多