Гость
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Проясните поведение сервера при Slow POST атаке / 12 сообщений из 12, страница 1 из 1
10.04.2016, 19:58
    #39212007
janco
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проясните поведение сервера при Slow POST атаке
Приветствую. Читал о Slow POST атаках, но везде "в общих чертах". Типа делается пост-запрос с большим Content-Length заголовком и медленно передаются данные. Потом соединение прерывается с инициативы клиента не отправив все данные, и открывается новое. А сервер ожидает передачи всех данных и исчерпывает все соединения.
Но у меня возникли вопросы, не могу найти ответа. Прошу разъяснить или направить где это подробно описано.
1. Имеется сервер Apache 2.х Заголовки в ответ выдаёт на обычный запрос
Connection: Keep-alive
Keep-Alive: timeout=5, max=100
Что значит timeout=5? Он закроет соединение через 5 секунд после последнего переданного байта от клиента, или всё таки будет ждать, пока не придут все байты опред. в Content-length?
2. Если курлом делать запрос, то "разрыв" соединения как практически происходит? По таймауту?
3. Если прокси используется, с ним когда соединения рвутся?
...
Рейтинг: 0 / 0
10.04.2016, 20:09
    #39212008
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проясните поведение сервера при Slow POST атаке
janco, на все три вопроса ответ один - поставьте nginx перед apache.
...
Рейтинг: 0 / 0
11.04.2016, 16:11
    #39212781
VGrey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проясните поведение сервера при Slow POST атаке
janco1. Имеется сервер Apache 2.х Заголовки в ответ выдаёт на обычный запрос
Connection: Keep-alive
Keep-Alive: timeout=5, max=100
Что значит timeout=5? Он закроет соединение через 5 секунд после последнего переданного байта от клиента, или всё таки будет ждать, пока не придут все байты опред. в Content-length?

Сначала читать, как минимум, тут
Дальше, по ссылкам с wiki: timeout и max .

Иными словами, Вы сами, с помощью поисковиков, вполне могли найти ответы на вопросы о Keep-Alive.

janco2. Если курлом делать запрос, то "разрыв" соединения как практически происходит? По таймауту?
3. Если прокси используется, с ним когда соединения рвутся?

Грубо, Апачу неважно, соединяется с ним curl, бровзет, еще какой клиент, прямо или через прокси.
Если Keep-Alive: timeout=5, max=100, то соединение после одного запроса curl-лом будет разорвано через 5 сек после его выполнения. Если идет много запросов, например, бровзер открывает страницу, соединие будет разорвано или после 5 сек неативности, или после 100 запросов в одном соединении.

Механизм Keep-Alive никаго отношения к Slow POST атакам не имеет. Таймуты Keep-Alive никак не влияют на воможность или невозможность Slow POST.
...
Рейтинг: 0 / 0
11.04.2016, 17:40
    #39212904
janco
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проясните поведение сервера при Slow POST атаке
netwindjanco, на все три вопроса ответ один - поставьте nginx перед apache.
Как мне nginx ответит на эти вопросы?
@VGrey, спасибо. Но Вы коснулись только стороны работы сервера.
VGreyМеханизм Keep-Alive никаго отношения к Slow POST атакам не имеет. Таймуты Keep-Alive никак не влияют на воможность или невозможность Slow POST.
Вот это я не очень понимаю. На возможность/невозможность нет, а вот на сам ход атаки - сомневаюсь.
Из документации Апача:
apacheSetting KeepAliveTimeout to a high value may cause performance problems in heavily loaded servers. The higher the timeout, the more server processes will be kept occupied waiting on connections with idle clients.
Т.е. от этого значения зависит время ожидания соединения. Чем больше будут ожидаться запросы, тем быстрее лимит исчерпается. А при малом значении часть соединений будут закрываться и освобождаться для обслуживания новых клиентов и их запросов. Или я неправильно понимаю? Здесь также не ясно что такое idle client ?
Например если я курлом делаю запрос (интересует именно его случай) с опцией
--max-time 20
(для примера). И после 20 секунд если все данные не будут переданы, соединение будет закрыто с инициативы клиента, или оно станет idle? - Вот что наиболее меня интересует.
Дальше. Вот цитата с Хабра , что меня сбивает:
отсылаем http запрос, указывая большой content-length и медленно передаем всего по одному байту, обрывая на одном из моментов свой коннект и начиная новый. По стандарту, сервер должен дождаться полной отправки данных (полной — получив содержимое в Content-Length байт), прервав только по таймауту.
По какому таймауту? Вот зато я и спрашиваю. С одной стороны сервер должен дождаться всех байтов, с другой стороны, если я оборву связь на одном из моментов, то он закроет соединение через KeepAliveTimeout - 5 секунд.
Собственно и вопрос: Сколько он будет ждать? Пока не получит все байты, или 5 секунд? Ведь получается одна ситуация другую "перекрывает". Какая приоритетнее?
...
Рейтинг: 0 / 0
11.04.2016, 21:12
    #39213048
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проясните поведение сервера при Slow POST атаке
janconetwindjanco, на все три вопроса ответ один - поставьте nginx перед apache.
Как мне nginx ответит на эти вопросы?

nginx отвечает на запросы посетителей и решает конкретные проблемы. Он почти что не подвержен подобной атаке, из-за того что контекст подключения почти невесомый.

Теоретизирование с непонятной целью - это на форум к какерам.
...
Рейтинг: 0 / 0
12.04.2016, 17:53
    #39213955
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проясните поведение сервера при Slow POST атаке
jancoConnection: Keep-alive
Keep-Alive: timeout=5, max=100
Что значит timeout=5?Keep-alive это "постоянные соединения", а то, что вы подумали это тайм-ауты на обработку запроса.
Не нравятся умолчания - крутите mod_reqtimeout

P.S. Apache 2.2.x и 2.4.x - различаются по возможностям и документации.

P.P.S. Постоянные соединения работают при сочетании всех условий:
1. Запрошены клиентом и разрешены на сервере;
2. Размер ответа известен;
3. Новый запрос поступает до истечения тайм-аута после отсылки ответа;
4. Общее число запросов на одном TCP-соединении не превышает разрешённого на сервере.
...
Рейтинг: 0 / 0
12.04.2016, 18:52
    #39214010
janco
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проясните поведение сервера при Slow POST атаке
Basil A. Sidorov3. Новый запрос поступает до истечения тайм-аута после отсылки ответа;

Так ответа никакого и нет потому что запрос не доведён до конца: данные передаются медленно на сервер и потом в один момент прекращается передача. Т.е. будет ждать все байты?
...
Рейтинг: 0 / 0
12.04.2016, 19:02
    #39214025
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проясните поведение сервера при Slow POST атаке
jancoТак ответа никакого и нет потому что запрос не доведён до концаПовторяю ещё раз: таймауты на обработку запроса (безотносительно постоянных соединений) и таймауты между запросами для постоянных соединений - две совершенно разные сущности.

P.S. По вашему я, что, постскритумы от нечего делать поставил?
...
Рейтинг: 0 / 0
02.05.2016, 21:01
    #39228476
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проясните поведение сервера при Slow POST атаке
может оно так и было в какой-то версии апача. если это работает именно так, то это работает потому что данные могли не сбрасываться на диск, и хранится в памяти. само соединение почти не требует ресурсов.
то, что описал тс, довольно странно, ведь сервер может взять да и оборвать самое старое соединение, если у него не хватает ресурсов.
если клиент закрывает соединение, то сервер об этом узнает и тоже его закроет. клиенту нужно просто перестать отправлять данные.
...
Рейтинг: 0 / 0
03.05.2016, 01:08
    #39228508
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проясните поведение сервера при Slow POST атаке
alexy_blackможет оно так и было в какой-то версии апача. если это работает именно так, то это работает потому что данные могли не сбрасываться на диск, и хранится в памяти. само соединение почти не требует ресурсов.

Это где-то в идеальном мире ускоспециализированных программ. Но Apache - Универсальный Веб-Сервер . Он делает все, что может потребоваться разнообразным модулям.
Для оценки масштаба унификации следует вспомнить, что существовал даже некий cisco sip proxy server на базе apache. То есть, модуль обрабатывающий протокол SIP отдаленно похожий на HTTP.
Соединение задействует не только дескрипторы соединения, но и все что apache для него выделяет - весь контекст потока,всякие буферы в каждом модуле и тд. И все это освободить нельзя до завершения обработки запроса. В этом суть атаки.

то, что описал тс, довольно странно, ведь сервер может взять да и оборвать самое старое соединение, если у него не хватает ресурсов.
если клиент закрывает соединение, то сервер об этом узнает и тоже его закроет. клиенту нужно просто перестать отправлять данные.
Для этого нужно чтобы кто-то написал этот код. Но его не написали. По разным причинам.
Максимум что apache 2.4 научили делать - не обрабатывать соединения в состоянии простого ожидания. От атаки это не спасает.
...
Рейтинг: 0 / 0
03.05.2016, 02:36
    #39228517
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проясните поведение сервера при Slow POST атаке
netwindДля этого нужно чтобы кто-то написал этот код. Но его не написали. По разным причинам.
Максимум что apache 2.4 научили делать - не обрабатывать соединения в состоянии простого ожидания. От атаки это не спасает.в который раз убеждаюсь, что апач лучше не использовать :) по крайней мере как фронтенд точно.
когда я пишу веб сервер, мне всегда в голову стукает мысль "что будет если кончится такой-то ресурс", память например. веб, такое дело, там всегда нужно проверять на предмет атаки.
...
Рейтинг: 0 / 0
04.05.2016, 00:54
    #39228761
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проясните поведение сервера при Slow POST атаке
alexy_black, я не писал, что apache - плохой. Я писал о том, что apache универсальный.
А вот вы попытались приписать apache спорный функционал, которого нет и не понятно как вообще реализовать. Да его и в nginx нет.
Что значит формулировка не "хватает ресурсов " ? Кто их будет высчитывать и по какому алгоритму ?

Есть настройка MaxClients и всякие таймауты - многим этого достаточно для достижения стабильности.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Проясните поведение сервера при Slow POST атаке / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]