Кальмар, ограничивающий скорость

Я хочу ограничить количество запросов, которые мы получаем от отдельных IP-адресов, используя squid (предположим, я должен использовать squid по политическим причинам), блокируя те, которые делают слишком много запросов за определенный период времени.

Я подумывал написать короткий Perl-скрипт и external_acl_type с пулом задержек, но я не уверен, какие параметры я могу передать вспомогательной функции.

что-то вроде:

external_acl_type rate_limit / usr / bin / squid-access-control dst

но я не уверен, что это сработает?

1 ответ

Решение

Таким образом, решение, которое я придумал и которое, я думаю, вполне заслуживает документирования, заключается в следующем:

  • Squid регистрирует все полученные запросы
  • Для запросов CDN squid следует за заголовком X-forwarded-For, оставляя фактический IP-адрес клиента в журналах
  • Fail2ban проверяет журналы, записывает, сколько запросов делают клиенты в минуту и ​​т. Д.
  • Когда клиент делает X запросов, он помещается в список IP-адресов Squirm, в котором запрос переписан так, чтобы указывать на веб-сервер в loadbalancer.
  • Squid подхватывает это, отказывает этому запросу в доступе к реальным веб-серверам и предоставляет им доступ к серверу thttpd, работающему на loadbalancer, на котором размещена веб-страница "Вы забанены!"
Другие вопросы по тегам