Когда говорят про DDoS, большинство представляет лавину запросов и гигабиты мусорного трафика. Медленные атаки работают иначе — тихо, почти незаметно. Злоумышленник не обрушивает сервер потоком данных. Он открывает сотни или тысячи соединений и держит их «полуживыми», посылая крошечные куски информации раз в несколько секунд. Сервер считает такие соединения нормальными. Ведь в реальной жизни пользователи тоже бывают с медленным интернетом или нестабильной сетью.
В итоге ресурсы постепенно забиваются: соединения висят, новые клиенты не могут подключиться, а владелец сайта долго не понимает, что происходит. Именно эта незаметность и делает Slowloris и похожие методы настолько неприятными.
Как работает Slowloris простыми словами
Slowloris — это атака на уровне HTTP-соединений. Злоумышленник открывает множество соединений с веб-сервером и отправляет неполные HTTP-запросы. Заголовки приходят кусками, между которыми делаются длинные паузы. Сервер ждет завершения запроса и удерживает соединение открытым.
Каждое такое соединение занимает память, дескрипторы файлов и часть потоков обработки. Пока сервер ждет «последнюю строку заголовка», злоумышленник спокойно открывает новые соединения. Снаружи все выглядит почти легально — нет взрывного роста трафика, нет тысяч запросов в секунду.
Что именно удерживается атакой:
— открытые TCP-соединения, которые сервер не закрывает;
— слоты обработки запросов или рабочие потоки;
— буферы памяти, выделенные под незавершенные заголовки;
— время ожидания, настроенное в конфигурации сервера.
Когда лимит соединений достигается, новые клиенты начинают получать ошибки или зависания. Администратор видит медленный сайт и растерянно проверяет загрузку процессора, а она может быть почти нормальной.
Почему медленные атаки сбивают с толку мониторинг
Классические системы обнаружения атак смотрят на пики нагрузки: количество запросов, объем трафика, резкие всплески соединений. Slowloris почти не создает таких сигналов. Сервер получает немного данных, зато соединения висят долго.
Ситуация усложняется тем, что медленные клиенты действительно бывают в реальности. Кто-то подключается через спутниковый интернет, кто-то сидит на старом смартфоне в зоне плохого сигнала. Если закрывать все долгие соединения, есть риск потерять настоящих пользователей.
Признаки, которые выглядят «нормально»:
— небольшой входящий трафик;
— равномерное количество запросов;
— низкая загрузка CPU;
— стабильное число новых соединений.
Визуально графики могут выглядеть нормально. Проблема проявляется только в том, что свободных соединений почти не остается.
Какие серверы и конфигурации уязвимее
Сильнее страдают серверы, где каждый клиент получает отдельный поток или процесс. Классические конфигурации Apache с режимом prefork — один из самых известных примеров. Каждое соединение удерживает отдельный рабочий процесс, и лимиты заканчиваются быстро.
Также риск выше, если настроены длинные таймауты. Сервер может ждать завершения запроса десятки секунд или даже минуты. Злоумышленнику этого достаточно, чтобы удерживать соединение практически бесконечно.
Факторы, повышающие уязвимость:
— высокий таймаут ожидания заголовков;
— отсутствие лимита на число соединений с одного IP;
— старые версии серверов без защиты от медленных запросов;
— архитектура «один поток — один клиент»;
— прокси или балансировщики без ограничений на медленные соединения.
Современные асинхронные серверы и reverse-proxy часто справляются лучше. Они способны обслуживать тысячи соединений без отдельного процесса на каждое. Хотя и здесь неправильные настройки открывают дорогу атаке.
Метрики, которые помогают заметить проблему
Главная ошибка — смотреть только на CPU и объем трафика. Медленные атаки требуют другого подхода к мониторингу. Нужны показатели, которые отражают поведение соединений во времени.
На что обращать внимание:
— число открытых соединений и доля занятых слотов;
— средняя длительность соединения;
— количество незавершенных HTTP-запросов;
— процент соединений в состоянии ожидания заголовков;
— рост числа ошибок «connection timeout» для реальных клиентов.
Полезный индикатор — ситуация, когда сервер держит много соединений, а объем переданных данных остается низким. Это классический симптом медленной атаки. Еще один тревожный сигнал — резкий рост соединений с одинаковым поведением: маленькие пакеты через равные интервалы.
Практический пример из реальной эксплуатации
Представим интернет-магазин на классическом Apache. CPU около 20%, трафик обычный, графики выглядят спокойно. Вдруг пользователи начинают жаловаться: страницы грузятся минутами, корзина не открывается.
Администратор проверяет систему и не видит ничего подозрительного. Только после просмотра списка соединений выясняется, что почти все слоты заняты клиентами, которые отправили часть заголовков и «зависли». Каждый из них держится минутами. Новые посетители просто не могут подключиться.
После снижения таймаутов и добавления лимитов на соединения ситуация нормализуется. Интересно, что сам трафик за время атаки почти не вырос — именно поэтому проблема долго оставалась незаметной.
Чем медленные атаки отличаются от классического DDoS
Разница не только в скорости. Это другой подход к истощению ресурсов сервера. Вместо перегрузки каналов связи атакующий выжимает лимиты соединений и ожидания.
Ключевые отличия:
— минимум трафика и отсутствие всплесков;
— длительное удержание ресурсов сервера;
— атака через корректные HTTP-соединения;
— сложность отделить злоумышленника от реального клиента.
Из-за этой «нормальности» многие системы защиты пропускают Slowloris. Они ждут бурного потока данных, а получают тихую блокировку соединений.
Что помогает снизить риск
Полностью исключить угрозу нельзя, зато можно заметно усложнить жизнь атакующему. Речь идет о грамотных ограничениях и разумных таймаутах.
Практические меры:
— ограничение времени ожидания заголовков HTTP;
— лимиты соединений с одного IP-адреса;
— использование reverse-proxy перед основным сервером;
— включение модулей защиты от медленных запросов;
— мониторинг длительности соединений и незавершенных запросов.
Полезно тестировать систему с помощью нагрузочных сценариев, имитирующих медленных клиентов. Такие проверки часто выявляют неожиданные узкие места.
Вывод: тишина — главный союзник медленной атаки
Slowloris не устраивает громких атак с гигабитами трафика. Он работает тихо и методично, занимая ресурсы сервера по одному соединению. Из-за этого стандартные метрики могут выглядеть спокойно, пока сайт уже почти недоступен для реальных пользователей.
Главная защита — внимательный мониторинг соединений и здравые ограничения. Когда администратор смотрит не только на нагрузку CPU, но и на поведение клиентов во времени, медленные атаки перестают быть невидимками. И сервер продолжает работать даже в условиях странной и подозрительно «медленной» активности.