Назад | Перейти на главную страницу

DoS - потоки Apache зависают, когда не получают TCP ACK после отправки HTTP-ответа

Таким образом, у меня был случай, когда все потоки Apache зависли, потому что все они ждали TCP ACK от клиентов после отправки HTTP-страницы, и из-за этого потоки Apache ожидали 300 секунд (значение тайм-аута conf) до переходим к следующему запросу. А потом случилось то же самое.

Все произошло как есть: произошел внезапный пик трафика, нагрузка на серверы apache и db выросла, как и ожидалось, и в какой-то момент каждый поток apache перешел в это состояние, а нагрузка apache и db упала до 0. И так и осталось. так часами. После перезапуска apache страницы снова обрабатываются нормально, нагрузка возрастает, и снова это происходит, и нагрузка падает до 0. Теперь, было ли это атакой или следствием плохого программного / аппаратного обеспечения, еще неизвестно.

К деталям: когда все зависло, вы переходите на страницу состояния сервера apache, и все потоки помечены как "W" (работают), и вы видите, что таймер SS (время обработки запроса) увеличивается. до 300 с, а затем перейдите к следующему HTTP-запросу и снова начните с 300 с.

В части сокетов через netstat мы видим, что все сокеты из этого потока Apache зависли в CLOSE_WAIT с высоким значением Send-Q (пакеты отправлены без подтверждения). Используя strace, мы действительно видим, как Apache выполняет опрос 300 секунд в сокете, ожидая подтверждения пакетов.

Теперь, будь то атака или некорректная конфигурация сети, из-за которой были потеряны пакеты, мой вопрос: как нам предотвратить это? Похоже, это очень неприятный вид нападения.

Я знаю о медленной атаке loris, когда вы делаете HTTP-запрос очень медленно, и это можно смягчить, если у вас есть CDN, обратный прокси, ... Но для этого конкретного случая я не вижу чего-то, что могло бы предотвратить который?

Как бы вы не допустили этого?

Спасибо!

поставьте litespeed перед apache. Это может решить вашу проблему. Это именно то, что мы делаем для медленных запросов, отражений и обычных проблем с ddos. Решить означает хотя бы в каком-то масштабе, который я имел в виду.

Отредактированный раздел:

Конечно,

Litespeed - это веб-сервер / балансировщик нагрузки, тип обратного прокси-сервера, также ограничивающий базовый уровень доступного программного обеспечения для предотвращения атак ddos. У нас был тот же тип атак, о котором вы имели в виду, и гораздо более худший, близкий к атакам на основе 400 000 HTTP-запросов в секунду. Мы устанавливаем сервер litespeed с 24 ядрами, 128 ГБ оперативной памяти, litespeeds работает в установленной оперативной памяти, а операционная система работает на ssd-дисках с полосой пропускания raid0. И это решило и прекратило эту атаку.

Также с помощью конфигурации и настройки вы можете остановить медленную атаку лориса. У нас все еще есть балансировщик нагрузки, но входящий трафик сначала проходит через litespeed, а затем через прокси-сервер на наш hw loadbalancer.