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

Подключитесь к RDP в браузере

Пользователи могут подключаться к серверу RDP без установки RDP-клиента или Cloudflare One Client на своём устройстве. RDP через браузер использует Cloudflare Tunnel, создающий защищённое исключительно исходящее соединение от вашего RDP-сервера к глобальной сети Cloudflare. Настройка включает запуск cloudflared демон на сервере RDP (или любой другой хост-машине в частной сети) и маршрутизацию трафика RDP через публичное имя хоста.

Есть два способа для пользователей подключиться к серверу RDP через браузер:

RDP на основе браузера можно использовать вместе с Cloudflare One Client чтобы к серверу можно было подключаться несколькими способами. При настройке каждого способа подключения можно использовать один и тот же Cloudflare Tunnel.

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

1. Подключите сервер к Cloudflare

  1. В панели управления Cloudflare перейдите в Сеть > Tunnels.

    Перейдите в Tunnels ↗
  2. Создать новый туннель или отредактировать существующий cloudflared туннель.

  1. В панели управления Cloudflare перейдите в Сеть > Маршруты.

    Перейдите в Маршруты ↗
  2. Выберите Создать маршрут > Tunnel CIDR. Выберите только что созданный туннель, введите IP-адрес или CIDR-адрес вашего сервера (обычно приватный IP-адрес, но допускаются и публичные) и выберите Создать маршрут.

2. Добавьте целевой объект

Цель представляет собой отдельный ресурс вашей инфраструктуры (например, сервер, кластер Kubernetes, базу данных или контейнер), к которому пользователи будут подключаться через Cloudflare.

Создайте цель для каждого компьютера Windows, которому требуется доступ по RDP. Чтобы создать новую цель:

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Контроль доступа > Цели.
  2. Выберите Добавьте цель.
  3. В Имя хоста цели, введите понятное для пользователя имя для цель. Мы рекомендуем использовать имя хоста сервера, например production-server. Имя хоста цели не обязательно должно быть уникальным: его можно использовать повторно для нескольких целей. Имена хостов используются для определения целей, защищённых приложением Access; они не используются для разрешения DNS-адресов.

    Ограничения формата имени хоста

    • Без учёта регистра
    • Содержать не более 253 символов
    • Содержать только буквенно-цифровые символы, -, или . (пробелы не допускаются)
    • Начинаться и заканчиваться буквенно-цифровым символом
  4. В IP-адреса, введите IPv4- и (или) IPv6-адрес целевого ресурса. Раскрывающееся меню не заполнится, пока вы не введете полный IP-адрес.
  1. В раскрывающемся меню выберите IP-адрес и виртуальная сеть где расположен ресурс. Эта пара из IP-адреса и виртуальной сети теперь назначена этой цели и по замыслу не может быть повторно использована для другой цели.
  2. Выберите Добавить целевой объект.

Сделайте POST запрос к Целевые объекты Infrastructure Access конечная точка:

Создать новую цель
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/infrastructure/targets" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"hostname": "infra-access-target",
		"ip": {
				"ipv4": {
						"ip_addr": "187.26.29.249",
						"virtual_network_id": "c77b744e-acc8-428f-9257-6878c046ed55"
				},
				"ipv6": {
						"ip_addr": "64c0:64e8:f0b4:8dbf:7104:72b0:ec8f:f5e0",
						"virtual_network_id": "c77b744e-acc8-428f-9257-6878c046ed55"
				}
		}
	}'
  1. Добавьте следующее разрешение в свой cloudflare_api_token:

    • Zero Trust Write
  2. Настройте cloudflare_zero_trust_infrastructure_access_target ресурс:

    resource "cloudflare_zero_trust_infrastructure_access_target" "infra-ssh-target" {
    	account_id = var.cloudflare_account_id
    		hostname   = "infra-access-target"
    		ip = {
    			ipv4 = {
    				ip_addr = "187.26.29.249"
    				virtual_network_id = "c77b744e-acc8-428f-9257-6878c046ed55"
    			}
    			ipv6 = {
    				ip_addr = "64c0:64e8:f0b4:8dbf:7104:72b0:ec8f:f5e0"
    				virtual_network_id = "c77b744e-acc8-428f-9257-6878c046ed55"
    			}
    		}
    }

Далее создайте приложение Access, чтобы защитить целевой ресурс.

3. Создайте запись DNS

Чтобы сделать свои цели RDP (то есть компьютеры с Windows) доступными через браузер, потребуется DNS-запись Cloudflare для домена и поддомена, к которому будут подключаться пользователи. Этот домен будет использоваться для доступа к любым целевым объектам, доступным пользователям через ваше приложение Access (см. шаг 4).

Например, если вы хотите, чтобы пользователи подключались к целевым объектам на rdp.example.com, создать запись DNS для rdp.example.com. Вы можете создать либо A, AAAA, или CNAME запись:

A-запись

Следующая DNS-запись указывает на ваш публичный поддомен (rdp) в IPv4-адрес в Адресное пространство класса E.

Запись AAAA

Следующая DNS-запись указывает на ваш публичный поддомен (rdp) в IPv6 диапазон адресов для отбрасывания:

запись CNAME

Следующие CNAME запись указывает на ваш публичный поддомен (rdp) в полное доменное имя.

CNAME Цель поле не связано с целями RDP, настроенными в шаге 2.

DNS-записи не обязательно указывать на активный целевой IP-адрес или имя хоста. Достаточно, чтобы DNS-запись была действительной. Маршрутизацию к нужной цели RDP берёт на себя прокси RDP от Cloudflare.

4. Создайте приложение Access

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Контроль доступа > Приложения.

  2. Выберите Создать новое приложение.

  3. Выберите Самостоятельный хостинг и конфиденциальность.

  4. Выберите Добавьте общедоступное имя хоста.

  5. В Домен раскрывающемся списке выберите домен, который будет представлять приложение. Домены должны принадлежать активной зоне в вашем аккаунте Cloudflare. Вы можете использовать подстановочные знаки и защитите несколько частей приложения, использующих общий корневой путь.

    Как вариант, чтобы использовать пользовательское имя хоста Cloudflare for SaaS, выберите Переключиться на пользовательский ввод и введите своё собственное имя хоста.

  6. Включите Разрешить доступ через сессии RDP, SSH или VNC в браузере, затем выберите RDP в раскрывающемся списке.

  7. В Критерии цели, выберите имя(имена) хоста цели которые определяют ваши серверы RDP. Определение приложения будет применяться ко всем целям с выбранным именем целевого хоста, включая цели, добавленные в будущем.

  8. В Порт, введите Порт прослушивания RDP вашего сервера. Скорее всего, это будет порт 3389.

  9. (Необязательно) Если вы используете RDP на нескольких портах, выберите Добавить новые критерии цели и перенастройте то же имя (имена) целевого хоста с другим номером порта.

  10. В разделе Политики доступа, добавьте существующую политику или создать новую политику чтобы управлять тем, кто может подключаться к вашему приложению. Все приложения Access по умолчанию запрещают доступ: пользователь должен соответствовать политике Allow, прежде чем получить доступ.

  11. (Необязательно) В политике Access настройте настройки подключения и ограничьте действия с буфером обмена и передачу файлов между локальным компьютером пользователя и сессией RDP через браузер.

  12. Настройте, как пользователи будут проходить аутентификацию:

    1. Выберите поставщики идентификации которые вы хотите включить для своего приложения.

    2. (Рекомендуется) Если вы планируете разрешить доступ только через один IdP, включите Применить мгновенную аутентификацию. Конечные пользователи не увидят Страница входа Cloudflare Access. Вместо этого Cloudflare будет перенаправлять пользователей напрямую на событие входа SSO.

    3. Аутентификация с помощью Cloudflare One Client не поддерживается для RDP через браузер, поэтому должно оставаться выключенным.
  13. В Длительность сессии, выберите, как часто пользовательский токен приложения должен истечь.

    Cloudflare проверяет каждый HTTP-запрос к вашему приложению на наличие действительного токена приложения. Если срок действия токена приложения пользователя (и глобального токена) истёк, ему будет предложено повторно пройти аутентификацию через IdP. Дополнительные сведения приведены в разделе Управление сессиями.

  14. (Необязательно) Перейдите в Дополнительные настройки вкладку, чтобы настроить работу с приложением:

    • Настройка App Launcher: App Launcher позволяет пользователям просматривать серверы Windows, доступ к которым они могут получить через RDP в браузере. Cloudflare рекомендует оставлять Показать приложение в App Launcher включена. Без App Launcher пользователям придётся самостоятельно узнавать прямой URL-адрес каждого целевого ресурса.

    • Пользовательские страницы блокировки: Выберите, что увидят пользователи при отказе в доступе к приложению.

      • Cloudflare по умолчанию: Перезагрузите страница входа и отображает сообщение о блокировке под логотипом Cloudflare Access. Сообщение по умолчанию: That account does not have access, или вы можете ввести собственное сообщение.
      • Redirect URL: Перенаправление на указанный веб-сайт.
      • Пользовательский шаблон страницы: Отобразите пользовательская страница блокировки размещенный в Cloudflare One.
  15. Выберите Создание.

По умолчанию Cloudflare оценивает политики приложений Access только после оценки всех Политики Network Gateway. Чтобы оценивать приложения Access до или после определенных политик Gateway:

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Политики трафика > Политики Firewall. В Сеть, создать политику Network со следующей конфигурацией:

    Селектор Оператор Значение Действие
    Access Infrastructure Target является Present Allow
  2. Убедитесь, что Принудительно применять длительность сессии Cloudflare One Client отключён, иначе пользователям будет заблокирован доступ к целям RDP.
  3. Обновите в политике порядок приоритета с помощью панели управления или API.

Эта политика Gateway будет применяться ко всем целям Access for Infrastructure, включая RDP и SSH.

6. Подключитесь как пользователь

Чтобы подключиться к компьютеру с Windows по RDP:

  1. Откройте браузер и перейдите по URL-адресу вашего App Launcher:

    https://<your-team-name>.cloudflareaccess.com

    Замените <your-team-name> с вашим Zero Trust имя команды.

  2. Следуйте подсказкам, чтобы войти в своего поставщика идентификации.

    После аутентификации App Launcher отобразит плитки с приложениями, к которым у вас есть доступ. Серверы Windows (целевые узлы), доступные через RDP в браузере, также будут показаны в виде плиток. Если целевой узел доступен через несколько приложений Access, для него будет отдельная плитка на каждое приложение Access.

  3. Выберите цель, к которой нужно подключиться.

    Плитка App Launcher будет открывать URL-адрес вида https://<app-domain>/rdp/<vnet-id>/<target-ip>/<port>. Вы также можете перейти по этому URL-адресу напрямую.

  4. Выберите порт, к которому нужно подключиться. Экран выбора порта появляется, только если приложение Access разрешает RDP-трафик на нескольких портах (например, порт 3389 и порт 65321).

  5. (Необязательно) В настройках браузера разрешите приложению Access доступ к буферу обмена. Доступ к буферу обмена регулируется ограничения политики настроено вашим администратором.

  6. Введите имя пользователя Windows и пароль. Дополнительные сведения о том, как отформатировать имя пользователя, см. в Форматы идентификаторов пользователя.

Теперь у вас есть доступ к удалённому рабочему столу Windows.

Настройки подключения

Настройки подключения ограничивают передачу данных между локальным компьютером пользователя и сессией RDP на основе браузера. Вы можете управлять передачей текста (копирование и вставка) и файлов. Элементы управления текстом отвечают за содержимое буфера обмена. Элементы управления файлами Бета управляют загрузкой и скачиванием файлов. Эти элементы управления настраиваются для каждой политики отдельно, поэтому вы можете предоставлять разные разрешения разным группам пользователей.

Поведение по умолчанию

Для новых политик элементы управления текстом и файлами по умолчанию запрещены. Каждое действие необходимо разрешить явно. Существующие приложения сохраняют полный доступ к буферу обмена текстом для обратной совместимости. Элементы управления файлами запрещены, пока не будут явно включены.

Доступные настройки

Элементы управления текстом и элементы управления файлами используют одни и те же параметры направления:

Параметр Описание
Сессия RDP от клиента к удалённому хосту разрешена Пользователи могут передавать данные со своего локального клиента в сессию RDP в браузере.
Разрешён удалённый сеанс RDP к клиенту Пользователи могут передавать данные из сессии RDP в браузере на локальный клиент.
Разрешены оба направления Пользователи могут передавать данные в обоих направлениях.
Отключить копирование и вставку Пользователям не разрешается передавать данные между сессией RDP в браузере и локальным клиентом.

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

Когда пользователь пытается выполнить запрещённое действие с буфером обмена, содержимое буфера обмена заменяется сообщением о том, что это действие не разрешено. Если передача файлов ограничена, методы загрузки на сервер отключаются, а кнопки скачивания не отображаются на панели управления.

Настройте параметры подключения

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Контроль доступа > Приложения.
  2. Найдите своё браузерное RDP-приложение и выберите Настройте.
  3. Выберите Политики на вкладке.
  4. Создайте новую политику или выберите существующую политику для редактирования.
  5. Развернуть Контекст подключения.
  6. В разделе Настройки подключения, настройте следующие параметры:
    • Элементы управления текстом : Выберите направленную настройку для копирования и вставки текста.
    • Контроль файлов : Выберите направленную настройку для загрузки и скачивания файлов.
  7. Выберите Сохранить политику.

Когда создание или обновление политики Access для RDP-приложения настройте разрешенные форматы в каждом направлении. Используйте text для буфера обмена текстом и file для передачи файлов. Например, следующая политика разрешает обмен текстом через буфер обмена в обоих направлениях, но разрешает загрузку файлов только в одном направлении (с локального устройства на удаленное).

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

Хотя бы одно из следующих права доступа токена требуется:
  • Access: Apps and Policies Write
Создать многократно используемую политику Access
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/policies" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "Allow engineers with clipboard and upload",
		"decision": "allow",
		"include": [
				{
						"email_domain": {
								"domain": "example.com"
						}
				}
		],
		"connection_rules": {
				"rdp": {
						"allowed_clipboard_local_to_remote_formats": [
								"text",
								"file"
						],
						"allowed_clipboard_remote_to_local_formats": [
								"text"
						]
				}
		}
	}'

С помощью connection_rules атрибут в ресурсе cloudflare_zero_trust_access_policy ресурс, настройте разрешённые форматы в каждом направлении. Используйте text для буфера обмена текстом и file для передачи файлов. Например, следующая политика разрешает обмен текстом через буфер обмена в обоих направлениях, но разрешает загрузку файлов только в одном направлении (с локального устройства на удаленное).

resource "cloudflare_zero_trust_access_policy" "rdp-policy" {
	account_id = var.cloudflare_account_id
	name       = "Allow engineers with clipboard and upload"
	decision   = "allow"

	include = [
		{
			email_domain = {
				domain = "example.com"
			}
		}
	]

	connection_rules = {
		rdp = {
			allowed_clipboard_local_to_remote_formats = ["text", "file"]
			allowed_clipboard_remote_to_local_formats = ["text"]
		}
	}
}

Передача файлов Бета

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

Передача файлов имеет следующие ограничения:

Загрузите файлы (с локального устройства на удалённое)

Чтобы передать файлы с локального компьютера в удаленный сеанс Windows, перетащите файлы в окно браузера или используйте панель управления. Перетаскивание поддерживает отдельные файлы и папки (включая вложенные папки, всего до 1,000 элементов). Средство выбора файлов на панели управления позволяет выбирать только отдельные файлы. Файлы попадают на активный элемент удаленного рабочего стола. Например, если в File Explorer открыта папка, файл попадет именно в нее.

Скачать файлы (с удалённого устройства на локальное)

Чтобы передать файлы из удаленного сеанса Windows на локальный компьютер:

  1. В удалённой сессии Windows скопируйте файл, который нужно скачать. Щёлкните файл правой кнопкой мыши и выберите Copy, или выберите файл и нажмите Ctrl+C.
  2. Значок панели управления слегка подпрыгивает, показывая, что файл доступен. Откройте панель управления, чтобы просмотреть файл.
  3. Выберите один из следующих вариантов:
    • Скачать: Скачайте файл на локальный компьютер.
    • Скачать zip: Скачайте несколько файлов сразу в виде ZIP-архива на локальный компьютер.
    • Печать: Печать файлов PDF к локальному принтеру в вашей сети.

Вы можете распечатать PDF-файлы из панели буфера обмена на локальном принтере. Чтобы распечатать один файл, выберите значок печати рядом с PDF. Чтобы распечатать несколько файлов сразу, скопируйте их вместе в буфер обмена на удаленной машине, а затем выберите Print all PDFs на панели буфера обмена. Файлы объединяются в единый PDF-файл и отправляются в браузер как одно задание на печать.

Ограничения

Совместимость

Операционные системы сервера RDP

RDP на основе браузера поддерживает подключение к машинам Windows со следующими операционными системами:

Браузеры

Браузер Совместимость
Google Chrome
Mozilla Firefox
Safari
Microsoft Edge (на базе Chromium)
Другие браузеры на основе Chromium (Opera, Brave)
Internet Explorer 11 и более ранние версии

Powershell

Запустите Powershell 7 или более новой версии, чтобы обойти известную проблему Microsoft, из-за которой не записываются нажатия клавиш.

Форматы идентификаторов пользователя

RDP на основе браузера поддерживает подключение к машинам Windows с использованием следующих учётных данных для входа:

Security Account Manager (SAM)

Идентификаторы пользователей в формате SAM поддерживаются как с пробелами, так и без них.

Примеры:

Ограничения по количеству символов

Идентификаторы, указывающие домен, например DOMAIN\username, могут содержать не более 20 символов для домена и 15 символов для имени пользователя.

Идентификаторы без домена, например .\username, будет использоваться домен по умолчанию. Имя пользователя может содержать не более 20 символов.

User Principal Name (UPN)

UPN-formatted user identifiers are supported with spaces, with and without quotes.

Примеры:

Microsoft Entra ID

Пользователи с идентификаторами, привязанными к доменам Microsoft Entra ID, должны вводить своё имя пользователя в формате AzureAD\[email protected] или AzureAD\user. AzureAD\ префикс не чувствителен к регистру. Процесс входа немного отличается при использовании имени пользователя, привязанного к Microsoft Entra ID:

  1. Введите имя пользователя в одном из форматов, указанных выше.
  2. После ввода имени пользователя поле пароля исчезнет, и начнётся RDP-подключение.
  3. После этого сервер RDP запросит пароль, прежде чем предоставить доступ к серверу RDP.

продукты Cloudflare

При использовании локально размещенных приложений Access большинство продуктов Cloudflare будут совместимы с вашим приложением.

Однако следующие продукты не поддерживаются:

Вы можете отключить Zaraz для конкретного приложения, а не для всей зоны целиком, с помощью Configuration Rule с ограничением по домену приложения.

Google tag gateway настраивается на уровне зоны, и его нельзя ограничить конкретными именами хостов. Чтобы использовать файл cookie привязки Access для имени хоста, отключите Google tag gateway для всей зоны.

Известные ограничения