Tomcat拒绝服务

最近两天我们的Tomcat 5.5基于Linux的networking服务器已经在几分钟之内被分解,开始数千次下载并停止它们。 访问日志中的一些请求path以类似“?jfkdsjkfsdk”的部分结束。 Tomcat系统是否存在这种攻击的已知漏洞

更新:我们目前正在运行纯粹的Tomcat,没有Apache。

连接数千次是任何服务器的maxconnections设置(或每个连接使用大量资源)的已知“漏洞”。 作为一个DDOS,他们很可能并不是“停止”下载,而只是简单的切断连接,而不是像RST包那样连接,直到连接超时,或者使用类似trickle东西来确认几个字节在一段时间以保持连接不会超时。

你所做的任何事情都可以缓解这个问题将取决于你的整个设置。 假设你目前使用的是Apache + mod_jk + tomcat,那么除了Bart的fail2ban之外,我还会研究mod_security来检测可能的恶意请求并拒绝它们。 另一个想法是,如果你真的使用tomcat发送静态数据,使用static.example.com域直接从apache(或轻量级服务器,如lighttpd或nginix)提供静态数据。 或者,如果您需要让代码决定要发送哪个文件,请考虑在apache中使用mod_xsendfile来提供您的应用程序“指向”的静态文件,这将允许tomcat完成请求,并在apache处理该文件时继续前进保持apache和tomcat忙于发送文件)。

根据206个响应,您的Tomcat服务器正在遭受重叠范围攻击,如CVE-2011-3192中针对Apache所述。

当上个月这是一个热门话题时,我觉得Tomcat的默认servlet看起来很脆弱 – 请看这里 。

阻止这种情况的最好方法是停止让这些静态文件由默认的servlet提供服务,或者从传入的请求中去除Range:标头。

你是从Apache代理到Tomcat吗? 如果不是这样,你很容易受到像Slowloris这样的攻击。 公开暴露Tomcat是一个坏主意。

即使你是通过Apache进行代理的,你也需要注意,使用mod_antiloris来抵御Slowloris式的攻击,或者更好地使用nginx作为你的前端代理,这个服务器是对Slowloris攻击无懈可击的。

Shane Madden有更好的答案,先听取他的意见。

我不知道一个,但并不意味着没有一个。 使用类似fail2ban的东西来search这些请求的日志,并自动禁止IP。

您还可以执行资源/配额限制以限制下载请求,代理/caching以减轻负载,并提醒您何时发生这种情况。 除了限制我们的传出请求外,因为即使你不被DDoS攻击,你也不希望合法请求压倒你的可用带宽。

大多数漏洞都是为了“拥有”你的服务器。 在这方面崩溃/反弹是适得其反的。 杀死服务器的唯一理由实际上是,如果有人有斧头打击你的公司。