← Варианты использования / use-cases / solutions
Обнаружение и защита конечных точек 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-поверхности вручную
-
Просмотрите конфигурацию маршрутизации вашего приложения и составьте список всех конечных точек с их HTTP-методами и ожидаемыми параметрами.
-
Классифицируйте каждую конечную точку по уровню доступа (публичная, аутентифицированная, внутренняя). В первую очередь уделяйте внимание конечным точкам, которые принимают загрузку файлов, обрабатывают платежи или возвращают конфиденциальные данные.
Уровень доступа Описание Примеры эндпоинтов Общедоступный Аутентификация не требуется /api/status,/api/productsАутентифицировано Требуйте токен или сессию /api/account,/api/ordersВнутренний Не должен быть общедоступным /api/admin,/api/debug -
Зафиксируйте перечень в таблице или файле схемы OpenAPI, чтобы использовать его при написании выражений правил в следующих разделах. Если у вас уже есть спецификация OpenAPI, вы можете использовать её напрямую с проверкой схемы в API Shield (об этом рассказано в примечании об Enterprise ниже).
Требуйте HTTPS для всего трафика API
API запросы передают учетные данные, токены и данные ответов, которые злоумышленники могут перехватить по незашифрованному соединению. Некоторые API клиенты незаметно переходят на HTTP, если сервер это допускает, и отправляют конфиденциальные данные в открытом виде. Принудительное использование HTTPS на edge это предотвращает.
Настройте режим шифрования SSL/TLS
Установите режим шифрования Full (Strict) для шифрования трафика между посетителями и Cloudflare, а также между Cloudflare и вашим источником. Для этого режима на источнике требуется действительный сертификат.
-
В панели управления Cloudflare перейдите в раздел SSL/TLS Обзор страницу.
Перейдите в Обзор ↗ -
Для шифрование SSL/TLS, выберите Full (Strict).
Подробнее о режимах шифрования и их требованиях см. в режимы шифрования SSL/TLS.
Включите Always Use HTTPS
Always Use HTTPS перенаправляет все запросы HTTP на HTTPS для каждого поддомена и хоста в вашем приложении. Это исключает случайную отправку клиентами запросов API по незашифрованному соединению.
-
В панели управления Cloudflare перейдите в раздел SSL/TLS Обзор страницу.
Перейдите в Обзор ↗ -
Убедитесь, что ваш режим шифрования SSL/TLS не установлен в значение Off. Если шифрование выключено, опция Always Use HTTPS не отображается.
-
Перейдите в Edge Certificates страницу.
Перейдите в Edge Certificates ↗ -
Включите Always Use HTTPS.
Установите минимальную версию TLS 1.2
API могут передавать конфиденциальные данные, например учётные данные и токены, поэтому минимальную версию TLS следует выбирать с учётом этого.
TLS 1.0 и 1.1 содержат известные уязвимости. Если задать минимальную версию TLS 1.2, соединения от клиентов со старыми протоколами будут отклоняться.
-
На панели управления Cloudflare перейдите к разделу Edge Certificates страницу.
Перейдите в Edge Certificates ↗ -
Для 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-трафик, отключите эту настройку.
-
На панели управления Cloudflare перейдите к разделу Edge Certificates страницу.
Перейдите в Edge Certificates ↗ -
Отключите Automatic HTTPS Rewrites.
Ограничьте доступ к конечным точкам API
Легитимные клиенты API используют предсказуемые шаблоны запросов: конкретные методы HTTP, ожидаемые заголовки, например Content-Type: application/json, и запросов к задокументированным путям. Application Security пользовательские правила позволяют блокировать трафик, который отклоняется от этих паттернов. Правила ограничения скорости ограничивают объём запросов на одного клиента, чтобы предотвратить злоупотребления.
Блокировка запросов без ожидаемых заголовков
API клиенты обычно указывают Content-Type заголовок и может содержать Authorization заголовок или пользовательский заголовок API-ключа. Запросы к вашим API-путям без этих заголовков поступают не от ожидаемых клиентов.
Следующее пользовательское правило безопасности блокирует запросы к /api/ путей, в которых отсутствует Content-Type заголовок. Настройте проверки пути и заголовков в соответствии с вашим API.
-
В панели управления Cloudflare перейдите в Безопасность > Правила безопасности.
Перейдите в Правила безопасности ↗ -
Выберите Создать правило > Custom rules.
-
Укажите имя правила. Например,
Block API requests missing Content-Type. -
В редакторе выражений введите:
(starts_with(http.request.uri.path, "/api/") and not len(http.request.headers["content-type"][0]) > 0) -
Для Выберите действие, выберите Block.
-
Выберите Развернуть.
Ограничьте HTTP-методы для каждой конечной точки
Если ваш /api/users эндпоинт принимает только GET и POST запросов заблокируйте все остальные HTTP-методы для этого пути. Это не позволяет злоумышленникам зондировать систему с помощью PUT, DELETE, или PATCH запросов к конечным точкам, которые их не поддерживают.
-
В панели управления Cloudflare перейдите в Безопасность > Правила безопасности.
Перейдите в Правила безопасности ↗ -
Выберите Создать правило > Custom rules.
-
Укажите имя правила. Например,
Block unexpected methods on /api/users. -
В редакторе выражений введите:
(http.request.uri.path eq "/api/users" and http.request.method ne "GET" and http.request.method ne "POST")Настройте путь и допустимые методы в соответствии с вашей конечной точкой.
-
Для Выберите действие, выберите Block.
-
Выберите Развернуть.
Повторите этот шаблон для каждой конечной точки с ограниченными методами. Вы можете объединить несколько путей в одно правило с помощью or операторы если у них одинаковые разрешённые методы.
Ограничьте скорость запросов к конечным точкам API
Конечные точки API сталкиваются с более целенаправленными злоупотреблениями, чем веб страницы, потому что злоумышленники могут вызывать их со скоростью машины, без отрисовки браузера. Rate limiting ограничивает количество запросов, которые один клиент может отправить за определенный промежуток времени.
Создайте отдельные правила ограничения частоты запросов для аутентифицированных и неаутентифицированных конечных точек. Неаутентифицированные конечные точки (вход, регистрация, сброс пароля) требуют более строгих ограничений, поскольку именно они чаще всего становятся целью для подстановка учётных данных и атак перебором паролей.
Следующий пример ограничивает запросы к /api/auth/login до 10 в минуту на один IP-адрес. Настройте путь, пороговое значение запросов и период для своих конечных точек.
-
На панели управления Cloudflare перейдите к разделу Правила безопасности страницу.
Перейдите в Правила безопасности ↗ -
Выберите Создать правило > Правила ограничения скорости.
-
Введите понятное название. Например,
Rate limit login endpoint. -
В Поле раскрывающемся списке выберите URI Path. Задайте Оператор к равно и Значение к
/api/auth/login. -
В разделе С теми же характеристиками, добавьте IP.
-
В разделе Когда скорость превышает, задайте Запросы к
10и Период к 1 минута. -
В разделе Затем выберите действие, выберите Block.
-
Задайте Длительность (тайм-аут подавления атаки) до 1 минута.
-
Выберите Развернуть.
Подробнее о параметрах ограничения частоты запросов и характеристиках подсчета см. в Параметры ограничения скорости.
Пример для API с использованием ключа API в качестве характеристики подсчета описан в Примеры правил ограничения скорости.
Защищайтесь от автоматизированных злоупотреблений API
Боты обращаются к конечным точкам API со скоростью машины, без накладных расходов браузера. Типичные автоматизированные атаки на API включают credential stuffing на конечные точки аутентификации, сбор данных через конечные точки листинга и манипуляции с остатками товара через конечные точки корзины или оформления заказа.
Включите Bot Fight Mode (Free)
Bot Fight Mode выдаёт проверку запросам, соответствующим известным паттернам ботов. Он применяется ко всему вашему домену и доступен на всех тарифах без дополнительной платы.
-
На панели управления Cloudflare перейдите к разделу Security Settings страницу.
Перейдите в Настройки ↗ -
Фильтр по Ботовый трафик.
-
Перейдите в Bot fight mode.
-
Включите 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 в следующем разделе.
-
В панели управления Cloudflare перейдите в Безопасность > Правила безопасности.
Перейдите в Правила безопасности ↗ -
Выберите Создать правило > Custom rules.
-
Укажите имя правила. Например,
Skip bot protections for monitoring service. -
Составьте выражение, соответствующее вашему известному бот-трафику. Например, чтобы пропускать защиту для запросов из определённого диапазона IP-адресов с известным User-Agent:
(ip.src in {203.0.113.0/24} and http.user_agent contains "MonitoringBot")Замените диапазон IP-адресов и User-Agent значениями, которые соответствуют вашим легитимным бот-клиентам.
-
Для Выберите действие, выберите Пропустить и затем выберите Все правила Super Bot Fight Mode.
-
Выберите Развернуть.
Настройка Super Bot Fight Mode (Pro, Business)
Super Bot Fight Mode предоставляет детальные настройки, применяемые ко всему домену, что позволяет назначать разные действия для разных типов ботов.
Чтобы настроить Super Bot Fight Mode:
-
На панели управления Cloudflare перейдите к разделу Security Settings страницу.
Перейдите в Настройки ↗ -
Фильтр по Ботовый трафик.
-
Перейдите в Super Bot fight mode.
-
Включите Super Bot fight mode включить.
-
Выберите, как ваш домен должен реагировать на разные типы трафика, нажав соответствующий значок редактирования:
- Подробнее о проверенных ботах см. в Проверенные боты.
- Подробнее о поддерживаемых типах файлов см. в Защита статических ресурсов.
- Подробнее о скрытом внедрении кода см. в JavaScript detections.
- Подробнее об оптимизации WordPress см. в Super Bot Fight Mode для WordPress.
В Super Bot Fight Mode можно настроить разные действия для разных типов ботов:
- Блокировка или разрешение проверенных ботов
- Настройте отдельное действие (Allow, Block или Challenge) для Точно автоматизированный трафик (Bot Score из 1)
- На тарифах Business и выше: настройте отдельное действие для вероятно автоматизированный трафик (оценка бота 2-29)
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 и почему.
-
На панели управления Cloudflare перейдите к разделу Аналитика страницу.
Перейдите в Аналитика ↗ -
Выберите События на вкладке.
-
Добавьте фильтр для URI Path начинается с
/api/. -
Просмотрите события. Найдите легитимных клиентов, которые блокируются (ложные срабатывания). Типичные признаки ложных срабатываний:
- Запросы с известных IP-адресов партнёров
- Запросы с действительными ключами API или заголовками авторизации
- Запросы от сервисов мониторинга с известными строками User-Agent
Если вы обнаружите ложные срабатывания, обновите пользовательские правила, чтобы исключить затронутый трафик. См. порядок работы с правилом исключения в одном из предыдущих разделов.
Настройте пороги Rate Limiting
Слишком строгие пороги ограничения скорости запросов блокируют легитимных клиентов. Слишком мягкие пороги допускают злоупотребления. Проверьте события ограничения скорости запросов в Security Events чтобы найти оптимальный баланс.
-
На панели управления Cloudflare перейдите к разделу Аналитика страницу.
Перейдите в Аналитика ↗ -
Выберите События на вкладке.
-
Фильтр по Действие равно Block и Сервис равно Ограничение скорости запросов.
-
Проверьте, поступают ли заблокированные запросы от легитимных клиентов или это вредоносный трафик.
-
Если ограничению скорости подвергаются легитимные клиенты, отредактируйте соответствующее правило ограничения скорости, увеличив порог запросов или расширив временной период для этого правила.
-
Если вредоносный трафик всё же проходит, снизьте порог правила или сократите временной период.
Настройте уведомления о всплесках событий безопасности
Cloudflare Notifications могут уведомлять вас, когда объём событий безопасности превышает пороговое значение, что может указывать на атаку или на неправильно настроенное правило.
-
На панели управления Cloudflare перейдите к разделу Уведомления страницу.
Перейдите в Уведомления ↗ -
Выберите Add.
-
Фильтр по WAF и выберите Оповещение Security Events.
-
Укажите имя уведомления и способ доставки (email, webhook или PagerDuty).
-
Затем настройте домены, для которых вы хотите получать уведомления. Также можно фильтровать события по конкретному действию (например, Block или Пропустить).
-
Выберите Создание.
Полный список доступных типов уведомлений см. в Доступные уведомления.
Дополнительные материалы
Безопасность приложений
- Custom rules : создание правил на основе атрибутов запроса для блокировки, проверки или пропуска отдельных функций безопасности для целевого трафика
- Правила ограничения скорости : задание пороговых значений частоты запросов на клиента и выбор действий при превышении
- Рекомендации по ограничению скорости запросов : типовые схемы ограничения частоты запросов для защиты от credential stuffing, API и GraphQL
- Примеры правил ограничения скорости : примеры правил с выражениями для страниц входа, ключей API и ограничения на основе сложности запроса
- Совместимость функций безопасности : как взаимодействуют пользовательские правила, правила ограничения частоты запросов, Super Bot Fight Mode и Managed Rules
- Обнаружение утечек учётных данных : обнаружение запросов с учётными данными из известных утечек
- Security Events : просмотр совпавших запросов и действий правил
Боты
- Bot Fight Mode : автоматическая проверка запросов, соответствующих известным шаблонам ботов (план Free)
- Super Bot Fight Mode : детальное управление защитой от ботов, включая добавление проверенных ботов в список разрешённых (Pro, Business, Enterprise)
- Bot Management : оценка ботов, идентификаторы обнаружения и шаблоны пользовательских правил (Enterprise)
- Переменные Bot Management : поля, доступные в выражениях правил для обнаружения ботов (Enterprise)
SSL/TLS
- Начало работы с SSL/TLS : периферийные сертификаты, режимы шифрования и принудительное использование HTTPS
- Always Use HTTPS : перенаправление всех запросов HTTP на HTTPS
- Minimum TLS Version : отклонение соединений, использующих устаревшие протоколы TLS
API Shield (Enterprise)
- Обзор API Shield : обнаружение, проверка схемы, проверка JWT и анализ последовательностей для безопасности API
- Начало работы с API Shield : процесс подключения от идентификаторов сессии до проверки схемы
- API Discovery : автоматическое обнаружение конечных точек на основе анализа трафика
- Schema validation : проверка входящих запросов по вашей схеме OpenAPI
- Проверка JWT : проверка JSON Web Tokens на периферийной сети
- Sequence Analytics : отслеживание и анализ последовательностей запросов API
- Volumetric Abuse Detection : адаптивное ограничение частоты запросов для каждой сессии и конечной точки
- Состояние аутентификации : помогает пользователям выявлять ошибки настройки аутентификации API и уведомляет об их наличии
- Обнаружение уязвимостей BOLA : выявление конечных точек, уязвимых к атакам Broken Object Level Authorization (BOLA)
- Vulnerability Scanner : проверка конечных точек API на распространённые уязвимости