Я исследую уязвимость Slowloris и я думаю, что понимаю, как и почему работает такая атака.
Я не понимаю, почему Lighttpd и NginX не затронуты (согласно той же статье, что и ссылка выше). Что они делают такого особенного?
У Apache есть теория «максимума клиентов»
Это количество одновременных подключений, которое он может обработать. I.E. Если на сервере Apache установлено ограничение «максимальное количество клиентов», равное 100, и выполнение каждого запроса занимает 1 секунду, он может обрабатывать не более 100 запросов в секунду.
Приложение, такое как SlowLoris, будет наводнять сервер соединениями, в нашем примере, если SlowLoris отправляет 200 соединений в секунду, а Apache может обрабатывать только 100 соединений в секунду, очередь соединений будет увеличиваться и использовать всю память на машине, приводя ее к улов. Это похоже на то, как работает анонимный LOIC.
NGINX и Lighttpd (среди прочего) не имеют максимального количества подключений, вместо этого они используют рабочие потоки, поэтому теоретически нет ограничений на количество подключений, которые они могут обрабатывать.
Если вы отслеживаете свои соединения Apache, вы увидите, что большинство активных соединений - это «отправка» или «получение» данных от клиента. В NGINX / Lighttpd они просто игнорируют эти запросы и позволяют им работать в фоновом режиме, не используя системные ресурсы, и ему нужно только обрабатывать соединения с чем-то происходящим (анализ ответов, чтение данных с внутренних серверов и т. Д.)
Я ответил на аналогичный вопрос сегодня днем, так что информация там может быть вам интересна Уменьшение очереди запросов Apache
На самом деле Nginx уязвим для атаки slowloris. Дефицитный ресурс - это максимальное количество одновременных рабочих подключений. Это число можно рассчитать как worker_connections * worker_processes и равно 512 в конфигурации nginx по умолчанию. Таким образом, довольно легко снять незащищенный nginx с помощью таких инструментов, как голорис.
комментарий valyala следует принять как ответ.
Большинство серверов nginx используют конфигурации по умолчанию и поэтому уязвимы для атаки slowloris. Я использовал slowloris для удаления некоторых веб-сайтов nginx моего друга, используя только свой ноутбук, и обычно это занимало менее 5 минут (мои друзья предлагали мне это сделать).
Как заявляла valyala, технически nginx не уязвим для slowloris, но конфигурации по умолчанию ограничивают максимальное количество подключений, поэтому, когда количество подключений превышает это число, nginx отбрасывает новый запрос, что приводит к отказу в обслуживании.
Известные способы защиты nginx от slowloris включают ограничение количества подключений с одного и того же IP-адреса и увеличение конфигурации worker_connections. Атака по-прежнему работает, но становится сложнее (может занять больше 5 минут?: D)