Документация Запланировать пилот

Начало работы

1. Включите обнаружение

На плане 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
}

2. Проверьте поведение обнаружения утёкших учётных данных

Используйте Security Analytics и HTTP-логи, чтобы убедиться, что Cloudflare корректно обнаруживает утёкшие учётные данные во входящих запросах.

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

Либо создайте пользовательское правило, аналогичное описанному в следующем шаге, используя Log действие (доступно только клиентам Enterprise). Это правило генерирует события безопасности который позволит вам проверить вашу конфигурацию.

3. Противодействуйте запросам со скомпрометированными учётными данными

Если у вас тарифный план Free, разверните предложенное правило ограничения частоты запросов шаблон, доступный в Безопасность > Правила безопасности.

Когда вы разворачиваете правило с помощью этого шаблона, вы получаете мгновенную защиту от IP-адресов, которые пытаются получить доступ к вашему приложению с утёкшим паролем более пяти раз за 10 секунд. Это правило может замедлить атаки, блокируя их на определённый период времени. Также можно создать пользовательское правило.

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

Поле Оператор Значение
User and Password Leaked равно True

Если вы используете Expression Editor, введите следующее выражение:

(cf.waf.credential_check.username_and_password_leaked)

Действие правила: Managed Challenge

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

Комбинируйте с другими полями языка Rules

Предыдущее выражение можно объединить с другими поля и функции языка Rules. Это позволяет настроить область действия правила или объединить leaked credential checking с другими функциями безопасности. Например:

Дополнительные примеры см. в Пример правил противодействия.

Обработка обнаруженных скомпрометированных учётных данных на исходном сервере

Кроме того, вы можете обрабатывать утёкшие учётные данные, обнаруженные Cloudflare, на своём origin server:

  1. Включение Добавление заголовка Leaked Credentials Checks управляемое преобразование.

  2. Для запросов, полученных на вашем origin-сервере и содержащих Exposed-Credential-Check заголовок, вы можете перенаправлять конечных пользователей на страницу сброса пароля при обнаружении ранее скомпрометированных учетных данных.

4. (Необязательно) Настройте пользовательское место обнаружения

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

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

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

  3. В разделе Обнаружение утёкших учётных данных > Конфигурации, выберите значок редактирования.

  4. Выберите Добавьте пользовательское место для имени пользователя и пароля.

  5. В Расположение имени пользователя и Расположение пароля (необязательно) введите выражения для получения имени пользователя и пароля из HTTP-запроса. Например, можно использовать следующие выражения:

    • Расположение имени пользователя:
      lookup_json_string(http.request.body.raw, "user")
    • Расположение пароля:
      lookup_json_string(http.request.body.raw, "secret")

    Эта конфигурация сканирует входящие HTTP-запросы с телом JSON, структура которого похожа на следующую:

    {"user": "<USERNAME>", "secret": "<PASSWORD>"}

    См. lookup_json_string() документацию, чтобы узнать больше об этой функции.

  6. Выберите Save.

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

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

Хотя бы одно из следующих права доступа токена требуется:
  • Zone WAF Write
  • Account WAF Write
Создание пользовательского расположения обнаружения для зоны.
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/leaked-credential-checks/detections" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"username": "lookup_json_string(http.request.body.raw, \"user\")",
		"password": "lookup_json_string(http.request.body.raw, \"secret\")"
	}'

Эта пара выражений поиска (для имени пользователя и пароля) сканирует входящие HTTP-запросы с телом JSON, структура которого похожа на следующую:

{"user": "<USERNAME>", "secret": "<PASSWORD>"}

См. lookup_json_string() документацию, чтобы узнать больше об этой функции.

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

resource "cloudflare_leaked_credential_check_rule" "custom_location_example" {
	zone_id = var.cloudflare_zone_id
	username = "lookup_json_string(http.request.body.raw, \"user\")"
	password = "lookup_json_string(http.request.body.raw, \"secret\")"
}

См. lookup_json_string() документацию, чтобы узнать больше об этой функции.

В пользовательских местах обнаружения достаточно указать выражение только для имени пользователя.

Дополнительные примеры пользовательских мест обнаружения для разных типов запросов см. в Пользовательские места обнаружения.


Проверьте свою конфигурацию

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

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

Тестовые учётные данные для пользователей на плане Free (также работают на платных планах):

Тестовые учётные данные для пользователей на платных планах (не работают на плане Free):

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

Запросите бесплатный пилот

Запланировать пилот