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

Ограничение скорости кальмаров

Я хочу ограничить количество запросов, которые мы получаем с отдельных 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, работающему на балансировщике нагрузки, на котором размещена веб-страница с надписью «вы заблокированы!»