SlowHTTPTest

SlowHTTPTest — это инструмент для тестирования веб-серверов на устойчивость к различным типам атак отказа в обслуживании (DoS), использующих медленные HTTP-запросы. Эти атаки эксплуатируют особенности обработки HTTP-запросов сервером, удерживая соединения открытыми как можно дольше, что приводит к истощению доступных ресурсов.

Утилита для Линукс:

Код:
sudo apt update
sudo apt install slowhttptest

Как работает SlowHTTPTest:​

SlowHTTPTest имитирует различные типы медленных атак, таких как:
  1. Slowloris:
    • Отправляет HTTP-запрос по частям, периодически отправляя заголовки.
    • Сервер вынужден держать соединение открытым, ожидая окончания запроса.
  2. Slow Body (Slow POST):
    • Отправляет тело HTTP-запроса очень медленно.
    • Сервер ждет полного получения тела запроса перед обработкой.
  3. Slow Read:
    • Запрашивает ресурс с сервера, но читает ответ очень медленно.
    • Сервер вынужден хранить ответ в памяти до завершения передачи.
  4. Range Header:
    • Отправляет запрос с множественными диапазонами (Range), заставляя сервер потреблять ресурсы для обработки фрагментации ответа.

Основные шаги работы:​

  1. Настройка параметров:
    • Указывается тип атаки (например, Slowloris, Slow POST).
    • Задаются параметры: количество соединений, время задержки между частями запроса, длина тайм-аутов и т.д.
  2. Создание соединений:
    • SlowHTTPTest открывает множество TCP-соединений с целевым сервером.
  3. Имитация медленного поведения:
    • В зависимости от типа атаки, запросы отправляются или принимаются с искусственно заданной низкой скоростью.
  4. Анализ результатов:
    • Инструмент оценивает, как сервер реагирует на медленные соединения:
      • Закрывает ли сервер соединения при истечении тайм-аута?
      • Ухудшается ли производительность?
      • Возникает ли отказ в обслуживании?
Пример команды:

Код:
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
    Чтобы увидеть нужно авторизоваться или зарегистрироваться.
    : URL-цель.
  • -x 24: тайм-аут соединения.
  • -p 3: задержка перед повторной отправкой.

Как защититься от таких атак:​

  1. Настройка тайм-аутов на сервере (низкий тайм-аут для заголовков и тела запроса).
  2. Ограничение числа соединений от одного IP.
  3. Использование CDN или балансировщиков нагрузки, которые фильтруют вредоносные запросы.
Предыдущая статья цикла: Как заддосить сайт неприятеля