В основном записывает процесс проверки уязвимости медленной HTTP-атаки типа «отказ в обслуживании».
Медленная атака типа «отказ в обслуживании» HTTP — это атака типа «отказ в обслуживании» на уровне приложения, специально нацеленная на Интернет. Злоумышленник манипулирует бройлером в сети и проводит массированные атаки HTTP-запросов на целевой веб-сервер до тех пор, пока полоса пропускания сервера не будет заполнена. , вызывая отказ в обслуживании. Медленные атаки типа «отказ в обслуживании» постоянно развивались и развивались. Существует три основных типа атак: медленные заголовки, медленное тело и медленное чтение. Если взять в качестве примера медленные заголовки, веб-приложение должно получить все заголовки HTTP перед обработкой HTTP-запроса, поскольку заголовок HTTP содержит некоторую важную информацию, которую веб-приложение может использовать. Злоумышленник пользуется этим, чтобы инициировать HTTP-запрос и постоянно отправляет HTTP-заголовки, потребляя ресурсы соединения и памяти сервера. Данные перехвата пакетов показывают, что после того, как атакующий клиент устанавливает TCP-соединение с сервером, он отправляет HTTP-заголовок на сервер только каждые 40 секунд. Когда веб-сервер не получает два последовательных сообщения, он будет думать, что клиент этого не сделал. отправил заголовок, продолжая ждать, пока клиент отправит данные. Если злонамеренный клиент-злоумышленник продолжит устанавливать такие соединения, доступные соединения на сервере будут заполняться постепенно, что приведет к отказу в обслуживании. Этот тип атаки называется медленной атакой типа «отказ в обслуживании» HTTP.
Что мне нужно, так это инструмент «slowhttptest». В Интернете есть руководства по установке, но в процессе установки всегда возникают проблемы. В конце концов я решил это и записал. Процесс выглядит следующим образом. Сначала установите libssl-dev
sudo apt-get install libssl-dev
Затем
git clone https://github.com/shekyan/slowhttptest.git
cd slowhttptest
sudo ./configure
sudo make install
Придя сюда, я столкнулся с проблемой:
После долгой борьбы решения не было. Позже я использовал официальные подсказки WIKI (WIKI) для его установки, но все равно появлялась следующая ошибка:
Подсказка: OpenSSL-devel отсутствует, но я уверен, что установил его. В этот момент я подумал, что предыдущий метод скомпилировался успешно, но при выполнении компиляции произошла ошибка, поэтому я подумал о методе. Скопируйте и вставьте все содержимое медленного httptest-1.7 (официальный метод) в медленный httptest (метод git) и замените все дубликаты. Содержимое окончательного файла медленных httptest следующее:
Затем войдите в папку и выполните команду
sudo make install
Установлен успешно. Попробуйте использовать:
Окончательное заявление «белой шляпы» по проверке уязвимости выглядит следующим образом [Пожалуйста, не используйте этот сайт для тестирования, маленький сервер слишком хрупок]:
slowhttptest -c 1000 -X -g -o -slow_read_stats -r 200 -w 512 -y 1024 -n 5 -z 32 -k 3 -u http://www.example.com -p 3
Эффект следующий:
Соответствующие параметры все еще прикреплены, хотя их много в сети.
--a — Запустить спецификатор диапазона начальных значений для тестирования заголовка диапазона -b Использовать спецификаторы диапазона, ограниченные байтами, для тестирования заголовка диапазона.
На разных серверах используются разные методы предотвращения медленных атак типа «отказ в обслуживании» по http. Для предотвращения медленных атак «отказ в обслуживании» по протоколу HTTP рекомендуется использовать следующие меры:
【WebSphere】
1. Ограничьте размер HTTP-данных. Выполните следующие настройки в WebSphere Application Server:
любой одиночный HTTP Максимальный размер заголовка по умолчанию: 32768 байт. Ему можно задать разные значения.
HTTP Максимальное количество заголовков по умолчанию равно 50. Могут быть установлены различные предельные значения.
Другая распространенная атака DOS — отправка запроса, результатом которого является длительный запрос GET. Свойство ServerIOTimeoutRetry в подключаемом модуле WebSphere Application Server ограничивает количество повторных попыток любого запроса. Это может снизить влияние таких длительных запросов. Устанавливает ограничение на максимальный размер тела любого запроса.
2. Установите параметры поддержки активности.
Откройте каталог установки http-сервера IBM, откройте папку conf, откройте файл httpd.conf, найдите значение KeepAlive и измените значение ON на OFF. По умолчанию установлено значение ON. Это значение указывает, следует ли поддерживать соединение клиента с HTTP-СЕРВЕРОМ. Если установлено значение «ВКЛ», запросы будут помещены в очередь, когда количество запросов достигнет значения параметра MaxKeepAliveRequests, что приведет к более медленному ответу.
【Weblogic】
1、В интерфейсе управления конфигурациейвпротокол->Настройки в разделе «Общая информация» Тайм-аут сообщения о завершении меньше 400 2、В интерфейсе управления конфигурациейвпротокол->HTTP下设置 POST тайм-аут, продолжительность, макс. POST Размер находится в пределах безопасного диапазона значений.
【Nginx】
1. Настроив $request_method, настройте сервер так, чтобы он принимал ограничения на работу HTTP-пакетов; 2. Чтобы гарантировать, что это не повлияет на бизнес, отрегулируйте значения client_max_body_size, client_body_buffer_size, client_header_buffer_size, big_client_header_buffersclient_body_timeout и client_header_timeout и при необходимости увеличьте их соответствующим образом; 3. Для сеансов или одного и того же IP-адреса вы можете использовать параметры HttpLimitReqModule и HttpLimitZoneModule, чтобы ограничить количество запросов или количество одновременных подключений; 4. Настройте значения worker_processes и worker_connections в соответствии с размером ЦП и нагрузкой. Формула: max_clients = worker_processes * worker_connections.
【Apache】
Рекомендуется использовать два модуля mod_reqtimeout и mod_qos для взаимодействия друг с другом в целях защиты. 1. mod_reqtimeout используется для управления скоростью отправки запросов при каждом соединении. Пример конфигурации:
RequestReadTimeout header=10-40,minrate=500
RequestReadTimeout тело = 10-40, минимальная скорость = 500 Следует отметить, что для HTTPS-сайтов начальный таймаут необходимо увеличить, например, до 20 секунд. 2. mod_qos используется для контроля количества одновременных подключений. Пример конфигурации:
QS_SrvMaxConnClose 600
QS_SrvMaxConnPerIP 50 Эти два значения можно регулировать в зависимости от производительности сервера.
【Сервер IHS】 Сначала установите последний пакет исправлений, включите модуль mod_reqtimeout и добавьте: LoadModule reqtimeout_module modules/mod_reqtimeout.so Добавьте конфигурацию для модуля mod_reqtimeout: <IfModule mod_reqtimeout.c> RequestReadTimeout header=10-40,MinRate=500 body=10-40,MinRate=500 </IfModule> Для сайтов HTTPS рекомендуется иметь заголовок=20-40 и MinRate=500. См.: http://www-01.ibm.com/support/docview.wss?uid=swg21652165.
[Предложения по ремонту балансировки нагрузки F5] Оборудование балансировки нагрузки F5 имеет соответствующие модули защиты. Если у вас нет необходимого для приобретения, обратитесь к подробному процессу настройки во вложении. Для настройки защиты от медленных атак F5 перейдите по следующей ссылке: https://support.f5.com/kb/en-us/solutions/public/10000/200/sol10260.html https://devcentral.f5.com/articles/mitigating-slow-http-post-ddos-attacks-with-irules-ndash-follow-up
Другие ссылки: [*] Slowhttptest Github [*] HTTP Инструмент стресс-тестирования Dos-атак — Slowhttptest 1.5 [*] Проблемы с установкой SlowHTTPest и их решения [*] Как установить openssl-devel