• Обратная связь:[email protected]

    Наш канал в telegram:https://t.me/ru_sfera

    Пользователи могут писать на форуме ТОЛЬКО ЧЕРЕЗ 7 ДНЕЙ после регистрации

На заметку Атака сервера запросами при помощи Apache JMeter


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 229
Репутация
8 358
1735990788729.png


Всем привет!

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

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


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

  1. Скачать JMeter:
    • Перейдите на официальный сайт .
    • Скачайте архив JMeter (обычно это .zip файл).
  2. Установить JMeter:
    • Разархивируйте загруженный файл в любую удобную папку на вашем компьютере (например, C:\JMeter).
  3. Убедиться в наличии Java:
    • JMeter требует установленной Java (JDK или JRE) версии 8 или выше.
    • Проверьте, установлена ли Java, командой в терминале:
    • Код:
      java -version
    • Если Java не установлена, скачайте и установите её с или .

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

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

1735992451634.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: Отображает графики нагрузки.

1735991217032.png


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

Вот-так!)
 
Последнее редактирование:

HMCoba

Активный пользователь
Активный
Регистрация
22.04.2023
Сообщения
197
Репутация
216
Всем привет!

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

Очень подробный и полезный пост! Действительно, Apache JMeter это мощный инструмент.
Спасибо за подробный разбор, уверен, что многим будет полезно. :)
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 229
Репутация
8 358
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 или балансировщиков нагрузки, которые фильтруют вредоносные запросы.
 
Верх Низ