Tomcat有多安全

8

正如我之前提到的两个问题,我正在寻找一个安全的 Web 服务器。因为在工作中有讨论 Tomcat 的安全性如何,但是我在网上找到的关于它安全性的信息对我来说太晦涩难懂了。所以我希望有人能向我解释一下 Tomcat 到底有多安全?比如说,是否可能在服务器上操纵 Java 代码之类的?

我知道这可能是个愚蠢的问题,但我真的找不到一个能帮助我证明编写自己的服务器不比使用 Tomcat 更安全,或者为什么使用 Tomcat 更好的答案。

也许有人知道如何安全地保护 Tomcat 并最小化某些 Tomcat 的功能?(我真的不知道该怎么解释...)

希望你能帮助我。提前感谢!

... dg


这个怎么样了?我希望你已经说服老板,Tomcat足够安全,可以满足公司的需求。 - Stu Thompson
我以前没有...现在我们正在使用自己的服务器...但我不得不承认,我学到了很多!!!所以我在悲伤和兴奋之间犹豫不决;o) - doro
7个回答

20

想要自己编写服务器?而不是使用Tomcat?这是一个经典的重复造轮子的例子,而且(除非你是NSA)很可能导致服务器安全性降低。反问:为什么不顺便编写自己的操作系统呢!

Tomcat 6是一个非常成熟、稳定、当前的、广为人知的代码库,已经有数以百万计的非常聪明的人对其进行了审查、测试和生产操作多年。

Tomcat非常安全。


1
我不是国家安全局...哈哈...但我的老板似乎认为他是...:( - doro
需要注意的是,这在很大程度上取决于服务器的配置。通过添加编写不良(或恶意)的Web应用程序很容易破坏安全性... - Donal Fellows

10

也许以前,Tomcat相当不安全,但现在...只要任何东西的名称中带有Apache,我就足以信任它。无论如何,安全总是想象力,现实生活中不存在这样的事情,因此总会存在(不)安全的因素。

Tomcat的问题就像Windows的问题一样,无论他们如何“安全”地构建它,如果有数百万人在使用它,黑客将有兴趣投入精力(最终,他们将成功)找到进入其中的方法。因此,也许为了感觉更安全,您可以考虑使用一些不常用的东西,但是如果黑客有意攻击您的站点以达到某个特殊目的,他将发现您正在使用的技术,并在这一刻-最好是Tomcat..

这就是为什么与像Tomcat这样的开源技术“结婚”非常重要,因为系统中的漏洞很难存在太久,人们有机会修复事情,您始终可以自己完成工作,无需等待新版本等。


2
谢谢你的回答...试图说服他使用Tomcat的时间可以明智地用于我们应该构建的应用程序上g...有趣的是,我不知道服务器如何被黑客攻击(尽管解释为什么他的服务器甚至比Tomcat更不安全肯定会有帮助) - doro

6

总之,编写自己的Servlet容器是一个非常糟糕的想法,尤其是如果您不清楚Tomcat的安全性参数。


如果您需要说服老板的理由,请向他展示您需要实现的servlet规范,并估计需要数年时间(不是开玩笑!),与使用Tomcat的“下载、解压缩、启动”选项进行对比。


我知道这个想法很糟糕,但我需要一些论据来说服我的老板,而这正是我所缺乏的。如果你不清楚Tomcat安全性的相关论据,尤其是在这种情况下,我正在寻找这些论据... :( - doro
谢谢提供链接...我会去看一下 :) - doro

6

我知道这可能是一个愚蠢的问题,但我真的找不到一个能帮助我证明编写自己的服务器不比使用Tomcat更安全或者为什么使用Tomcat更好的答案。

你需要记住的是,Tomcat有数千小时的人们查看代码和修复漏洞的经验。想要编写安全的代码很容易,但实际上非常困难。有许多小细节可能会被忽视,从而导致严重的漏洞。


我知道Tomcat更好,但我无法提供任何真正的论据。仅仅说很多聪明的人在这上面工作并不是对我的老板有说服力的论据... :( - doro
这听起来对你来说是个糟糕的情况,我很同情你。不要从聪明人参与开发的角度来考虑,而是向他解释构建Web服务器需要花费的时间,大约需要10,000小时以上。 - kemiller2002
有趣的事情是:他上周开始,认为自己已经完成了...但另一个有趣的事情是:他并不真正了解很多关于Web应用程序等方面的知识(尽管他是一位出色的Java程序员)...这是一个糟糕的情况,因为我无法向他清楚地表达...也许我应该找人黑掉他的服务器,这样他就可以看到它实时运行了... - doro
是的...那会很困难。我真的不知道该说什么,只希望他能意识到他短时间内无法复制Tomcat。 - kemiller2002

4

Tomcat是一个安全的服务器。但是,使用Apache Web服务器来代理它会更加安全。您可以使用mod_proxy使用AJP或HTTP协议将Apache与Tomcat连接起来。这是最安全的配置,您可以利用可用于Apache Http Server的许多插件模块。

一些安装安全的提示:

  • 创建一个用户来运行Tomcat。不要使用root用户。
  • 卸载示例应用程序。
  • 卸载管理器应用程序。如果您使用Apache来代理Tomcat,则可以安全地保留管理器,并仅通过本地网络使其可用。

谢谢您的建议 :) 我会查看一些保护/配置Tomcat并使用Apache作为代理的网站 :) 谢谢! - doro
你能给出一些Tomcat在httpd后面比直接使用更安全的原因吗? - Carsten
Apache HTTP服务器的部署量比Tomcat要大得多。潜在的漏洞或安全隐患很可能会比在Tomcat中更快地被发现和修复。此外,Apache(通过适当的插件)比Tomcat更可配置。这使您可以应用所需的任何安全方案。Apache HTTP服务器主要设计为Web服务器。Tomcat起初是一个JSP实现,后来发展成为完整的Web服务器。但是,您不能指望它与Apache Web服务器相比。 - kgiannakakis

3

虽然我不是黑客,但我很难想象如果你试图攻击一个系统,Tomcat会是你的首选 - 毕竟它正在运行你的代码,并且可能在防火墙和前端服务器后面。如果不是这种情况,那么就应该是这样!

一旦网络尽可能安全,请记住Tomcat只是一个Servlet引擎 - 你将会有麻烦通过http请求进行利用。我会专注于你的应用程序代码,例如用户认证和避免各种注入攻击 - 在我看来,这是你的系统面临的最高风险,而且无论你运行什么服务器都会存在。


1

正如其他人已经提到的,Tomcat已经准备好用于生产环境,并且Tomcat本身的安全性肯定比任何小团队编写自己的servlet服务器要好。

尽管如此,在Tomcat设置中可能最薄弱的点通常是底层操作系统的设置。


他认为这是一个黑匣子(哈哈...好吧!)...哎呀,我只是想辞职当个农民或者什么的... g - doro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接