Защита от наводнений для сервера Jetty? - PullRequest
0 голосов
/ 17 марта 2011

Я ищу решение для предотвращения отказа сервера Jetty от DDoS или подобного.В настоящее время сервлеты будут открывать новый поток для каждого входящего соединения, поэтому 1 миллион входящих соединений откроет 1 миллион потоков, и Jetty взорвется.

Каков наилучший способ избежать этого потока?Я думал о размещении Apache между клиентом и сервером, поскольку веб-сервер имеет возможность ограничивать входящие соединения от одного ip, например, до 5 соединений в секунду.

Что вы думаете о моей идее?

С уважением,

Хендрик

Ответы [ 3 ]

2 голосов
/ 17 марта 2011

Jetty поставляется с фильтром качества обслуживания, который должен делать то, что вы хотите. Смотри http://wiki.eclipse.org/Jetty/Feature/Quality_of_Service_Filter

1 голос
/ 19 сентября 2012

DosFilter может использоваться для обеспечения защиты от DDoS.

Чтобы процитировать описание из вики,

Ограничения фильтра отказа в обслуживании (DoS)подверженность затоплению запроса, будь то злонамеренный, или в результате неправильно настроенного клиента.Фильтр DoS отслеживает количество запросов от соединения в секунду.Если запросы превышают лимит, Jetty отклоняет, задерживает или ограничивает запрос и отправляет предупреждающее сообщение.

Чтобы включить его, необходимо включить нижеприведенное в конфигурацию в webapp.xml webapp или 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>

Проверьте вики для настройки.

0 голосов
/ 24 ноября 2012

Идея с обслуживанием новых соединений с org.eclipse.jetty.servlets.QoSFilter хороша, но я скорее использую типичную конфигурацию anti ddos, основанную на iptables (как в этой статье: 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 ​​отделена от приложения и более продуктивна, потому что дополнительные пакеты будут отброшены перед доступом к Jetty.

...