Разработчик SaaS-сервиса обнаружил, что включение режима Cloudflare Bot Fight Mode для всех доменов в его аккаунте парализовало API-трафик на целый месяц, из-за чего платящие клиенты не могли использовать основные функции продукта.

Проблема проявилась, когда разработчик заметил внезапное замедление роста метрик использования. Новые регистрации продолжались, но количество активных сессий перестало расти. После нескольких недель переписывания кода и отладки выяснилось, что виновником оказался всего один переключатель безопасности: Bot Fight Mode от Cloudflare помечал собственный эндпоинт SaaS-сервиса на AWS Lambda как вредоносного бота и блокировал его.

Как одна настройка сломала целый сервис

Стек разработчика полагался на вызовы типа server-to-server. Внутренняя Lambda-функция регулярно отправляла данные обратно на публичный домен SaaS-сервиса — такая схема типична для современных микросервисных архитектур. Bot Fight Mode оспаривает или блокирует запросы, которые выглядят как автоматизированные скраперы, защищая контентные сайты от сбора данных.

Когда этот режим был включен для всех зон, Cloudflare воспринял исходящий запрос Lambda как еще одного автоматизированного клиента. Запрос так и не достиг приложения, и, поскольку блокировка происходила на уровне edge, инструменты мониторинга SaaS-сервиса не видели ошибок — трафик просто исчезал. Использование CPU в Cloudflare Workers резко возросло, что заставило разработчика заподозрить внешний скрапер, а не собственный бэкенд.

Только после изучения логов Cloudflare он увидел записи о блокировке Bot Fight Mode, которые соответствовали диапазону IP-адресов Lambda. Он отключил эту функцию для затронутых зон, после чего API-трафик возобновился, а метрики использования вернулись в норму.

Почему эта ошибка важна для операторов SaaS

  • Продукты, ориентированные на API, нуждаются в открытых каналах server-to-server. Bot Fight Mode предполагает, что основной трафик — это запросы от браузеров реальных пользователей на получение HTML, изображений или статических ресурсов. SaaS-платформы, предоставляющие API, вебхуки или внутренние обратные вызовы (callbacks), могут быть ограничены или заблокированы без получения видимого кода ошибки на уровне приложения.
  • Глобальные настройки безопасности редко подходят для всех типов нагрузки. Применение единой конфигурации Cloudflare ко всем доменам подразумевает, что каждый сайт имеет одинаковую модель угроз. Контентные сайты, форумы и бэкенды SaaS-сервисов имеют совершенно разные требования к безопасности.
  • «Тихие» сбои съедают выручку. Система оповещения разработчика не сработала, потому что заблокированные запросы так и не достигли приложения. Лишь падение метрик вовлеченности пользователей намекнуло на проблему. Без проактивного анализа логов на уровне edge подобные проблемы могут долго оставаться незамеченными.

Что могут сделать разработчики, чтобы избежать той же участи

  1. Проведите аудит профиля трафика каждой зоны. Перед включением Bot Fight Mode составьте список типов запросов, которые ожидает ваш домен: браузеры пользователей, вызовы API, вебхуки или вызовы внутренних сервисов. Если какие-либо из них критически важны для основной функциональности, рассматривайте зону как «API-first» и минимизируйте настройки защиты от ботов.
  2. Тестируйте изменения в стейджинг-среде. Cloudflare позволяет применять настройки к отдельному поддомену или стейджинг-зоне. Убедитесь, что легитимная автоматизация по-прежнему работает, прежде чем внедрять изменения глобально.
  3. Мониторьте логи на уровне edge как часть вашего стека наблюдаемости (observability stack). Передавайте логи брандмауэра и защиты от ботов Cloudflare в SIEM, Loki или любой другой сервис агрегации. Сопоставляйте всплески заблокированных запросов с падениями метрик приложения, чтобы вовремя обнаружить «тихие» сбои.
  4. Сделайте настройки безопасности обратимыми. Имейте задокументированный план отката. Если новое правило вызывает непредвиденное поведение, сначала отключите его и подтвердите результат, прежде чем тратить время на написание обходных путей в коде.
  5. Задавайте правильные вопросы. Вместо вопроса «как мне остановить скраперы?» спрашивайте «решает ли этот инструмент конкретную проблему, с которой я столкнулся?». Функция безопасности, блокирующая скраперы, может оказаться неподходящим решением для SaaS-сервиса, которому необходим открытый доступ к API.

Более широкий взгляд

Bot Fight Mode остается ценным инструментом для сайтов, которым нужно защитить статический контент от агрессивных краулеров. Его недостаток — неспособность отличить вредоносный скрапер от легитимного автоматизированного клиента, использующего те же HTTP-паттерны.

Итог

Когда вы управляете несколькими доменами в одном аккаунте Cloudflare, относитесь к каждому из них как к отдельной зоне безопасности. Включайте Bot Fight Mode только там, где трафик генерируется исключительно людьми; для SaaS-нагрузок с интенсивным использованием API держите эту настройку выключенной или настройте её более тонко с помощью пользовательских правил брандмауэра (firewall rules). Один клик может заглушить легитимный трафик так же эффективно, как и остановить скрапер.