Apache mod_reqtimeout не сбрасывает длинные запросы - PullRequest
3 голосов
/ 15 апреля 2011

Чтобы защитить себя от атаки типа slowloris, мы настроили модуль mod_reqtimeout в нашей установке Apache 2.2.17 (запущенной на Solaris, скомпилированной MPM).Mod_reqtimeout настроен следующим образом:

Заголовок RequestReadTimeout = 10-20, MinRate = 500 body = 10-20, MinRate = 500

Мы проводим тестирование с использованием инструмента OWASP http_dos_cli и по-прежнему можемсделать сайт недоступным за пару секунд.В журналах мы видим, что запрос усекается через 20 секунд, а затем обрабатывается.Поскольку URL ссылается на реальный ресурс, возвращается код состояния 200.Это препятствует тому, чтобы наш набор правил mod_security обнаруживал 408 кодов состояния, собирал статистику на основе IP и блокировал дальнейшие запросы с этого IP.

Любая идея о том, почему mod_reqtimeout обрезает запрос, а не отбрасывает его и возвращает 408?

Спасибо большое!

1 Ответ

4 голосов
/ 02 мая 2011

Я открыл отчет об ошибке и получил подтверждение, что проблемы в HTTPD Core вызывают следующие проблемы:

  • Apache не всегда возвращает 408 при обнаружении тайм-аута запроса (различные случаи)
  • Apache неправильно обрабатывает время ожидания запроса, когда URL-адрес соответствует директиве RedirectMatch

Подробнее здесь: https://issues.apache.org/bugzilla/show_bug.cgi?id=51103

Надеюсь, что в конце концов это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...