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

Включите Splunk

HTTP Event Collector (HEC) ↗ это надежный способ получения данных от Splunk Enterprise или Splunk Cloud Platform. Cloudflare Logpush поддерживает отправку журналов напрямую в Splunk HEC через панель управления Cloudflare или через API.

Управление через панель управления Cloudflare

  1. На панели управления Cloudflare перейдите к разделу Logpush на уровне аккаунта или домена (также называемого зоной).

    Для аккаунта: Перейдите в Logpush ↗

    Для домена (также называемого зоной): Перейдите в Logpush ↗

  2. В зависимости от выбора вам доступны наборы данных уровня аккаунта и наборы данных, привязанные к зоне, соответственно.

  3. Выберите Создание задания Logpush.

  1. В Выберите пункт назначения, выберите Splunk.

  2. Введите или выберите следующую информацию о получателе:

    • Splunk HEC URL
    • ID канала - Это случайный GUID, который можно сгенерировать с помощью guidgenerator.com ↗.
    • Auth Token - Токен Event Collector с префиксом в виде слова Splunk. Например: Splunk 1234EXAMPLEKEY.
    • Тип источника - Например, cloudflare:json. Если вы используете Cloudflare App for Splunk ↗, см. соответствующий source type для нужных наборов данных в разделе Подробности разделе. Например, для логов запросов Zero Trust Access тип источника cloudflare:access.
    • Использование параметра insecure skip verify (не рекомендуется).

Когда вы закончите вводить данные получателя, выберите Продолжение.

  1. Выберите набор данных для отправки в хранилище.

  2. На следующем шаге настройте задание Logpush:

    • Введите Название задания.
    • В разделе Если журналы соответствуют, вы можете выбрать, какие события включить в журналы или исключить из них. См. Фильтры с дополнительной информацией. Эта опция доступна не для всех наборов данных.
    • В Отправьте следующие поля, вы можете либо отправлять в хранилище назначения все журналы, либо выбирать, какие журналы отправлять.
  3. В Advanced Options, вы можете:

    • Выберите формат полей отметки времени в своих журналах (RFC3339 (по умолчанию), Unix, или UnixNano).
    • Выберите частота сэмплирования для ваших журналов или отправлять случайно выбранный процент журналов.
    • Включите скрытие данных для CVE-2021-44228. Эта опция заменит каждое вхождение ${ с x{.
  4. Выберите Отправить после того как настройка задания Logpush завершена.

Управление через API

Чтобы настроить задание Logpush для Splunk:

  1. Создайте задание, указав соответствующий URL конечной точки и параметры аутентификации.
  2. Включите задание, чтобы оно начало отправлять журналы.

Убедитесь Log Share разрешения включены, прежде чем пытаться читать или настраивать задание Logpush. Дополнительные сведения см. в Раздел Roles.

1. Создайте задание

Чтобы создать задание, выполните POST запрос к конечной точке заданий Logpush со следующими полями:

"splunk://<SPLUNK_ENDPOINT_URL>?channel=<SPLUNK_CHANNEL_ID>&insecure-skip-verify=<INSECURE_SKIP_VERIFY>&sourcetype=<SOURCE_TYPE>&header_Authorization=<SPLUNK_AUTH_TOKEN>"

Пример запроса с использованием cURL:

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

Хотя бы одно из следующих права доступа токена требуется:
Создать задание Logpush
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "<DOMAIN_NAME>",
		"destination_conf": "splunk://<SPLUNK_ENDPOINT_URL>?channel=<SPLUNK_CHANNEL_ID>&insecure-skip-verify=<INSECURE_SKIP_VERIFY>&sourcetype=<SOURCE_TYPE>&header_Authorization=<SPLUNK_AUTH_TOKEN>",
		"output_options": {
				"field_names": [
						"ClientIP",
						"ClientRequestHost",
						"ClientRequestMethod",
						"ClientRequestURI",
						"EdgeEndTimestamp",
						"EdgeResponseBytes",
						"EdgeResponseStatus",
						"EdgeStartTimestamp",
						"RayID"
				],
				"timestamp_format": "rfc3339"
		},
		"dataset": "http_requests",
		"enabled": true
	}'

Ответ:

{
  "errors": [],
  "messages": [],
  "result": {
    "id": <JOB_ID>,
    "dataset": "http_requests",
    "kind": "",
    "enabled": true,
    "name": "<DOMAIN_NAME>",
    "output_options": {
      "field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp","EdgeResponseBytes", "EdgeResponseStatus", "EdgeStartTimestamp", "RayID"],
      "timestamp_format": "rfc3339"
    },
    "destination_conf": "splunk://<SPLUNK_ENDPOINT_URL>?channel=<SPLUNK_CHANNEL_ID>&insecure-skip-verify=<INSECURE_SKIP_VERIFY>&sourcetype=<SOURCE_TYPE>&header_Authorization=<SPLUNK_AUTH_TOKEN>",
    "last_complete": null,
    "last_error": null,
    "error_message": null
  },
  "success": true
}

См. Управлять Logpush с помощью cURL чтобы обновить задание (включая включение и отключение).

См. Logpush (FAQ) с информацией по устранению неполадок.

3. Создайте пользовательское правило WAF для конечной точки Splunk HEC (необязательно)

Если имя хоста цели Logpush проксируется через Cloudflare, а у вас включён Cloudflare Web Application Firewall (WAF), запрос Cloudflare к Splunk HTTP Event Collector (HEC) может быть заблокирован или потребовать прохождения проверки. Чтобы этого не произошло, необходимо создать пользовательское правило который позволяет Cloudflare обходить конечную точку HEC.

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

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

  3. Введите понятное название правила (например, Splunk).

  4. В разделе Когда входящие запросы соответствуют, используйте Поле, Оператор, а также Значение и создайте правило. После заполнения каждой строки выберите И чтобы создать следующую строку правил. Значения, которые нужно ввести, см. в таблице ниже:

    Поле Оператор Значение
    Request Method equals POST
    Имя хоста equals Имя хоста конечной точки Splunk. Например: splunk.cf-analytics.com
    URI Path equals /services/collector/raw
    Строка запроса URI contains channel
    AS Num is in 13335, 132892, 202623
    User Agent equals Go-http-client/2.0
  5. После ввода значений, как показано в таблице, в Expression Preview должны появиться значения, добавленные для вашего конкретного правила. В примере ниже используется имя хоста splunk.cf-analytics.com.

    (http.request.method eq "POST" and http.host eq "splunk.cf-analytics.com" and http.request.uri.path eq "/services/collector/raw" and http.request.uri.query contains "channel" and ip.geoip.asnum in {13335 132892 202623} and http.user_agent eq "Go-http-client/2.0")
  6. В разделе Затем > Выберите действие раскрывающемся списке выберите Пропустить.

  7. В разделе WAF components to skip, выберите Все управляемые правила.

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

Теперь WAF должен игнорировать запросы, которые Cloudflare отправляет в Splunk HEC.

Устранение неполадок с получателями Splunk

Проверка ошибок получателя

Если при настройке задания для Splunk вы получаете ошибку проверки, проверьте следующее:

Основные сведения о insecure-skip-verify

insecure-skip-verify параметр, если установлено значение true, устанавливает незащищённое соединение со Splunk. Это эквивалентно использованию -k опцию с curl и является не рекомендуется.

Почему существует этот параметр: Сертификаты, сгенерированные Splunk, или сертификаты сторонних производителей, как правило, должны иметь Общее имя соответствовало доменному имени сервера Splunk. Если они не совпадают (особенно при использовании стандартных сертификатов, которые Splunk генерирует при запуске), отправка не будет выполняться, пока сертификаты не будут исправлены. Этот параметр предназначен для редких случаев, когда у вас нет доступа к сертификатам или возможности их изменить, например для инстансов Splunk Cloud, которые не позволяют менять конфигурацию сервера.

Проверка HEC перед настройкой

Прежде чем создавать задание Logpush, убедитесь, что ваш Splunk HEC работает корректно, опубликовав тестовые события через curl без -k флагом и с insecure-skip-verify=false:

curl "https://<SPLUNK_ENDPOINT_URL>?channel=<SPLUNK_CHANNEL_ID>&insecure-skip-verify=false&sourcetype=<SOURCE_TYPE>" \
--header "Authorization: Splunk <SPLUNK_AUTH_TOKEN>" \
--data '{"BotScore":99,"BotScoreSrc":"Machine Learning","CacheCacheStatus":"miss","CacheResponseBytes":2478}'

Ожидаемый ответ:

{"text":"Success","code":0}

Требования к сетевым портам

Cloudflare ожидает, что сетевой порт HEC настроен на :443 или :8088. Другие порты не поддерживаются.

Интеграция Cloudflare Splunk App

Logpush интегрируется с Cloudflare App for Splunk ↗. Если вы получаете журналы с помощью cloudflare:json типе источника вы можете использовать Cloudflare Splunk App для анализа и визуализации логов.

Подробные инструкции по настройке приведены в Интеграция Splunk Analytics.