Назад |
Перейти на главную страницу
Ограничение скорости кальмаров
Я хочу ограничить количество запросов, которые мы получаем с отдельных IP-адресов, используя squid (предположим, я должен использовать squid по политическим причинам), блокируя те, которые делают слишком много запросов за установленный период времени.
Я думал о написании короткого Perl-скрипта и external_acl_type с пулом задержки, но я не уверен, какие параметры я могу передать вспомогательной функции.
что-то вроде:
external_acl_type ограничение скорости / usr / bin / squid-контроль доступа dst
но я не уверен, что это сработает?
Итак, решение, которое я придумал, которое, я думаю, вполне заслуживает документирования, выглядит следующим образом:
- Squid регистрирует все полученные запросы
- Для запросов CDN squid следует заголовку X-forwarded-For, оставляя фактический IP-адрес клиента в журналах.
- Fail2ban проверяет логи, записывая, сколько запросов делают клиенты в минуту и т. Д.
- Когда клиент делает X запросов, он помещается в извиваться Список IP-адресов, в котором запрос переписан, чтобы указывать на веб-сервер на балансировщике нагрузки.
- Squid подхватывает это, отказывает этому запросу в доступе к реальным веб-серверам и разрешает им доступ к серверу thttpd, работающему на балансировщике нагрузки, на котором размещена веб-страница с надписью «вы заблокированы!»