Как заддосить сайт неприятеля

1746710424479.png


Есть такая интересная тулза для нагрузочного тестирования, которая кстати не хило так может нагрузить проц. сервера (Смотри скрин выше, запуск http-флуд запросами, всего 5 потоков).)

Apache JMeter:
  • Описание: Один из самых популярных инструментов для нагрузочного тестирования. Подходит для тестирования веб-приложений, API, баз данных и других систем.
  • Функции:
    • Тестирование HTTP, HTTPS, SOAP, REST, FTP и других протоколов.
    • Гибкость и возможность настройки сложных сценариев.
    • Отчеты в виде графиков и статистики.
  • Платформа: Java, работает на Windows.
  • Сайт:
    Чтобы увидеть нужно авторизоваться или зарегистрироваться.
Использование Apache JMeter на Windows включает несколько шагов от установки до запуска тестов. Вот подробное руководство:


1. Установить Apache JMeter

  1. Скачать JMeter:
  2. Установить JMeter:
    • Разархивируйте загруженный файл в любую удобную папку на вашем компьютере (например, C:\JMeter).
  3. Убедиться в наличии Java:

2. Настройка переменных окружения (Если нужно, обычно не нужно, этот пункт нужен, если JMeter не запускается с ошибкой что не установлен JAVA)

Чтобы Java работала в командной строке (CMD) и других приложениях, нужно настроить переменные окружения:
В меню пуск->Поиск, ввести Изменение системных переменных
Нажать кнопку "Переменные среды" и нажмите Создать.
Введите:
Имя переменной: JAVA_HOME
Значение переменной: путь к установленной Java, нужно путь до exe (например, C:\Program Files\Java\jdk-XX).
Нажмите OK.
3. Настройка переменной Path:
В списке "Системные переменные" найдите переменную Path и нажмите Изменить.
Нажмите Создать и добавьте:
%JAVA_HOME%
Нажмите OK.

1746710445439.png


3. Запустить JMeter

  1. Перейдите в папку, где вы разархивировали JMeter (например, C:\JMeter).
  2. Откройте папку bin.
  3. Дважды щелкните по файлу jmeter.bat для запуска графического интерфейса JMeter.
  4. Если всё установлено правильно, откроется главное окно Apache JMeter.

4. Создание тестового плана

Тестовый план описывает сценарии, которые вы хотите протестировать. Вот пример настройки теста для веб-сайта:

1. Добавить тестовый план​

[*]После запуска JMeter:
[*]В левой панели щелкните правой кнопкой мыши на "Test Plan".
[*]Выберите Add → Threads (Users) → Thread Group.

2. Настроить группу потоков (Thread Group)

[*]В параметрах Thread Group задайте:
[*]Number of Threads (Users): Количество виртуальных пользователей (например, 10).
[*]Ramp-Up Period (in seconds): Время, за которое все пользователи начнут выполнение (например, 20 секунд).
[*]Loop Count: Количество итераций теста (например, 5).

3. Добавить запрос HTTP

[*]Щелкните правой кнопкой мыши на Thread Group.
[*]Выберите Add → Sampler → HTTP Request.
[*]В параметрах:
[*]В поле Server Name or IP укажите домен (например, example.com).
[*]В поле Path укажите путь к странице (например, /index.html).
[*]Вы можете настроить метод запроса (GET, POST и др.) и параметры.

4. Добавить слушатель результатов

[*]Щелкните правой кнопкой мыши на Thread Group.
[*]Выберите Add → Listener → View Results Tree или Summary Report.


5. Запустить тест


[*]Нажмите зеленую кнопку "▶" (в верхней панели) для запуска теста.
[*]Мониторьте результаты в выбранных слушателях (например, View Results Tree или Summary Report).


6. Анализировать результаты


[*]View Results Tree: Показывает подробности каждого запроса, включая ответ сервера.
[*]Summary Report: Сводный отчет о производительности, включая среднее время ответа, количество ошибок и т.д.
[*]Graph Results: Отображает графики нагрузки.

1746710468670.png


В итоге после запуска теста, на сервере начнут создаваться потоки веб сервера апаче, например как у меня на первом скрине и начнется потребление CPU, чем больше потоков тем больше потоков веб-сервера и больше нагрузка.
Правда и защитится от этого легко, достаточно ограничить на своём сервере число коннектов и блокировать привышающие айпи-адреса, либо просто ограничеть число потоков с одного айпи адреса.

Вот-так!)

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 или балансировщиков нагрузки, которые фильтруют вредоносные запросы.