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

Dedicated Egress IP for Logpush

Это руководство охватывает Dedicated CDN Egress IPs и настройку Logpush, а также инструкции по тестированию для включения доставки журналов с фиксированным выделенным исходящим IP-адресом.

Предварительные требования

Чтобы использовать Logpush с выделенным исходящим IP-адресом, вам потребуется Smart Shield Advanced с Dedicated CDN Egress IPs (ранее известный как Aegis). Обратите внимание, что пул Dedicated CDN Egress IPs привязан к зоне, а не к аккаунту. Чтобы использовать Logpush с выделенными IP-адресами, трафик нужно направлять на одну зону.

Общий подход заключается в том, что задание Logpush проксирует данные Logpush через зону Cloudflare с включёнными Dedicated CDN Egress IPs и отправляет их нужному получателю. Благодаря этому получателю нужно будет внести в список разрешённых (allowlist) только выделенные исходящие IP-адреса вашей прокси-зоны.

Прежде всего необходимо создать выделенную зону или использовать существующую. Если вы используете существующую зону, учтите, что её исходящий трафик будет ограничен адресами Dedicated CDN Egress IPs. Убедитесь, что это не повлияет на другие сервисы, использующие эту зону.

Рекомендуется использовать для проксирования отдельную выделенную зону, чтобы не затрагивать продакшен-системы. Если вы решите создать новую зону, следуйте шаги чтобы зарегистрировать новый домен в Cloudflare.

Следующий пример показывает, как настроить Logpush и Dedicated CDN Egress IPs для проксирования HTTPS-получателя. При этом проксирование должно работать для любого поддерживаемого получателя Logpush, поскольку все получатели используют протокол HTTP.

1. Настройте выделенный egress IP Pool

  1. Обратитесь к своей команде Cloudflare account team, чтобы приобрести Dedicated CDN Egress IPs для вашей зоны.

  2. (Необязательно, но рекомендуется) Запросите два IP-адреса: один в PDX-B и один в SJC-A, чтобы обеспечить охват в разных регионах.

  3. После создания пула подтвердите Pool ID.

2. Настройте зону

  1. Зарегистрируйте новую зону для пула выделенных egress IP-адресов или используйте уже существующую.
  2. Обратитесь в свою команду поддержки по работе с аккаунтом, чтобы получить ID пула выделенных исходящих IP-адресов.
  3. Сделайте PATCH запрос к Редактировать настройку зоны конечная точка:

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

Хотя бы одно из следующих права доступа токена требуется:
Изменение настройки зоны
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/aegis" \
	--request PATCH \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"id": "aegis",
		"value": {
				"enabled": true,
				"pool_id": "<YOUR_EGRESS_POOL_ID>"
		}
	}'

3. Настройка прокси-зоны

  1. В вашей зоне добавьте DNS-запись (CNAME или A/AAAA) с Цель в качестве конечной точки назначения HTTP.
Создайте запись DNS в панели управления Cloudflare, чтобы задать конечную точку назначения HTTP
  1. При необходимости настройте Origin Rules чтобы указать пользовательский порт. Это полезно, если назначение принимает трафик только на нестандартном порту, например 12345. Вы можете настроить logpush.yourdestinationendpoint.com (без указания порта, так как Cloudflare по умолчанию проксирует трафик только на портах HTTP/HTTPS) для проксирования на yourdestinationendpoint.com:12345.

4. Настройте Logpush

  1. Создайте задание Logpush с указанными ниже параметрами:
Ввод данных о получателе при создании задания Logpush в панели управления Cloudflare
  1. Проверьте получателя, чтобы убедиться, что журналы поступают.

5. Защитите конечную точку прокси-зоны

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

Добавьте секретный заголовок с проверкой WAF

Добавьте секретный токен в виде HTTP-заголовка в задании Logpush, а затем создайте правило WAF, блокирующее запросы без этого заголовка. Это рекомендуемый подход для большинства развёртываний.

Настройте Logpush с секретным заголовком

Любой параметр URL, начинающийся с header_ становится HTTP-заголовком в запросе. При создании или обновлении задания Logpush добавьте секретный заголовок в URL назначения:

https://logpush.yourdestinationendpoint.com?header_X-Logpush-Secret=YOUR_RANDOM_SECRET_TOKEN

Сгенерируйте надёжный случайный токен с помощью openssl rand -hex 32.

Создание пользовательского правила WAF

В проксирующей зоне перейдите на Безопасность > WAF > Custom rules и создайте правило, блокирующее запросы без корректного секретного заголовка.

Добавьте фильтрацию по ASN

Для дополнительной защиты добавьте правило, разрешающее трафик только с ASN Cloudflare. Трафик Logpush исходит из сети Cloudflare (ASN 13335, 132892 или 202623).

Используйте Access Service Tokens для сред с повышенными требованиями к безопасности

Для более надёжной аутентификации используйте Cloudflare Access Service Tokens для аутентификации между машинами. Создайте Service Token в панели управления Zero Trust, а затем настройте Logpush с заголовками Access:

https://logpush.yourdestinationendpoint.com?header_CF-Access-Client-Id=YOUR_CLIENT_ID&header_CF-Access-Client-Secret=YOUR_CLIENT_SECRET

Проверьте настройки безопасности

Убедитесь, что ваши правила WAF блокируют неавторизованные запросы:

$ curl https://logpush.yourdestinationendpoint.com
# Expected: error code: 1020

$ curl -H "X-Logpush-Secret: wrong-token" https://logpush.yourdestinationendpoint.com
# Expected: error code: 1020

Проверьте прокси-зону в Cloudflare Analytics, чтобы убедиться в поступлении трафика Logpush, и отслеживайте события WAF, чтобы неавторизованные запросы блокировались.