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

Защита от захвата аккаунтов (Free, Pro и Business)

Если на вашем сайте есть страницы входа, нужно решить, как проверять, что посетитель является человеком, насколько жёстко ограничивать неудачные попытки входа и какие паттерны запросов блокировать. Это руководство охватывает пять этапов: включение HTTPS, включение защиты от ботов, добавление Turnstile к форме входа, создайте Application Security правила ограничения частоты запросов и пользовательские правила на подозрительные паттерны и отслеживайте текущие атаки с помощью SSL/TLS транспортная безопасность и Решения Cloudflare для защиты от ботов. Основной процесс описывает функции, доступные на тарифах Free, Pro и Business. Функции Enterprise, такие как пользовательские места обнаружения скомпрометированных учетных данных и пользовательские правила Bot Management, приведены в виде отдельных врезок.

Требуйте HTTPS для защиты учетных данных при передаче

Учётные данные, переданные по обычному HTTP, видны любому, кто находится на сетевом пути между посетителем и вашим исходным сервером. Cloudflare SSL/TLS предоставляет два параметра, обеспечивающих принудительное использование HTTPS-соединений: Always Use HTTPS и Строгая транспортная безопасность HTTP (HSTS). Для дополнительного контроля над тем, какие стандарты шифрования принимает ваш домен, см. Наборы шифров.

Включите Always Use HTTPS

Always Use HTTPS перенаправляет все запросы посетителей с http к https для всех поддоменов и хостов.

Чтобы включить Always Use HTTPS в дашборде:

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

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

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

  4. Включите Always Use HTTPS.

Чтобы включить или отключить Always Use HTTPS с помощью API:

  1. Убедитесь, что ваш режим шифрования SSL/TLS не является имеет значение Off.
  2. Отправьте PATCH запрос с always_use_https в качестве имени настройки в пути URI, а также value параметр, установленный в нужное вам значение ("on" или "off").

Включите защиту от ботов

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

Bot Fight Mode (Free)

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

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

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

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

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

Super Bot Fight Mode (Pro, Business и Enterprise)

Super Bot Fight Mode определяет трафик, соответствующий паттернам известных ботов, может проверять или блокировать ботов, а также защищает статические ресурсы. Для каждой группы ботов настраивается отдельное действие: Definitely automated, Likely automated, а также Проверенные боты. Вы также можете настройка исключений с помощью Application Security пользовательские правила на действие Skip.

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

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

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

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

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

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

Custom rules выполняются до Super Bot Fight Mode. Чтобы создать исключения для определённых путей или трафика, создайте пользовательское правило с Пропустить действие. Действие Skip позволяет запросу миновать этап Super Bot Fight Mode без прерывания запроса, так что он продолжает проходить через остальную часть стека безопасности.

Защита формы входа с помощью Turnstile и ограничения скорости запросов

Два инструмента защищают эндпоинты входа от автоматизированных злоупотреблений, и каждый закрывает свой вектор атаки:

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавьте скрипт и контейнер виджета Turnstile в форму входа. Замените <YOUR-SITE-KEY> на sitekey из предыдущего шага.

<form id="login-form">
	<input type="text" id="username" placeholder="Username" required />
	<input type="password" id="password" placeholder="Password" autocomplete="off" required />
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
	<button type="submit">Log in</button>
</form>

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

Виджет отображается внутри div и создаёт токен, когда посетитель проходит проверку. При отправке формы cf-turnstile-response токен включён в данные формы.

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

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

server.js
const SECRET_KEY = "<YOUR-SECRET-KEY>";

async function validateTurnstile(token, remoteip) {
	try {
		const response = await fetch(
			"https://challenges.cloudflare.com/turnstile/v0/siteverify",
			{
				method: "POST",
				headers: {
					"Content-Type": "application/json",
				},
				body: JSON.stringify({
					secret: SECRET_KEY,
					response: token,
					remoteip: remoteip,
				}),
			},
		);

		const result = await response.json();
		return result;
	} catch (error) {
		console.error("Turnstile validation error:", error);
		return { success: false, "error-codes": ["internal-error"] };
	}
}

Замените "<YOUR-SECRET-KEY>" на секретный ключ Turnstile. Конечная точка возвращает объект JSON с success поле. Обрабатывайте отправку формы только в том случае, если success это true.

Для дополнительного выявления мошенничества Turnstile поддерживает Ephemeral IDs предоставляющих уникальный временный идентификатор для каждого сеанса посетителя без хранения персональных данных.

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

Проверьте реализацию

Turnstile предоставляет тестовые site key, которые возвращают предсказуемые результаты без обращения к Siteverify API.

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

Ограничьте скорость запросов к конечной точке входа

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

В следующем примере создаётся правило ограничения частоты запросов, которое выдаёт Managed Challenge после более чем пяти POST-запросов к пути входа с одного и того же IP-адреса в течение одной минуты. Начните с Managed Challenge, а не с Block. Managed Challenge позволяет легитимным пользователям, которые достигли лимита, пройти проверку и продолжить работу, при этом блокируя автоматизированный трафик, который не может её пройти. После того как вы понаблюдаете за Security Events чтобы убедиться, что правило не даёт ложных срабатываний, переключитесь на действие Block. Настройте путь (/login), пороговое значение и период для вашего сайта.

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

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

  3. Введите название правила (например, «Rate limit для эндпоинта входа»).

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

    Замените `example.com` на ваш домен, а `/login` на путь конечной точки для входа.
  5. В разделе С теми же характеристиками, убедитесь, что IP выбрано. На тарифе Free по умолчанию установлено значение IP.

  6. В разделе Когда скорость превышает, введите 5 для Запросы и выберите значение для Период. На тарифе Free выберите 10 секунд. Тарифы Pro и выше предлагают дополнительные периоды. Доступные значения по тарифам см. в Параметры ограничения скорости.

  7. В разделе Затем выберите действие, выберите действие в раскрывающемся списке Выберите действие раскрывающемся списке. На тарифе Free выберите Block. На тарифе Pro и выше Managed Challenge рекомендуется, поскольку позволяет легитимным пользователям, достигшим лимита, пройти дальше, выполнив challenge.

  8. В разделе Для продолжительности, выберите длительность действия. На тарифе Free выберите 10 секунд. Тарифы Pro и выше предлагают более длительные периоды действия. Указывает, как долго действует ограничение после срабатывания rate limit.

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

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

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

Добавьте правила Application Security для подозрительных паттернов входа

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

Включение обнаружения утёкших учётных данных

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

cf.waf.credential_check.password_leaked поле доступно на всех тарифах.

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

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

    Перейдите в Настройки ↗
  2. (Необязательно) Отфильтруйте по Инструменты обнаружения.

  3. Включите Обнаружение утёкших учётных данных.

Используйте POST запрос, подобный следующему:

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
  • Zone WAF Write
  • Account WAF Write
Обновить статус Leaked Credential Checks для зоны.
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/leaked-credential-checks" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"enabled": true
	}'

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

resource "cloudflare_leaked_credential_check" "zone_lcc_example" {
	zone_id = var.cloudflare_zone_id
	enabled = true
}

После включения обнаружения ваш исходный сервер может получать статус утечки учётных данных через Exposed-Credential-Check заголовка запроса. Чтобы передавать этот заголовок, включите параметр Добавление заголовка Leaked Credentials Checks managed transform. После этого ваш источник может инициировать сброс пароля для затронутых пользователей.

Создание правила пропуска для легитимного автоматизированного трафика

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

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

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

  3. Введите название правила (например, «Skip правил входа для известных клиентов»).

  4. Выберите Edit expression и введите выражение, соответствующее вашему легитимному автоматическому трафику. Например, чтобы пропустить проверенных ботов и IP-адрес определённого сервиса мониторинга:

    (cf.client.bot) or (ip.src eq 198.51.100.1)

    Замените 198.51.100.1 на IP-адрес вашей службы мониторинга. Добавьте дополнительные условия для других известных клиентов.

  5. В разделе Затем выберите действие, выберите Пропустить. В разделе WAF components to skip, выберите компоненты, которые применяются к вашим правилам защиты входа (например, Все оставшиеся пользовательские правила и Все правила ограничения скорости).

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

  7. В разделе Расположите на, разместите правило выше правил блокировки и проверки. Пользовательские правила выполняются по порядку, поэтому правило пропуска должно идти первым.

Подробнее о действии Skip и доступных параметрах пропуска см. в Пропустить действие.

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

Инструменты для credential stuffing часто отправляют запросы без стандартных заголовков браузера или с известными вредоносными значениями User-Agent. Создайте пользовательское правило, которое применяет Managed Challenge к POST-запросам на путь входа, если User-Agent пуст. Это правило нацелено на прямые POST-запросы от таких инструментов, как curl, python-requests, или undici не устанавливающих заголовок User-Agent.

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

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

  3. Введите название правила (например, «Challenge пустого UA при входе»).

  4. Выберите Edit expression и введите:

    (http.request.uri.path eq "/login" and http.request.method eq "POST" and len(http.user_agent) eq 0)

    Замените /login на путь конечной точки входа.

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

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

Создание правила ограничения частоты запросов с обнаружением утечки учётных данных

Сочетайте ограничение частоты запросов с обнаружением скомпрометированных учётных данных, чтобы ограничивать попытки входа с использованием известных скомпрометированных паролей. Это правило применяет Managed Challenge, если один и тот же IP-адрес отправляет более трёх запросов со скомпрометированными паролями за одну минуту.

  1. На Правила безопасности странице выберите Создать правило и выберите Правила ограничения скорости.

    Перейдите в Правила безопасности ↗
  2. Введите название правила (например, «Rate limit для утекших учетных данных»).

  3. В разделе Когда входящие запросы соответствуют, введите следующее выражение:

    http.request.uri.path eq "/login" and http.request.method eq "POST" and cf.waf.credential_check.password_leaked

    Замените /login на путь конечной точки входа.

  4. В разделе С теми же характеристиками, убедитесь, что IP выбрано. На тарифе Free по умолчанию установлено значение IP.

  5. В разделе Когда скорость превышает, введите 3 для Запросы и выберите значение для Период. На тарифе Free выберите 10 секунд.

  6. В разделе Затем выберите действие, выберите действие. На тарифе Free выберите Block. На тарифе Pro и выше Managed Challenge рекомендуется.

  7. В разделе Для продолжительности, выберите длительность действия. На тарифе Free выберите 10 секунд.

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

Отслеживайте текущие попытки взлома

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

Просмотрите Security Events

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

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

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

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

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

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

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

Настройте Оповещение Security Events уведомление, позволяющее получать оповещения при резком увеличении числа событий безопасности и заранее узнавать о начале новой волны атак. Такое уведомление относится к типу WAF категория из Уведомления страницу. Инструкции по настройке см. в Создать уведомление. Клиенты с тарифом Enterprise могут использовать Advanced Security Events Alert для более точной фильтрации.

Просмотрите шаблоны бот-трафика (Pro и выше)

Аналитика бот-трафика показывает распределение Bot Score на вашей конечной точке входа с течением времени. Внезапный всплеск трафика с низким Bot Score (значения 1-29) на пути входа является ранним признаком кампании credential stuffing.

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

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

  2. Просмотрите распределение трафика по указанным выше группам Bot Score.

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

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

Cloudflare Bots

Turnstile

SSL/TLS