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

Защита от вредоносных ботов с сохранением легитимного трафика (Free, Pro и Business)

Правильный способ защиты от вредоносного бот-трафика зависит от паттернов трафика на вашем сайте и от вашего тарифа. В этом руководстве рассматривается многоуровневый подход с использованием Cloudflare Bots, Cloudflare Application Security (также известного как Web Application Firewall, или WAF), а также Turnstile, от базовой защиты до целевых пользовательских правил. Основной процесс использует функции планов Free, Pro и Business, с примечаниями о возможностях Enterprise.

Просмотрите бот-трафик

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

Проверьте аналитику по ботам

Аналитика ботов показывают, какая доля вашего трафика автоматизирована, на какие страницы нацелены боты и как Cloudflare оценивает каждый запрос.

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

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

Ознакомьтесь со следующим:

Изучите категории ботов

Cloudflare разделяет бот-трафик на категории на основе Bot Score и статуса подтверждения:

Блокировка автоматизированного трафика с помощью Bot Fight Mode

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

Что делает Bot Fight Mode

Bot Fight Mode включён в тарифы Free. При включении он:

Подробнее см. в Особенности Bot Fight Mode.

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

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

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

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

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

Включите Super Bot Fight Mode (тарифы Pro, Business и Enterprise)

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

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

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

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

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

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

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

Turnstile и Application Security правила ограничения частоты запросов защищают конечные точки форм разными способами и наиболее эффективны при совместном использовании.

Turnstile против Rate Limiting

Turnstile проверяет подозрительных ботов до того, как они отправят форму (входа, регистрации, обратной связи или оформления заказа), не показывая посетителям CAPTCHA. Его можно встроить в любой сайт без пропуска трафика через Cloudflare. Используйте Turnstile, когда нужно защитить формы от автоматических отправок.

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

Вместе они обеспечивают наиболее полную защиту. Turnstile выдаёт проверку автоматизированным отправкам на уровне формы. Ограничение частоты запросов перехватывает высокообъёмные атаки, которые обходят форму или вовсе с ней не взаимодействуют, например прямые POST запросов к конечной точке, которые обходят виджет на стороне клиента.

Добавьте Turnstile в форму

Подключение Turnstile состоит из трёх шагов: создайте виджет, добавьте клиентский код и проверьте токен на сервере.

1. Создайте виджет Turnstile

Turnstile настраивается на уровне аккаунта.

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

    Перейдите в Turnstile ↗
  2. Выберите Добавить виджет.

  3. Заполните обязательные поля:

    • Имя виджета: понятное название виджета.
    • Управление именами хостов: домены, на которых будет использоваться виджет.
    • Режим виджета: выберите Managed, Non-Interactive или Invisible.
  4. (Необязательно) Настройте Поддержка pre-clearance для одностраничных приложений.

  5. Выберите Создание, чтобы сохранить виджет.

  6. Скопируйте sitekey и секретный ключ, а секретный ключ храните в защищённом месте.

Для следующих шагов вам понадобятся оба ключа: sitekey и secret key.

2. Добавьте клиентский фрагмент кода

Добавьте скрипт и контейнер виджета Turnstile в HTML вашей формы:

<script
	src="https://challenges.cloudflare.com/turnstile/v0/api.js"
	async
	defer
></script>

<form action="/submit" method="POST">
	<!-- Your existing form fields -->
	<div class="cf-turnstile" data-sitekey="<YOUR_SITE_KEY>"></div>
	<button type="submit">Submit</button>
</form>

Замените <YOUR_SITE_KEY> на sitekey из предыдущего шага. Виджет отображается внутри div и создаёт токен, когда посетитель проходит проверку.

3. Проверьте токен на вашем сервере

Перед обработкой отправки формы отправьте токен в конечную точку Turnstile siteverify, чтобы подтвердить, что посетитель прошёл проверку:

curl https://challenges.cloudflare.com/turnstile/v0/siteverify \
  --header "Content-Type: application/json" \
  --data '{
  "secret": "<YOUR_SECRET_KEY>",
  "response": "<TURNSTILE_RESPONSE_TOKEN>"
}'

Замените <YOUR_SECRET_KEY> на секретный ключ и <TURNSTILE_RESPONSE_TOKEN> на cf-turnstile-response значение из отправленной формы. Конечная точка возвращает объект JSON с success поле. Обрабатывайте отправку формы только в том случае, если success это true.

Полные сведения об интеграции см. в Начало работы с Turnstile.

Ограничивайте количество запросов к конечным точкам форм с помощью ограничения частоты запросов

Для эндпоинтов входа многоуровневый подход к ограничению частоты запросов хорошо работает вместе с Turnstile. Следующий пример из Рекомендации по ограничению скорости запросов показывает два правила, которые ужесточают реакцию в зависимости от количества неудачных попыток. Скорректируйте пороговые значения с учётом характера трафика вашего сайта.

Правило короткого окна: Отправляйте проверку IP-адресу, который отправляет слишком много неудачных запросов на вход за короткий промежуток времени.

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

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

  3. Введите понятное название в Название правила.

  4. В разделе Если входящие запросы соответствуют, выберите Edit expression и введите: http.request.uri.path eq "/login" and http.request.method eq "POST"

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

  6. Включить Использование пользовательского выражения для подсчёта и введите: http.request.uri.path eq "/login" and http.request.method eq "POST" and http.response.code in {401 403}

  7. В разделе Когда скорость превышает, введите 4 запросов за 1 minute.

  8. В разделе Затем выберите действие, выберите Managed Challenge.

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

Правило с длинным окном: Блокируйте IP-адрес, который накапливает неудачные попытки входа за более длительный период.

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

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

  3. Введите понятное название в Название правила.

  4. В разделе Если входящие запросы соответствуют, выберите Edit expression и введите: http.request.uri.path eq "/login" and http.request.method eq "POST"

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

  6. Включить Использование пользовательского выражения для подсчёта и введите: http.request.uri.path eq "/login" and http.request.method eq "POST" and http.response.code in {401 403}

  7. В разделе Когда скорость превышает, введите 20 запросов за 1 hour.

  8. В разделе Затем выберите действие, выберите Block с длительностью 1 day.

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

Этот паттерн использует счётное выражение, которое учитывает только POST запросов, возвращающих коды ошибки аутентификации. У легитимных пользователей, успешно входящих в систему с первой попытки, правило никогда не срабатывает. Проверьте результаты в Security Events чтобы убедиться, что пороговые значения не затрагивают легитимных пользователей.

Полный многоуровневый пример защиты от credential stuffing с тремя правилами см. в Рекомендации по ограничению скорости запросов.

Выявление паттернов ботов с помощью пользовательских правил и ограничения частоты запросов

Application Security пользовательские правила и правила ограничения частоты запросов позволяют нацеливаться на конкретные паттерны трафика, которые не улавливает встроенная защита от ботов. Cloudflare разделяет обнаружение (оценку трафика) и противодействие (действия на основе этих оценок). Вы пишете правила, которые ссылаются на сигналы обнаружения, чтобы определить, какое действие выполнить.

Блокировка запросов с отсутствующими или подозрительными заголовками

Обычные браузеры, как правило, отправляют такие заголовки, как User-Agent, Accept, а также Accept-Language. Многие боты не отправляют эти заголовки или отправляют значения, нехарактерные для браузера. Пользовательское правило, нацеленное на запросы с пустыми или подозрительными заголовками, выявляет ботов, которые обходят обнаружение по показателю.

Прежде чем создавать пользовательские правила, ознакомьтесь со встроенными настройками защиты от ботов в Безопасность > Настройки (фильтр по Ботовый трафик). Эти настройки охватывают типовые сценарии, такие как блокировка AI-краулеров, проверка автоматического трафика и разрешение проверенных ботов, без необходимости писать собственные выражения. Полный список встроенных настроек см. в Проверка вредоносных ботов.

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

Перейдите в раздел custom rules и создайте оба правила:

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

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

Сначала создайте исключение для проверенных ботов:

  1. Введите понятное название в Название правила.
  2. В разделе Когда входящие запросы соответствуют, выберите Edit expression и введите: (cf.client.bot)
  3. В разделе Затем выберите действие, выберите Пропустить из Выберите действие раскрывающемся списке. Затем выберите Все оставшиеся пользовательские правила.
  4. В разделе Расположите на, выберите Первая из Выберите порядок раскрывающемся списке, чтобы это правило выполнялось раньше любых блокирующих правил.
  5. Выберите Развернуть.

Это гарантирует, что проверенные боты (поисковые краулеры, сервисы мониторинга) не попадают под действие ваших пользовательских правил. Если у вас есть внутренние API, партнёрские интеграции или инструменты мониторинга, отправляющие автоматизированный трафик, создайте для их IP-адресов или user-agent дополнительные правила Skip до развёртывания блокирующих правил. Ожидаемый автоматизированный трафик можно проверить в Security Events чтобы определить, что добавить в список разрешений.

Затем создайте блокирующее правило:

  1. Выберите Создать правило.
  2. Введите понятное название в Название правила.
  3. В разделе Когда входящие запросы соответствуют, выберите Edit expression и введите: (http.request.uri.path eq "/login" and http.request.method eq "POST")
  4. В разделе Затем выберите действие, выберите Managed Challenge из Выберите действие в раскрывающемся списке.
  5. В разделе Расположите на, оставьте Выберите порядок раскрывающемся списке со значением Последняя. Это размещает правило после исключения для проверенных ботов.
  6. Выберите Развернуть.
  7. Просмотрите результаты в Security Events. Если правило соответствует только трафику ботов, отредактируйте его и измените действие с Managed Challenge к Block.

Дополнительные параметры пользовательских правил, включая визуальный конструктор полей, описаны в Создание пользовательского правила в панели управления.

Если бот-трафик сосредоточен в странах, где у вас нет реальных пользователей, вы можете сочетать географические фильтры с правилами, описанными выше. Добавьте ip.src.country к выражению, чтобы ограничить действие правила определёнными регионами. Примеры см. в Блокировка трафика по географическому положению.

Защита часто запрашиваемых путей с помощью ограничения скорости запросов

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

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

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

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

  3. Введите понятное название в Название правила.

  4. В разделе Если входящие запросы соответствуют, выберите Edit expression и введите: http.request.uri.path eq "/api/checkout" and http.request.method eq "POST"

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

  6. В разделе Когда скорость превышает, введите 10 запросов за 1 minute.

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

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

  9. Просмотрите результаты в Security Events. Если правило соответствует только трафику ботов, отредактируйте его и измените действие на Block при необходимости.

Дополнительные шаблоны и пороговые значения описаны в Рекомендации по ограничению скорости запросов.

Проверьте и настройте свои правила

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

Проверка Security Events

Security Events показывает запросы, которые обработали или пометили продукты безопасности Cloudflare, включая блокировки, проверки и пометки.

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

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

Просмотрите Sampled logs чтобы просмотреть отдельные запросы. Каждая запись журнала показывает выполненное действие, сработавшее правило, исходный IP-адрес, user agent, путь URI и страну. Доступные разделы панели управления зависят от тарифа. Дополнительные сведения см. в Доступность Security Events с описанием функций вашего тарифа.

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

Для правил с действием Managed Challenge проверьте доля решённых проверок (CSR). Низкий CSR обычно означает, что правило эффективно отфильтровывает автоматический трафик, а не легитимных пользователей.

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

Подробнее об обработке ложных срабатываний см. в Ложные срабатывания.

Настройте свои правила

После анализа Security Events скорректируйте правила на основе полученных результатов.

Сценарий 1: ваши инструменты мониторинга или сервисы блокируются.

Внутренние инструменты мониторинга, сервисы проверки работоспособности или партнёрские API отображаются в заблокированных событиях. Решение зависит от того, какая функция их блокирует:

Подробнее о настройке действия Skip см. в Настройка правила с действием Skip.

Сценарий 2: вредоносный трафик всё ещё проходит.

Активность ботов отображается в Security Events, которые не отлавливают текущие правила. Боты, остающиеся в пределах лимитов частоты запросов или обходящие правила с одним сигналом, требуют комбинирования нескольких сигналов. Например, чтобы выдать проверку POST запросов к /login не от проверенных ботов:

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

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

  3. Введите понятное название.

  4. В разделе Когда входящие запросы соответствуют, выберите Edit expression и введите:

    (http.request.uri.path eq "/login" and http.request.method eq "POST" and not cf.client.bot)
  5. В разделе Затем выберите действие, выберите Managed Challenge.

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

  7. Просмотрите результаты в Security Events. Если правило срабатывает только на трафик ботов, измените действие на Block.

Дополнительные поля выражений и примеры см. в Варианты использования Custom rules.

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

Боты

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

Turnstile