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 с на сокете, ожидая подтверждения пакетов.
Теперь, будь то атака или какая-то плохая конфигурация сети, которая потеряла пакеты, мой вопрос: как мы можем предотвратить это? Похоже, это особый вид атаки.
Я знаю о медленной атаке Лориса, когда вы делаете HTTP-запрос очень медленно, и это можно смягчить, если у вас есть CDN, обратный прокси-сервер, ... Но для этого конкретного случая я не вижу ничего, что могло бы предотвратить тот?
Как бы вы предотвратили это?
Спасибо!
1 ответ
Вставьте небольшую скорость перед apache. Это может решить вашу проблему. Это именно то, что мы делаем для медленных запросов, рефлексии и обычных проблем с ddos. Решить означает, по крайней мере, в некотором масштабе, я имел в виду
Отредактированный раздел:
Конечно,
Litespeed - это веб-сервер / балансировщик нагрузки, тип обратного прокси-сервера, также ограничивающий базовую скорость, доступный для защиты от атак ddos. У нас был тот же тип атак, который вы имели в виду, и, что гораздо хуже, он был близок к 400000 HTTP-запросов в секунду. Мы устанавливаем сервер litespeed с 24-ядерным 128-Гбайтным портом. Операции litespeeds запускаются в смонтированном ОЗУ, а операционная система работает на чередующихся raid0-дисках ssd. И это решило и прекрати эту атаку.
Также с помощью конфигурации и настройки вы можете остановить медленную атаку лори. У нас все еще есть балансировщик нагрузки, но входящий трафик проходит сначала через скорость передачи данных, а затем передается на наш hw loadbalancer.