SlowHTTPTest
SlowHTTPTest — это инструмент для тестирования веб-серверов на устойчивость к различным типам атак отказа в обслуживании (DoS), использующих медленные HTTP-запросы. Эти атаки эксплуатируют особенности обработки HTTP-запросов сервером, удерживая соединения открытыми как можно дольше, что приводит к истощению доступных ресурсов.
Утилита для Линукс:
Утилита для Линукс:
Код:
sudo apt update
sudo apt install slowhttptest
Как работает SlowHTTPTest:
SlowHTTPTest имитирует различные типы медленных атак, таких как:- Slowloris:
- Отправляет HTTP-запрос по частям, периодически отправляя заголовки.
- Сервер вынужден держать соединение открытым, ожидая окончания запроса.
- Slow Body (Slow POST):
- Отправляет тело HTTP-запроса очень медленно.
- Сервер ждет полного получения тела запроса перед обработкой.
- Slow Read:
- Запрашивает ресурс с сервера, но читает ответ очень медленно.
- Сервер вынужден хранить ответ в памяти до завершения передачи.
- Range Header:
- Отправляет запрос с множественными диапазонами (Range), заставляя сервер потреблять ресурсы для обработки фрагментации ответа.
Основные шаги работы:
- Настройка параметров:
- Указывается тип атаки (например, Slowloris, Slow POST).
- Задаются параметры: количество соединений, время задержки между частями запроса, длина тайм-аутов и т.д.
- Создание соединений:
- SlowHTTPTest открывает множество TCP-соединений с целевым сервером.
- Имитация медленного поведения:
- В зависимости от типа атаки, запросы отправляются или принимаются с искусственно заданной низкой скоростью.
- Анализ результатов:
- Инструмент оценивает, как сервер реагирует на медленные соединения:
- Закрывает ли сервер соединения при истечении тайм-аута?
- Ухудшается ли производительность?
- Возникает ли отказ в обслуживании?
- Инструмент оценивает, как сервер реагирует на медленные соединения:
Код:
slowhttptest -c 1000 -H -i 10 -r 200 -t GET -u http://example.com -x 24 -p 3
- -c 1000: количество соединений.
- -H: имитация атаки Slowloris.
- -i 10: интервал между отправками заголовков в миллисекундах.
- -r 200: скорость открытия новых соединений.
- -t GET: метод HTTP-запроса.
- -u
Чтобы увидеть нужно авторизоваться или зарегистрироваться.
- -x 24: тайм-аут соединения.
- -p 3: задержка перед повторной отправкой.
Как защититься от таких атак:
- Настройка тайм-аутов на сервере (низкий тайм-аут для заголовков и тела запроса).
- Ограничение числа соединений от одного IP.
- Использование CDN или балансировщиков нагрузки, которые фильтруют вредоносные запросы.