Slow Read DoS attack

Maxim Dounin mdounin на mdounin.ru
Пн Янв 9 13:12:50 UTC 2012


Hello!

On Mon, Jan 09, 2012 at 02:10:08PM +0400, Андрей Бойко wrote:

> Добрый день.
> 
> 09.01.2012 06:48, Maxim Dounin пишет:
> >Hello!
> >
> >On Sun, Jan 08, 2012 at 06:08:36PM +0400, Андрей Бойко wrote:
> >
> >>Добрый день.
> >>
> >>Прочитал топик на хабре
> >>http://habrahabr.ru/blogs/infosecurity/135817/, проверил - все
> >>ложится на раз.
> >>Есть мысли, как это забороть? Или это не проблема nginx?
> >Это скорее проблема настроек, чем nginx'а.  Данная "атака"
> >имитирует большое количество медленно читающих ответ клиентов, и
> >вполне логично, что если клиентов больше, чем разрешено держать
> >соединений nginx'у, то будет проблема.
> >
> >На уровне nginx'а можно бороться двумя способами:
> >
> >1) Разрешить nginx'у держать больше соединений, увеличив
> >worker_connections, благо это дёшево.  Главное - не забыть
> >соответственно настроить операционную систему.
> >
> >2) Ограничить количество соединений с одного ip-адреса через
> >limit_conn.
>
> Максим, вариант 1 вряд ли подходит, у меня worker_connections
> 100000 и система настроена соответственно.

И при этом ложится от "slowhttptest -c 1000 -X ..."?  Значит, 
система не настроена.

С учётом того, что slowhttptest использует select() и больше 
FD_SETSIZE (обычно 1024) соединений открыть не может, для того 
чтобы положить настроенную систему с worker_connections 100000 (и 
одним рабочим процессом) - понадобится сотня экземпляров 
slowhttptest'а.  А с учётом того, портов всего 64k, эти экземпляры 
должны быть как минимум на двух разных ip-адресах.

> Вариант 2 вроде как работает, при ограничении в 500r/s ложиться
> перестало. Надо еще попробовать на более объемном файле.
> Спасибо за ответ.

От атаки с одной машины (aka развлекающихся пионеров) должно 
вполне хватать (1).  Ищите, что у вас недонастроено.

Maxim Dounin



Подробная информация о списке рассылки nginx-ru