Jetty服务器的防洪保护?

时间:2011-03-17 08:17:24

标签: apache jetty protection ddos

我正在寻找一种解决方案来防止JetDo服务器被DDoS或类似设备取下。目前servlet将为每个进入连接打开一个新线程,因此1 mio接入连接将打开1 mio线程,Jetty将爆炸。

避免这个帖子的最佳方法是什么?我考虑过在客户端和服务器之间放置一个Apache,因为网络服务器有能力限制从一个ip到例如ip的连接。 5连接/秒。

您如何看待我的想法?

亲切的问候,

亨德里克

3 个答案:

答案 0 :(得分:2)

Jetty附带了一个服务质量过滤器,可以做你想要的。 见http://wiki.eclipse.org/Jetty/Feature/Quality_of_Service_Filter

答案 1 :(得分:1)

DosFilter可用于提供DDoS保护。

引用维基的描述,

  

拒绝服务(DoS)过滤器限制了对请求的暴露   洪水,无论是恶意的,还是由于客户端配置错误造成的。   DoS过滤器跟踪连接的请求数   每秒。如果请求超出限制,Jetty拒绝,延迟,   或限制请求,并发送警告消息。

要启用,您必须在webapp的web.xml或jetty-web.xml

中的配置中包含以下内容
<filter>
   <filter-name>DoSFilter</filter-name>
   <filter-class>org.eclipse.jetty.servlets.DoSFilter</filter-class>
   <init-param>
     <param-name>maxRequestsPerSec</param-name>
     <param-value>30</param-value>
   </init-param>
 </filter>

检查wiki以进行自定义。

答案 2 :(得分:0)

使用org.eclipse.jetty.servlets.QoSFilter提供新连接的想法很好,但我宁愿使用基于iptables的典型反ddos配置(如本文所述:http://blog.bodhizazen.net/linux/prevent-dos-with-iptables/)。

sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit 50/second --limit-burst 50 -j ACCEPT

在这种情况下,ddos保护与app分离,并且更高效,因为在访问jetty之前额外的包将丢失。