Http сервер - медленное чтение - PullRequest
1 голос
/ 24 февраля 2012

Я пытаюсь смоделировать медленную атаку чтения http на сервер apache, работающий на моем локальном хосте. Но, похоже, сервер не жалуется, а просто ждет, что клиент прочитает.

Вот что я делаю:

  1. Запрос огромного файла (скажем, ~ 1 МБ) с http-сервера
  2. Чтение ответа от сервера в цикле ожидания за 100 секунд до последовательного чтения

Поскольку файл огромен, а клиентский буфер приема мал, сервер должен отправить файл несколькими частями. Но на стороне клиента я жду 100 секунд между последовательными чтениями. В результате сервер часто опрашивает клиента и обнаруживает, что размер окна приема клиента равен нулю, поскольку клиент еще не прочитал буфер приема.

Но, похоже, сервер не пытается разорвать соединение и молча продолжает опрашивать клиента. Сервер отправляет данные, когда размер окна клиента> 0, и снова возвращается к ожиданию клиента.

Я хочу знать, есть ли какие-либо параметры конфигурации apache, которые я могу установить для разрыва соединения со стороны сервера после некоторого ожидания ожидания клиентом чтения данных.

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Возможно, это было бы более полезно для вас (проще и экономит ваше время): http://ha.ckers.org/slowloris/, который представляет собой Perl-скрипт, который отправляет частичные HTTP-запросы, сервер Apache оставляет соединение открытым (теперь недоступно для новых пользователей).) и при выполнении в среде Linux (Linux не ограничивает потоки сверх возможностей оборудования), вы можете эффективно блокировать все открытые сокеты и, в свою очередь, запретить другим пользователям доступ к серверу.Он использует минимальную пропускную способность, потому что он не «заполняет» сервер запросами, он просто медленно захватывает сокеты.Вы можете скачать файл здесь: http://ha.ckers.org/slowloris/slowloris.pl

Чтобы предотвратить такую ​​атаку (ну, смягчите), смотрите здесь: https://serverfault.com/questions/32361/how-to-best-defend-against-a-slowloris-dos-attack-against-an-apache-web-server

Вы также можете использовать балансировщик нагрузки или раунд.настройка робина.

0 голосов
/ 09 января 2015

Попробуйте slowhttptest , чтобы протестировать атаку медленного чтения, которую вы описываете. (Он также может использоваться для проверки медленной отправки заголовков.)

...