Проверка уязвимости медленной HTTP-атаки типа «отказ в обслуживании» (установка медленного httptest)
Проверка уязвимости медленной HTTP-атаки типа «отказ в обслуживании» (установка медленного httptest)

0x01 Предисловие

В основном записывает процесс проверки уязвимости медленной HTTP-атаки типа «отказ в обслуживании».

0x02 Что такое атака типа «отказ в обслуживании» HTTP?

Медленная атака типа «отказ в обслуживании» HTTP — это атака типа «отказ в обслуживании» на уровне приложения, специально нацеленная на Интернет. Злоумышленник манипулирует бройлером в сети и проводит массированные атаки HTTP-запросов на целевой веб-сервер до тех пор, пока полоса пропускания сервера не будет заполнена. , вызывая отказ в обслуживании. Медленные атаки типа «отказ в обслуживании» постоянно развивались и развивались. Существует три основных типа атак: медленные заголовки, медленное тело и медленное чтение. Если взять в качестве примера медленные заголовки, веб-приложение должно получить все заголовки HTTP перед обработкой HTTP-запроса, поскольку заголовок HTTP содержит некоторую важную информацию, которую веб-приложение может использовать. Злоумышленник пользуется этим, чтобы инициировать HTTP-запрос и постоянно отправляет HTTP-заголовки, потребляя ресурсы соединения и памяти сервера. Данные перехвата пакетов показывают, что после того, как атакующий клиент устанавливает TCP-соединение с сервером, он отправляет HTTP-заголовок на сервер только каждые 40 секунд. Когда веб-сервер не получает два последовательных сообщения, он будет думать, что клиент этого не сделал. отправил заголовок, продолжая ждать, пока клиент отправит данные. Если злонамеренный клиент-злоумышленник продолжит устанавливать такие соединения, доступные соединения на сервере будут заполняться постепенно, что приведет к отказу в обслуживании. Этот тип атаки называется медленной атакой типа «отказ в обслуживании» HTTP.

0x02 Как проверить (обнаружить) HTTP-атаки типа «отказ в обслуживании»?

Что мне нужно, так это инструмент «slowhttptest». В Интернете есть руководства по установке, но в процессе установки всегда возникают проблемы. В конце концов я решил это и записал. Процесс выглядит следующим образом. Сначала установите libssl-dev

Язык кода:javascript
копировать
sudo apt-get install libssl-dev

Затем

Язык кода:javascript
копировать
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 следующее:

Затем войдите в папку и выполните команду

Язык кода:javascript
копировать
sudo make install

Установлен успешно. Попробуйте использовать:

Окончательное заявление «белой шляпы» по проверке уязвимости выглядит следующим образом [Пожалуйста, не используйте этот сайт для тестирования, маленький сервер слишком хрупок]:

Язык кода:javascript
копировать
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 Использовать спецификаторы диапазона, ограниченные байтами, для тестирования заголовка диапазона.

  • Количество соединений для c ограничено 65539.
  • d прокси-хост:порт используется для направления всего трафика через веб-прокси.
  • e прокси-хост:порт порт используется только для направления пробного трафика через веб-прокси.
  • h, B, R или x задают замедление в заголовке или теле сообщения, - R позволяет проверять диапазон, включает тестирование медленного чтения - x
  • g Генерация статистики в форматах CSV и HTML, медленный режим xxx. csv/html, где xxx — время и дата.
  • Данные отслеживания интервала в секундах в секундах для каждого соединения
  • k коэффициент канала количество повторных запросов по одному и тому же соединению для тестирования медленного чтения, если сервер поддерживает прокладку HTTP-конвейера.
  • l В секундах, время испытания в секундах
  • Операции чтения из приемного буфера с интервалом в n секунд.
  • o file определяет путь и/или имя выходного файла, если указано допустимое значение -g
  • Тайм-аут p секунд ожидания ответа HTTP после подключения зонда, сервер считается недоступным
  • Скорость соединения r секунд
  • Спецификация заголовка длины содержимого байта, если указан -b
  • t глагол обычай
  • u URL Целевой URL-адрес, введите его в браузере в том же формате, что и e. г https://host[:port]/
  • журналы уровня детализации уровня 0–4
  • w размер рекламного окна в диапазоне байтов будет выбран из
  • Конец данных трассировки максимальной длины x байтов
  • Размер рекламного окна в диапазоне байтов будет выбран из
  • z байт Чтение байтов из приемного буфера с помощью одной операции read().

0x03 Рекомендации по восстановлению

На разных серверах используются разные методы предотвращения медленных атак типа «отказ в обслуживании» по http. Для предотвращения медленных атак «отказ в обслуживании» по протоколу HTTP рекомендуется использовать следующие меры:

【WebSphere】

1. Ограничьте размер HTTP-данных. Выполните следующие настройки в WebSphere Application Server:

Язык кода:javascript
копировать
любой одиночный 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 используется для управления скоростью отправки запросов при каждом соединении. Пример конфигурации:

В части заголовка запроса первоначальный тайм-аут установлен на 10 секунд, а после получения данных, отправленных клиентом, тайм-аут будет продлеваться на 1 секунду для каждых 500 байт полученных данных, но максимальный тайм-аут не должен превышать 40 секунд. . Может защитить от медленных атак типа слолорис.

RequestReadTimeout header=10-40,minrate=500

В части тела запроса изначально установите тайм-аут равным 10 секундам, а после получения данных, отправленных клиентом, тайм-аут будет продлеваться на 1 секунду для каждых 500 байт полученных данных, но максимальный тайм-аут не должен превышать 40 секунд. Может защитить от медленных атак типа тела сообщения.

RequestReadTimeout тело = 10-40, минимальная скорость = 500 Следует отметить, что для HTTPS-сайтов начальный таймаут необходимо увеличить, например, до 20 секунд. 2. mod_qos используется для контроля количества одновременных подключений. Пример конфигурации:

Когда количество одновременных подключений к серверу превышает 600, поддержка активности отключается.

QS_SrvMaxConnClose 600

Ограничьте максимальное количество одновременных подключений на IP-адрес источника до 50.

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose