1

我正在寻找一种解决方案,以防止 Jetty 服务器被 DDoS 或类似的攻击。目前 servlet 将为每个传入连接打开一个新线程,因此 1 个 mio 传入连接将打开 1 个 mio 线程并且 Jetty 将爆炸。

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

你觉得我的想法怎么样?

亲切的问候,

亨德里克

4

3 回答 3

2

Jetty 附带了一个服务质量过滤器,它应该可以满足您的需求。请参阅http://wiki.eclipse.org/Jetty/Feature/Quality_of_Service_Filter

于 2011-03-17T11:23:36.523 回答
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进行自定义。

于 2012-09-19T07:09:47.297 回答
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 保护与应用程序分离,并且效率更高,因为在访问码头之前会丢弃额外的包。

于 2012-11-24T03:47:35.297 回答