← Документация WAF / detections / malicious-uploads
Начало работы
1. Включите обнаружение
-
В панели управления Cloudflare перейдите в раздел Security Настройки страницу.
Перейдите в Настройки ↗ -
(Необязательно) Отфильтруйте по Инструменты обнаружения.
-
Включите Обнаружение вредоносных загрузок.
Используйте 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. Это позволяет настроить область действия правила или объединить content scanning с другими функциями безопасности. Например:
-
Следующее выражение соответствует запросам со вредоносными объектами содержимого, загруженными на определённую конечную точку:
Поле Оператор Значение Логика Наличие вредоносного объекта содержимого равно True И URI Path contains upload.phpВыражение при использовании редактора:
(cf.waf.content_scan.has_malicious_obj and http.request.uri.path contains "upload.php") -
Следующее выражение соответствует запросам от ботов, загружающих объекты содержимого:
Поле Оператор Значение Логика Наличие объекта содержимого равно True И Bot Score меньше 10Выражение при использовании редактора:
(cf.waf.content_scan.has_obj and cf.bot_management.score lt 10)
Дополнительные примеры см. в Примеры правил.
4. (Необязательно) Настройте пользовательское выражение сканирования
Чтобы проверять загруженный контент способом, не предусмотренным конфигурацией по умолчанию, добавьте пользовательское выражение сканирования.
-
В панели управления Cloudflare перейдите в раздел Security Настройки страницу.
Перейдите в Настройки ↗ -
(Необязательно) Отфильтруйте по Инструменты обнаружения.
-
В разделе Обнаружение вредоносных загрузок > Конфигурации, выберите значок редактирования.
-
Выберите Добавьте место содержимого.
-
В Расположение содержимого, введите собственное выражение сканирования. Например:
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\")"
}Подробнее см. в Пользовательские выражения сканирования.