TrafficVeil
Вернуться к документации
Документация

Rate Limiting

Ограничение частоты запросов для защиты от атак и злоупотреблений.

Что такое Rate Limiting?


Rate Limiting в TrafficVeil

Rate Limiting ограничивает количество запросов, которые клиент может сделать за определённый период времени.


Зачем нужен Rate Limiting:

  • Защита от DDoS атак
  • Предотвращение брутфорс-атак
  • Защита от скрейпинга
  • Контроль нагрузки на сервер
  • Справедливое распределение ресурсов

  • Типы лимитов:

  • **По IP адресу** — лимит для каждого IP
  • **По User-Agent** — лимит для каждого UA
  • **По URL** — лимит для конкретных страниц
  • **Глобальный** — общий лимит для домена
  • **По стране** — лимит для географических регионов

  • Единицы измерения:

  • Запросов в секунду (req/s)
  • Запросов в минуту (req/m)
  • Запросов в час (req/h)
  • Запросов в день (req/d)

  • Лимиты по IP адресу


    Настройка лимита по IP:


    Базовые параметры:

  • **Лимит:** количество запросов (например, 100)
  • **Период:** временное окно (например, 1 минута)
  • **Действие:** что делать при превышении

  • Пример: 100 запросов в минуту на IP

    Если IP делает 101-й запрос в течение минуты — применяется действие.


    Действия при превышении:

  • **Block** — заблокировать на время
  • **Challenge** — показать CAPTCHA
  • **Throttle** — замедлить ответы
  • **Log** — только логировать

  • Время блокировки:

  • 1 минута (по умолчанию)
  • 5 минут
  • 15 минут
  • 1 час
  • 24 часа
  • Бессрочно (до ручной разблокировки)

  • Алгоритмы:

  • **Sliding Window** — скользящее окно (рекомендуется)
  • **Fixed Window** — фиксированное окно
  • **Token Bucket** — токены (для burst трафика)

  • Рекомендуемые значения:

  • Обычный сайт: 60-120 req/min
  • API: 30-60 req/min
  • Логин: 5-10 req/min
  • Поиск: 20-30 req/min

  • Лимиты по URL


    Зачем нужны лимиты по URL:

    Разные страницы имеют разную нагрузку и требования безопасности.


    Примеры:

  • /login — строгий лимит (5 req/min)
  • /api/* — средний лимит (30 req/min)
  • /search — умеренный лимит (20 req/min)
  • /* — базовый лимит (100 req/min)

  • Настройка:

    1. Откройте Rate Limiting

    2. Нажмите "Добавить правило"

    3. Укажите URL паттерн

    4. Задайте лимит и действие


    URL паттерны:

  • Точное совпадение: /login
  • Префикс: /api/*
  • Regex: ^/user/[0-9]+$
  • Wildcard: /products/*/reviews

  • Приоритет правил:

    Правила применяются в порядке:

    1. Точное совпадение

    2. Regex

    3. Wildcard

    4. Глобальное правило


    Специальные страницы:

    Рекомендуется настроить отдельные лимиты для:

  • Страницы авторизации
  • Форма регистрации
  • Восстановление пароля
  • API endpoints
  • Формы обратной связи
  • Поиск

  • Продвинутые настройки


    Комбинированные правила:

    Можно комбинировать условия:

  • IP + URL: 10 req/min на /login для каждого IP
  • IP + UA: разные лимиты для мобильных и десктоп
  • IP + Country: разные лимиты для стран

  • Исключения (Whitelist):

    Освободите от лимитов:

  • Собственные IP адреса
  • IP партнёров и клиентов
  • Платёжные системы
  • Мониторинг (UptimeRobot, Pingdom)
  • Поисковые боты

  • Динамические лимиты (Pro+):

    Автоматическая адаптация лимитов:

  • При высокой нагрузке — ужесточение
  • При низкой нагрузке — ослабление
  • При атаке — автоматическая блокировка

  • Burst режим:

    Разрешить кратковременное превышение:

  • Burst: 50 запросов
  • После burst — стандартный лимит
  • Полезно для AJAX-приложений

  • Географические лимиты:

    Разные лимиты для разных стран:

  • Ваша страна: 200 req/min
  • Основные рынки: 100 req/min
  • Остальные: 50 req/min
  • Высокорисковые страны: 20 req/min

  • Ответы при блокировке


    HTTP статус коды:

  • **429 Too Many Requests** — стандартный код (по умолчанию)
  • **503 Service Unavailable** — для скрытия защиты
  • **403 Forbidden** — запрещён доступ

  • Заголовки ответа:

  • Retry-After: секунды до разблокировки
  • X-RateLimit-Limit: лимит
  • X-RateLimit-Remaining: осталось запросов
  • X-RateLimit-Reset: время сброса

  • Кастомная страница блокировки:

    Загрузите HTML страницу с вашим дизайном:

    1. Настройки домена → Rate Limiting

    2. Загрузить кастомную страницу

    3. Поддерживаются переменные: {{retry_after}}, {{ip}}


    JSON ответ для API:

    Для API endpoints возвращается JSON:

    ```json

    {

    "error": "rate_limit_exceeded",

    "retry_after": 60,

    "limit": 100,

    "remaining": 0

    }

    ```


    CAPTCHA Challenge:

    При действии "Challenge":

  • Показывается CAPTCHA
  • После прохождения — доступ восстанавливается
  • Повторный CAPTCHA через N минут

  • Мониторинг и алерты


    Статистика Rate Limiting:

  • Общее количество ограничений
  • Топ IP по ограничениям
  • Топ URL по ограничениям
  • График ограничений во времени

  • Уведомления:

    Настройте алерты при:

  • Более 100 ограничений в минуту
  • Один IP заблокирован более 10 раз
  • Подозрение на DDoS атаку

  • Каналы уведомлений:

  • Email
  • Telegram
  • Webhook

  • Логи Rate Limiting:

    Каждое ограничение логируется:

  • Время
  • IP адрес
  • URL
  • Правило, которое сработало
  • Применённое действие

  • Анализ паттернов:

    TrafficVeil анализирует паттерны и предлагает:

  • Оптимизацию лимитов
  • Добавление в whitelist легитимных IP
  • Ужесточение лимитов для атакующих

  • Отчёты:

    Еженедельный отчёт включает:

  • Общая статистика Rate Limiting
  • Топ-10 заблокированных IP
  • Рекомендации по настройке