INTEGRITY Документация

Обнаружение и защита конечных точек API (Free, Pro и Business)

Когда ваш API уже работает в продакшене и принимает трафик, нужно решить, какие конечные точки защитить в первую очередь, какие ограничения применить и как отслеживать злоупотребления, не блокируя при этом легитимных клиентов. В этом руководстве процесс разбит на пять этапов: инвентаризация конечных точек, принудительное шифрование соединений, ограничение доступа до ожидаемых шаблонов трафика, блокировка автоматизированных злоупотреблений и отслеживание результатов.

Базовый сценарий работы использует Cloudflare Application Security (также известного как Web Application Firewall, или WAF) функции, SSL/TLS параметры, а также обнаружение ботов, доступные на планах Free, Pro и Business. Отдельные примечания для Enterprise описывают API Shield возможности для команд, которым нужна валидация схем, проверка JSON Web Token (JWT) и анализ последовательностей.

Узнайте, что находится в открытом доступе

Прежде чем настраивать какие-либо правила безопасности, составьте инвентаризацию своих конечных точек API. Без полного списка вы не сможете направить защиту на нужные пути или обнаружить, когда неизвестная конечная точка начинает получать трафик.

Проводите аудит API-поверхности вручную

  1. Просмотрите конфигурацию маршрутизации вашего приложения и составьте список всех конечных точек с их HTTP-методами и ожидаемыми параметрами.

  2. Классифицируйте каждую конечную точку по уровню доступа (публичная, аутентифицированная, внутренняя). В первую очередь уделяйте внимание конечным точкам, которые принимают загрузку файлов, обрабатывают платежи или возвращают конфиденциальные данные.

    Уровень доступа Описание Примеры эндпоинтов
    Общедоступный Аутентификация не требуется /api/status, /api/products
    Аутентифицировано Требуйте токен или сессию /api/account, /api/orders
    Внутренний Не должен быть общедоступным /api/admin, /api/debug
  3. Зафиксируйте перечень в таблице или файле схемы OpenAPI, чтобы использовать его при написании выражений правил в следующих разделах. Если у вас уже есть спецификация OpenAPI, вы можете использовать её напрямую с проверкой схемы в API Shield (об этом рассказано в примечании об Enterprise ниже).

Требуйте HTTPS для всего трафика API

API запросы передают учетные данные, токены и данные ответов, которые злоумышленники могут перехватить по незашифрованному соединению. Некоторые API клиенты незаметно переходят на HTTP, если сервер это допускает, и отправляют конфиденциальные данные в открытом виде. Принудительное использование HTTPS на edge это предотвращает.

Настройте режим шифрования SSL/TLS

Установите режим шифрования Full (Strict) для шифрования трафика между посетителями и Cloudflare, а также между Cloudflare и вашим источником. Для этого режима на источнике требуется действительный сертификат.

  1. В панели управления Cloudflare перейдите в раздел SSL/TLS Обзор страницу.

    Перейдите в Обзор ↗
  2. Для шифрование SSL/TLS, выберите Full (Strict).

Подробнее о режимах шифрования и их требованиях см. в режимы шифрования SSL/TLS.

Включите Always Use HTTPS

Always Use HTTPS перенаправляет все запросы HTTP на HTTPS для каждого поддомена и хоста в вашем приложении. Это исключает случайную отправку клиентами запросов API по незашифрованному соединению.

  1. В панели управления Cloudflare перейдите в раздел SSL/TLS Обзор страницу.

    Перейдите в Обзор ↗
  2. Убедитесь, что ваш режим шифрования SSL/TLS не установлен в значение Off. Если шифрование выключено, опция Always Use HTTPS не отображается.

  3. Перейдите в Edge Certificates страницу.

    Перейдите в Edge Certificates ↗
  4. Включите Always Use HTTPS.

Установите минимальную версию TLS 1.2

API могут передавать конфиденциальные данные, например учётные данные и токены, поэтому минимальную версию TLS следует выбирать с учётом этого.

TLS 1.0 и 1.1 содержат известные уязвимости. Если задать минимальную версию TLS 1.2, соединения от клиентов со старыми протоколами будут отклоняться.

  1. На панели управления Cloudflare перейдите к разделу Edge Certificates страницу.

    Перейдите в Edge Certificates ↗
  2. Для Minimum TLS Version, выберите TLS 1.2.

Подробнее см. в Minimum TLS Version.

Отключение Automatic HTTPS Rewrites для доменов только с API

Automatic HTTPS Rewrites заменяет ссылки HTTP на HTTPS в HTML-ответах. Для API-эндпоинтов, которые возвращают JSON или другой контент не в формате HTML, такая замена не нужна и может привести к непредвиденному поведению, если API-клиенты переходят по изменённым URL. Если ваш домен обслуживает только API-трафик, отключите эту настройку.

  1. На панели управления Cloudflare перейдите к разделу Edge Certificates страницу.

    Перейдите в Edge Certificates ↗
  2. Отключите Automatic HTTPS Rewrites.

Ограничьте доступ к конечным точкам API

Легитимные клиенты API используют предсказуемые шаблоны запросов: конкретные методы HTTP, ожидаемые заголовки, например Content-Type: application/json, и запросов к задокументированным путям. Application Security пользовательские правила позволяют блокировать трафик, который отклоняется от этих паттернов. Правила ограничения скорости ограничивают объём запросов на одного клиента, чтобы предотвратить злоупотребления.

Блокировка запросов без ожидаемых заголовков

API клиенты обычно указывают Content-Type заголовок и может содержать Authorization заголовок или пользовательский заголовок API-ключа. Запросы к вашим API-путям без этих заголовков поступают не от ожидаемых клиентов.

Следующее пользовательское правило безопасности блокирует запросы к /api/ путей, в которых отсутствует Content-Type заголовок. Настройте проверки пути и заголовков в соответствии с вашим API.

  1. В панели управления Cloudflare перейдите в Безопасность > Правила безопасности.

    Перейдите в Правила безопасности ↗
  2. Выберите Создать правило > Custom rules.

  3. Укажите имя правила. Например, Block API requests missing Content-Type.

  4. В редакторе выражений введите:

    (starts_with(http.request.uri.path, "/api/") and not len(http.request.headers["content-type"][0]) > 0)
  5. Для Выберите действие, выберите Block.

  6. Выберите Развернуть.

Ограничьте HTTP-методы для каждой конечной точки

Если ваш /api/users эндпоинт принимает только GET и POST запросов заблокируйте все остальные HTTP-методы для этого пути. Это не позволяет злоумышленникам зондировать систему с помощью PUT, DELETE, или PATCH запросов к конечным точкам, которые их не поддерживают.

  1. В панели управления Cloudflare перейдите в Безопасность > Правила безопасности.

    Перейдите в Правила безопасности ↗
  2. Выберите Создать правило > Custom rules.

  3. Укажите имя правила. Например, Block unexpected methods on /api/users.

  4. В редакторе выражений введите:

    (http.request.uri.path eq "/api/users" and http.request.method ne "GET" and http.request.method ne "POST")

    Настройте путь и допустимые методы в соответствии с вашей конечной точкой.

  5. Для Выберите действие, выберите Block.

  6. Выберите Развернуть.

Повторите этот шаблон для каждой конечной точки с ограниченными методами. Вы можете объединить несколько путей в одно правило с помощью or операторы если у них одинаковые разрешённые методы.

Ограничьте скорость запросов к конечным точкам API

Конечные точки API сталкиваются с более целенаправленными злоупотреблениями, чем веб страницы, потому что злоумышленники могут вызывать их со скоростью машины, без отрисовки браузера. Rate limiting ограничивает количество запросов, которые один клиент может отправить за определенный промежуток времени.

Создайте отдельные правила ограничения частоты запросов для аутентифицированных и неаутентифицированных конечных точек. Неаутентифицированные конечные точки (вход, регистрация, сброс пароля) требуют более строгих ограничений, поскольку именно они чаще всего становятся целью для подстановка учётных данных и атак перебором паролей.

Следующий пример ограничивает запросы к /api/auth/login до 10 в минуту на один IP-адрес. Настройте путь, пороговое значение запросов и период для своих конечных точек.

  1. На панели управления Cloudflare перейдите к разделу Правила безопасности страницу.

    Перейдите в Правила безопасности ↗
  2. Выберите Создать правило > Правила ограничения скорости.

  3. Введите понятное название. Например, Rate limit login endpoint.

  4. В Поле раскрывающемся списке выберите URI Path. Задайте Оператор к равно и Значение к /api/auth/login.

  5. В разделе С теми же характеристиками, добавьте IP.

  6. В разделе Когда скорость превышает, задайте Запросы к 10 и Период к 1 минута.

  7. В разделе Затем выберите действие, выберите Block.

  8. Задайте Длительность (тайм-аут подавления атаки) до 1 минута.

  9. Выберите Развернуть.

Подробнее о параметрах ограничения частоты запросов и характеристиках подсчета см. в Параметры ограничения скорости.

Пример для API с использованием ключа API в качестве характеристики подсчета описан в Примеры правил ограничения скорости.

Защищайтесь от автоматизированных злоупотреблений API

Боты обращаются к конечным точкам API со скоростью машины, без накладных расходов браузера. Типичные автоматизированные атаки на API включают credential stuffing на конечные точки аутентификации, сбор данных через конечные точки листинга и манипуляции с остатками товара через конечные точки корзины или оформления заказа.

Включите Bot Fight Mode (Free)

Bot Fight Mode выдаёт проверку запросам, соответствующим известным паттернам ботов. Он применяется ко всему вашему домену и доступен на всех тарифах без дополнительной платы.

  1. На панели управления Cloudflare перейдите к разделу Security Settings страницу.

    Перейдите в Настройки ↗
  2. Фильтр по Ботовый трафик.

  3. Перейдите в Bot fight mode.

  4. Включите Bot fight mode включить.

Bot Fight Mode может помешать легитимному автоматизированному трафику к вашему API, например инструментам мониторинга, CI/CD-конвейерам или партнёрским интеграциям. Если у вас есть легитимные боты-клиенты, создайте правило исключения перед включением Bot Fight Mode (см. следующий раздел).

Подробнее о поведении и ограничениях Bot Fight Mode см. в Bot Fight Mode.

Создание правил-исключений для легитимных ботов (Pro, Business)

Если ваш API получает трафик от известных автоматизированных клиентов (сервисов мониторинга, партнёрских API, систем CI/CD), создайте пользовательское правило безопасности с Пропустить действие чтобы исключить их из защиты от ботов. Создайте правило исключения перед включением Super Bot Fight Mode в следующем разделе.

  1. В панели управления Cloudflare перейдите в Безопасность > Правила безопасности.

    Перейдите в Правила безопасности ↗
  2. Выберите Создать правило > Custom rules.

  3. Укажите имя правила. Например, Skip bot protections for monitoring service.

  4. Составьте выражение, соответствующее вашему известному бот-трафику. Например, чтобы пропускать защиту для запросов из определённого диапазона IP-адресов с известным User-Agent:

    (ip.src in {203.0.113.0/24} and http.user_agent contains "MonitoringBot")

    Замените диапазон IP-адресов и User-Agent значениями, которые соответствуют вашим легитимным бот-клиентам.

  5. Для Выберите действие, выберите Пропустить и затем выберите Все правила Super Bot Fight Mode.

  6. Выберите Развернуть.

Настройка Super Bot Fight Mode (Pro, Business)

Super Bot Fight Mode предоставляет детальные настройки, применяемые ко всему домену, что позволяет назначать разные действия для разных типов ботов.

Чтобы настроить Super Bot Fight Mode:

  1. На панели управления Cloudflare перейдите к разделу Security Settings страницу.

    Перейдите в Настройки ↗
  2. Фильтр по Ботовый трафик.

  3. Перейдите в Super Bot fight mode.

  4. Включите Super Bot fight mode включить.

  5. Выберите, как ваш домен должен реагировать на разные типы трафика, нажав соответствующий значок редактирования:

В Super Bot Fight Mode можно настроить разные действия для разных типов ботов:

Super Bot Fight Mode применяется ко всему домену и не поддерживает правила для отдельных путей. Если вам нужно задать разные пороги для ботов на разных путях API, потребуется Bot Management подписку (Enterprise).

Обнаружение утекших учетных данных на конечных точках входа

Application Security обнаружение утекших учётных данных проверяет входящие запросы на совпадение комбинаций имени пользователя и пароля с известными утечками данных. Используйте это обнаружение, чтобы ограничивать частоту запросов или применять challenge к запросам со скомпрометированными учётными данными на ваших эндпоинтах аутентификации.

Следующее правило ограничения частоты запросов ограничивает до 5 запросов в минуту с одного IP-адреса, содержащих ранее скомпрометированную комбинацию имени пользователя и пароля:

Параметр Значение
Выражение cf.waf.credential_check.username_and_password_leaked
Характеристики для подсчёта IP
Запросы за период 5 запросов / 1 минута
Действие Block

Полное выражение, включая идентификаторы обнаружения захвата аккаунта (ATO), см. в Пример правил противодействия.

Отслеживайте трафик своих API

После развёртывания правил безопасности проанализируйте результаты, чтобы выявить ложные срабатывания и настроить пороговые значения. Корректировки нужны как при ложных срабатываниях (когда блокируются легитимные клиенты), так и при пропусках (когда злоупотребления проходят незамеченными).

Просмотрите Security Events для путей API

Security Events показывает каждый запрос, соответствующий вашим правилам, включая выполненное действие и сработавшее правило. Отфильтруйте по префиксу пути API, чтобы увидеть, что именно блокирует Cloudflare и почему.

  1. На панели управления Cloudflare перейдите к разделу Аналитика страницу.

    Перейдите в Аналитика ↗
  2. Выберите События на вкладке.

  3. Добавьте фильтр для URI Path начинается с /api/.

  4. Просмотрите события. Найдите легитимных клиентов, которые блокируются (ложные срабатывания). Типичные признаки ложных срабатываний:

    • Запросы с известных IP-адресов партнёров
    • Запросы с действительными ключами API или заголовками авторизации
    • Запросы от сервисов мониторинга с известными строками User-Agent

Если вы обнаружите ложные срабатывания, обновите пользовательские правила, чтобы исключить затронутый трафик. См. порядок работы с правилом исключения в одном из предыдущих разделов.

Настройте пороги Rate Limiting

Слишком строгие пороги ограничения скорости запросов блокируют легитимных клиентов. Слишком мягкие пороги допускают злоупотребления. Проверьте события ограничения скорости запросов в Security Events чтобы найти оптимальный баланс.

  1. На панели управления Cloudflare перейдите к разделу Аналитика страницу.

    Перейдите в Аналитика ↗
  2. Выберите События на вкладке.

  3. Фильтр по Действие равно Block и Сервис равно Ограничение скорости запросов.

  4. Проверьте, поступают ли заблокированные запросы от легитимных клиентов или это вредоносный трафик.

  5. Если ограничению скорости подвергаются легитимные клиенты, отредактируйте соответствующее правило ограничения скорости, увеличив порог запросов или расширив временной период для этого правила.

  6. Если вредоносный трафик всё же проходит, снизьте порог правила или сократите временной период.

Настройте уведомления о всплесках событий безопасности

Cloudflare Notifications могут уведомлять вас, когда объём событий безопасности превышает пороговое значение, что может указывать на атаку или на неправильно настроенное правило.

  1. На панели управления Cloudflare перейдите к разделу Уведомления страницу.

    Перейдите в Уведомления ↗
  2. Выберите Add.

  3. Фильтр по WAF и выберите Оповещение Security Events.

  4. Укажите имя уведомления и способ доставки (email, webhook или PagerDuty).

  5. Затем настройте домены, для которых вы хотите получать уведомления. Также можно фильтровать события по конкретному действию (например, Block или Пропустить).

  6. Выберите Создание.

Полный список доступных типов уведомлений см. в Доступные уведомления.

Безопасность приложений

Боты

SSL/TLS

API Shield (Enterprise)