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

Сохранение расшифрованных совпадающих полезных нагрузок в журналах

Зашифрованные данные совпадающего запроса можно включить в Logpush задания, добавив Общее > Метаданные поле из набора данных Firewall Events в свою задачу.

Полезные данные в зашифрованном виде доступны в encrypted_matched_data свойство из Metadata поле.

Однако вам может потребоваться расшифровать совпавшую полезную нагрузку перед сохранением журналов в Система SIEM по вашему выбору. Cloudflare предоставляет образец проекта Worker ↗ на GitHub, который выполняет следующее:

  1. Выступает в роли S3-совместимого хранилища для получения журналов от Logpush. Эти журналы будут содержать зашифрованные данные совпавшей полезной нагрузки.
  2. Расшифровывает данные совпавшей полезной нагрузки с помощью вашего закрытого ключа.
  3. Отправляет журналы в конечную систему хранения журналов с расшифрованными данными полезной нагрузки.

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

См. в проекте Worker README ↗ подробнее о настройке и развёртывании этого проекта Worker.

Структура encrypted_matched_data свойство в Logpush

Информация о совпавшей полезной нагрузке включает конкретную строку, которая активировала правило, а также фрагмент текста непосредственно до и после этой строки.

После расшифровки его значения encrypted_matched_data свойство объекта Metadata поле в Logpush имеет структуру, похожую на следующую:

{
	// for fields with only one match (such as URI or user agent fields):
	"<match_location>": {
		"before": "<text_before_match>",
		"content": "<matched_text>",
		"after": "<text_after_match>"
	},
	// for fields with possible multiple matches (such as form, header, or body fields):
	"<match_location>": [
		{
			"before": "<text_before_match_1>",
			"content": "<matched_text_1>",
			"after": "<text_after_match_1>"
		},
		{
			"before": "<text_before_match_2>",
			"content": "<matched_text_2>",
			"after": "<text_after_match_2>"
		}
	]
}

before и after свойства являются необязательными (перед совпадающим текстом или после него может не быть содержимого) и содержат не более 15 байт содержимого до и после совпадения.

Ниже приведено несколько примеров совпадений полезной нагрузки:

Совпадение URI
{
	"http.request.uri": {
		"before": "/admin",
		"content": "/.git/",
		"after": "config"
	}
}
Совпадение по значению заголовка
{
	"http.request.headers.values[3]": [
		{ "content": "phar://", "after": "example" }
	]
}
Совпадение по содержимому необработанного тела запроса
{
	"http.request.body.raw": {
		"before": "NY>",
		"content": "<!ENTITY xxe SYSTEM \"file:///dev/random\">] > ",
		"after": "<foo>&xxe;</foo>"
	}
}

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

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