Назад | Перейти на главную страницу

Регулирование пропускной способности Apache для каждого клиента, по подсети

Мы заинтересованы в ограничении количества запросов в секунду и / или доступной пропускной способности для HTTP-клиентов, чтобы предотвратить случайный DoS. Мы предоставляем бесплатные научные данные и веб-сервисы, и, к сожалению, скрипты некоторых пользователей работают некорректно.

Я знаю, что существует множество модов Apache, которые позволяют регулировать IP-адрес каждого клиента, но проблема в том, что иногда мы видим людей, выполняющих распределенное сканирование со своих кластеров (сегодня это привело к средней нагрузке> 200 инцидентов!).

Что я действительно хотел бы сделать, так это дросселировать подсеть / 24, но без необходимости указывать который подсети заранее.

В идеале я также хотел бы иметь возможность делать это в пропорции от максимального ограничения, поэтому, если мы видим запросы только из одной подсети, они могут использовать все ресурсы сервера, но если две подсети конкурируют, они получить использовать половину каждого.

Возможно ли это с помощью:

Спасибо!

РЕДАКТИРОВАТЬ: Еще пара вещей ... Если что-то нужно сделать на уровне сетевой инфраструктуры (например, маршрутизаторы), это выходит за рамки нашей ответственности и мгновенно становится PITA. Поэтому я надеюсь найти решение, которое потребует изменений только на уровне сервера. Также, пожалуйста, не обижайтесь, если мне понадобится время, чтобы выбрать победителя, это новая тема для меня, поэтому я хочу немного прочитать предложения :-)

Будь очень осторожен. Простое замедление работы сети означает, что вы усугубите любую DOS-атаку - вам нужно ограничить соединения, прежде чем они достигнут веб-сервера.

Учтите - диски бывают очень медленно и обрабатывает только один запрос за раз. Одним из наиболее важных факторов при определении производительности веб-сервера является объем кэширования ввода-вывода, который может выполнять ОС, и он ограничен объемом свободной памяти в системе. Когда поступает запрос, его обрабатывает процесс (или поток) Apache. Этот процесс будет сидеть и загружать память и ЦП на все время, необходимое для составления ответа и отправки его через Интернет клиенту. Запрещение этой памяти кешу ввода-вывода. Один из способов минимизировать влияние этого - использовать подходящее обратный прокси перед веб-сервером - например, squid, который настраивается как однопоточный сервер.

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

(/ я просто погуглил "linux tc" и получил фотографию девушки в бикини;)

С точки зрения идентификации поисковых роботов / реальных DDOS, ответ намного сложнее. Конечно, я не знаю готового решения, надежно работающего с HTTP. Однако должна быть возможность изменить детектор в fail2ban для запуска блокировки или дросселирования, при котором вы можете обнаружить аномальный образец. А базовый пакет может интерпретировать большие объемы запросов от конкретной конечной точки как такой шаблон.

Если вы используете HAProxy или можете его использовать, проверьте, не Сообщение блога помогает </end_shameless_promotion_of_a_fellow_admin_and_company :)>