Как заддосить сайт неприятеля
Есть такая интересная тулза для нагрузочного тестирования, которая кстати не хило так может нагрузить проц. сервера (Смотри скрин выше, запуск http-флуд запросами, всего 5 потоков).)
Apache JMeter:
- Описание: Один из самых популярных инструментов для нагрузочного тестирования. Подходит для тестирования веб-приложений, API, баз данных и других систем.
 - Функции:
- Тестирование HTTP, HTTPS, SOAP, REST, FTP и других протоколов.
 - Гибкость и возможность настройки сложных сценариев.
 - Отчеты в виде графиков и статистики.
 
 - Платформа: Java, работает на Windows.
 - Сайт: Apache JMeter
 
1. Установить Apache JMeter
- Скачать JMeter:
- Перейдите на официальный сайт Apache JMeter.
 - Скачайте архив JMeter (обычно это .zip файл).
 
 - Установить JMeter:
- Разархивируйте загруженный файл в любую удобную папку на вашем компьютере (например, C:\JMeter).
 
 - Убедиться в наличии Java:
- JMeter требует установленной Java (JDK или JRE) версии 8 или выше.
 - Проверьте, установлена ли Java, командой в терминале:
 - 
	
	
Код:
java -version - Если Java не установлена, скачайте и установите её с https://www.oracle.com/java/technologies/downloads/?er=221886#jdk23-windows или OpenJDK JDK 23.0.1 GA Release.
 
 
2. Настройка переменных окружения (Если нужно, обычно не нужно, этот пункт нужен, если JMeter не запускается с ошибкой что не установлен JAVA)
Чтобы Java работала в командной строке (CMD) и других приложениях, нужно настроить переменные окружения:В меню пуск->Поиск, ввести Изменение системных переменных
Нажать кнопку "Переменные среды" и нажмите Создать.
Введите:
Имя переменной: JAVA_HOME
Значение переменной: путь к установленной Java, нужно путь до exe (например, C:\Program Files\Java\jdk-XX).
Нажмите OK.
3. Настройка переменной Path:
В списке "Системные переменные" найдите переменную Path и нажмите Изменить.
Нажмите Создать и добавьте:
%JAVA_HOME%
Нажмите OK.
3. Запустить JMeter
- Перейдите в папку, где вы разархивировали JMeter (например, C:\JMeter).
 - Откройте папку bin.
 - Дважды щелкните по файлу jmeter.bat для запуска графического интерфейса JMeter.
 - Если всё установлено правильно, откроется главное окно 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: Отображает графики нагрузки.
В итоге после запуска теста, на сервере начнут создаваться потоки веб сервера апаче, например как у меня на первом скрине и начнется потребление CPU, чем больше потоков тем больше потоков веб-сервера и больше нагрузка.
Правда и защитится от этого легко, достаточно ограничить на своём сервере число коннектов и блокировать привышающие айпи-адреса, либо просто ограничеть число потоков с одного айпи адреса.
Вот-так!)
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 Example Domain: URL-цель.
 - -x 24: тайм-аут соединения.
 - -p 3: задержка перед повторной отправкой.
 
Как защититься от таких атак:
- Настройка тайм-аутов на сервере (низкий тайм-аут для заголовков и тела запроса).
 - Ограничение числа соединений от одного IP.
 - Использование CDN или балансировщиков нагрузки, которые фильтруют вредоносные запросы.
 
	