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

Ретрансляция Apache для предотвращения DoS

Мне было интересно, есть ли технология, которая ретранслирует (замедляет) ответы на данный IP в соответствии со скоростью, с которой он отправляет запросы?

Например, у меня есть сервер apache с «тяжелой» службой API, которую я хочу ограничить 1 запросом / 2 секундами / IP, если сервер не загружен на 100%, или политикой «справедливого использования», если сервер полностью загружен. При желании я хотел бы продвигать определенные вызовы с определенными идентификаторами, например /req.php?id=157 с "бонусной ставкой", например 10 запросов / сек.

Также, если кто-то превышает, например, 100 запросов в час, ему будет предложен ответ об ошибке с предложением обновить и т. Д.

Для меня это звучит как обычное требование во многих системах, и я ожидал, что будут некоторые подходящие фреймворки. Знаете ли вы о каком-либо модуле php, python, java или даже о модуле apache?

Выполнение этого на уровне Apache не только непрактично, но и приводит к огромным накладным расходам. Если вам нужно установить ограничение скорости для каждого IP-адреса, лучше всего сделать это в брандмауэре ОС (например, IPFW в FreeBSD).

Мало того, что в долгосрочной перспективе он будет более гибким, так как он работает на системном уровне, фильтрация выполняется с молниеносной скоростью.

Что касается фактической реализации этого API, вы должны обрабатывать это в своем приложении API, а не в Apache. Записывайте запросы на быстрый носитель, такой как Memcache, и пусть cron извлекает и сохраняет данные в базе данных для обработки. Когда пользователь XYZ достиг порога, просто введите его в рукопожатии или в следующем запросе.

DDOS используется для снижения скорости запросов.

Не помогайте DDOS-атакам достичь своей цели.

Этот вопрос / ответ содержат информацию

https://stackoverflow.com/questions/131681/apache-rate-limiting-options