← Документация WAF / detections / malicious-uploads
Начало работы
1. Включите обнаружение
-
В панели управления Cloudflare перейдите в раздел Security Settings .
Перейдите в Settings ↗ -
(Необязательно) Отфильтруйте по Инструменты обнаружения.
-
Включите Обнаружение вредоносных загрузок.
Используйте POST запрос, аналогичный следующему:
Необходимые разрешения API-токена
Хотя бы одно из следующих разрешения токена обязательно:Zone WAF WriteAccount WAF Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/content-upload-scan/enable" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Используйте cloudflare_content_scanning, чтобы включить сканирование контента для зоны. Например:
resource "cloudflare_content_scanning" "zone_content_scanning_example" {
zone_id = var.cloudflare_zone_id
enabled = true
}2. Проверьте поведение сканирования содержимого
Используйте Security Analytics и HTTP-логи, чтобы убедиться, что вредоносные объекты содержимого обнаруживаются корректно.
Вы можете использовать антивирусный тестовый файл EICAR ↗ для проверки сканирования содержимого (выберите формат ZIP).
Либо создайте пользовательское правило, как описано в следующем шаге, используя Log вместо блокирующего действия вроде Block. Это правило будет генерировать события безопасности который позволит вам проверить вашу конфигурацию.
3. Создайте пользовательское правило
Создание пользовательского правила которое блокирует обнаруженные вредоносные объекты содержимого, загружаемые в ваше приложение.
Например, создайте пользовательское правило с Block (действие) и следующее выражение:
| Поле | Оператор | Значение |
|---|---|---|
| Содержит вредоносный объект содержимого | равно | True |
Если вы используете Expression Editor, введите следующее выражение:
(cf.waf.content_scan.has_malicious_obj)Действие правила: Block
Это правило будет соответствовать запросам, в которых Cloudflare обнаруживает подозрительный или вредоносный объект содержимого. Список полей, предоставляемых сканированием содержимого WAF, см. в Поля сканирования содержимого.
Необязательно: комбинирование с другими полями языка Rules
Вы можете комбинировать предыдущее выражение с другими поля и функции языка Rules. Это позволяет настраивать область действия правила или сочетать сканирование контента с другими функциями безопасности. Например:
-
Следующее выражение будет соответствовать запросам с вредоносными объектами содержимого, загружаемыми на конкретный эндпоинт:
Поле Оператор Значение Логика Содержит вредоносный объект содержимого равно True And URI Path contains upload.phpВыражение при использовании редактора:
(cf.waf.content_scan.has_malicious_obj and http.request.uri.path contains "upload.php") -
Следующее выражение будет соответствовать запросам от ботов, загружающих объекты контента:
Поле Оператор Значение Логика Has content object равно True And Bot Score less than 10Выражение при использовании редактора:
(cf.waf.content_scan.has_obj and cf.bot_management.score lt 10)
Дополнительные примеры см. в Примеры правил.
4. (Необязательно) Настройте пользовательское выражение сканирования
Чтобы проверять загружаемое содержимое способом, не покрытым конфигурацией по умолчанию, добавьте пользовательское выражение сканирования.
-
В панели управления Cloudflare перейдите в раздел Security Settings .
Перейдите в Settings ↗ -
(Необязательно) Отфильтруйте по Инструменты обнаружения.
-
В разделе Обнаружение вредоносных загрузок > Конфигурации, выберите значок редактирования.
-
Выберите Add content location.
-
В Расположение содержимого, введите ваше пользовательское выражение сканирования. Например:
lookup_json_string(http.request.body.raw, "file") -
Выберите Save.
Используйте POST запрос, аналогичный следующему:
Необходимые разрешения API-токена
Хотя бы одно из следующих разрешения токена обязательно:Zone WAF WriteAccount WAF Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/content-upload-scan/payloads" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '[
{
"payload": "lookup_json_string(http.request.body.raw, \"file\")"
}
]'Приведённый выше запрос добавит следующее выражение в текущий список пользовательских выражений сканирования:
lookup_json_string(http.request.body.raw, "file")Используйте cloudflare_content_scanning_expression, чтобы добавить пользовательское выражение сканирования. Например:
resource "cloudflare_content_scanning_expression" "my_custom_scan_expression" {
zone_id = var.cloudflare_zone_id
payload = "lookup_json_string(http.request.body.raw, \"file\")"
}Подробнее см. Пользовательские выражения сканирования.