Как обойти блокировку Cloudflare и ECH от РКН?

Автор: webmasta | Опубликовано:
Обновлено:
ркн заблокировал cloudflare

С начала ноября 2024 РКН начал блокировку сайтов, использующих Cloudflare.

Но пока  блокируются только те сайты, которые используют технологию ECH. А так как клауд включил её для всех сайтов втихую, то сам понимаешь, что произошло.

Что такое ECH?

Encrypted Client Hello (ECH) - это технология, направленная на улучшение конфиденциальности и безопасности при установлении защищенных интернет-соединений. Когда вы посещаете сайт по протоколу HTTPS, ваш браузер и сервер обмениваются данными для установления защищенного канала связи. Одним из первых этапов этого процесса является отправка сообщения Client Hello, которое содержит информацию о том, к какому именно серверу вы хотите подключиться (через параметр SNI — Server Name Indication).

Проблема заключается в том, что это сообщение передается в незашифрованном виде, что позволяет посторонним наблюдателям (например, интернет-провайдерам или злоумышленникам) увидеть, какие сайты ты посещашь.

ECH решает эту проблему, шифруя информацию в сообщении Client Hello. Таким образом, третьи стороны не могут определить, к какому серверу ты подключаешься, что повышает приватность.

Но есть одно маленькое но...

Почему Роскомнадзору это не понравилось

Важный момент: РКН не заблокировал Cloudflare, сервис всё еще не под запретом. Речь идёт именно о технологии ECH, которую можно отключить, как на стороне клиента (в браузере), так и для сайта, размещенного через клауд.

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

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

Другими словами, Cloudflare частично "ослепил" РКН.

Какое-то время это всё работало. И даже были решения для обхода блокировок любых сайтов через ECH Cloudflare.

Короче говоря, РКН обиделся и заблочил веером все сайты, у которых включен ECH.

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

Secure Connection Failed

An error occurred during a connection to webmasta.ru. PR_END_OF_FILE_ERROR

Error code: PR_END_OF_FILE_ERROR

The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.

Please contact the website owners to inform them of this problem.

Владельцам сайтов - как разблокировать сайт на Cloudflare?

К счастью, способ пока еще есть. Нужно лишь отключить ECH для заблокированного домена.

Вопрос - надолго ли этого хватит? Если есть годные аналоги клауда - будь зайкой, скинь в комменты рекомендации.

Сделать это можно двумя способами.

На платном тарифе отключить ECH можно в настройках:

  1. выбрать домен
  2. SSL/TLS
  3. Edge Certificates
  4. Encrypted ClientHello (ECH)
  5. выбрать Disabled.

На бесплатном - только через API, но сделать это относительно легко.

Другие наблюдения:

  • настройка encryption mode (flexible, full, strict) на блокировку не влияет,
  • кто-то советует отключать TLS 1.3 на странице SSL / TLS > Edge certificates, но практика показывает, что это бесполезно - с ним всё работает шикарно.

Как отключить ECH на сайте через API Cloudflare

  1. Со страницы https://dash.cloudflare.com/profile/api-tokens забираем Global API Key.
  2. С дашборда, где список сайтов - https://dash.cloudflare.com - переходим в нужный домен и справа снизу будет указан ключ Zone ID.

Для каждого домена нужно брать свой Zone ID и выполнить запрос отдельно!

Далее проще всего всё сделать через Postman:

  1. Метод: PATCH.
  2. URL: https://api.cloudflare.com/client/v4/zones/ZONE_ID/settings/ech - где ZONE_ID тот, что ты взял со страницы домена.
  3. Заголовки:
    • X-Auth-Email - почта от аккаунта в клауде,
    • X-Auth-Key - твой Global API Key.
    • Content-Type - application/json
  4. В body нужно выбрать тип raw и вставить следующий json:
{"id": "ech", "value": "off"}

Если всё правильно сделал, придёт вот такой ответ:

{
    "result": {
        "id": "ech",
        "value": "off",
        "modified_on": null,
        "editable": true
    },
    "success": true,
    "errors": [],
    "messages": []
}

Коллекция для Postman (полуавтоматический режим)

Только сегодня и специально для тебя - супер акция. Коллекция для постмана совершенно бесплатно!

Если влом вручную создавать новый запрос, то можно импортировать его через коллекцию.

В Postman:

  1. Справа выбирай Collections.
  2. Import.
  3. Raw text - вставляй json

    Замени значения всех ключей и почту на свои данные!
     
{
	"info": {
		"_postman_id": "d75a2bf6-99b6-40bc-ba05-1f7daaace11a",
		"name": "Cloudflare ECH off",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
	},
	"item": [
		{
			"name": "Cloudflare ECH off",
			"request": {
				"method": "PATCH",
				"header": [
					{
						"key": "X-Auth-Email",
						"value": "EMAIL",
						"type": "default"
					},
					{
						"key": "X-Auth-Key",
						"value": "GLOBAL_API_KEY",
						"type": "default"
					},
					{
						"key": "Content-Type",
						"value": "application/json",
						"type": "default"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\"id\": \"ech\", \"value\": \"off\"}"
				},
				"url": {
					"raw": "https://api.cloudflare.com/client/v4/zones/ZONE_ID/settings/ech",
					"protocol": "https",
					"host": [
						"api",
						"cloudflare",
						"com"
					],
					"path": [
						"client",
						"v4",
						"zones",
						"ZONE_ID",
						"settings",
						"ech"
					]
				}
			},
			"response": []
		}
	]
}

Коллекция импортируется в список, выбирай, выполняй запрос.

После этих манипуляций сайт должен снова открываться.

Как отключить ECH в браузере

В браузерах есть настройка, отключающая эту технологию.

Внимание: отключение в браузере может не помочь! Если Вы не владелец сайта, то самый надёжный способ - это использовать VPN.

Firefox

  • Открываем новую вкладку.
  • В адресной строке пишb about:config и нажимай Enter.
  • Откроется страшное предупреждение, жмякай "Принять риск и продолжить".

about:config firefox

  • В строке поиска введи: echconfig.enabled
  • Смени оба параметра на false (двойной клик или переключатель справа):

firefox echconfig.enabled

Браузер надо перезапустить.

Chrome / Яндекс Браузер

В новых версиях хромиума, начиная с 121-й, настройку убрали из браузера.

В Windows нужно лезть в реестр и менять значение там. Источник - https://chromeenterprise.google/policies/#EncryptedClientHelloEnabled

  • WIN + R
  • в окне введи - regedit
  • путь к настройке - HKEY_LOCAL_MACHINE\Software\Policies\Google\Chrome\EncryptedClientHelloEnabled
  • меняй значение на 0x00000000

Внимание! Есть не нулевая вероятность, что ты всё поломаешь своими шаловливыми ручками и моими вредными советами. Поэтому будь готов к тому, что придётся в крайнем случае переустанавливать браузер. Делай бекапы, запомни дефолтные значения реестра, которые меняешь.

 

В Linux всё чуть проще нужно создать файл /etc/opt/chrome/policies/managed/conf.json со следующим содержимым:

{
	"EncryptedClientHelloEnabled": false
}

Если всё сделал правильно, то в chrome://policy/ отобразится конфиг.

    Для Хрома до 121 версии (старая версия)

    В старых версиях, до 121 версии Chromium, всё можно было вырубить относительно просто через настройки.

    Но если у тебя браузер обновлён, то этот вариант не поможет.

    • в новой вкладке перейди по адресу chrome://flags#encrypted-client-hello
    • в появившемся элементе списка поставь статус Disabled.

    Encrypted ClientHello chrome

      Альтернатива Cloudflare

      Скорее всего РКН может полностью заблокировать или дестабилизировать работу Cloudflare в России. А на нём работают тысячи, возможно десятки тысяч русскоязычных сайтов.

      Пока этого не произошло, можно работать дальше, но может возникнуть желание подобрать альтернативу...

      А её нет! )))

      К сожалению, аналогичных сервисов с похожим набором бесплатных инструментов на рынке просто не существует!

      Там либо пробный период на 14 дней, либо только 1 домен бесплатно, либо набор инструментов СИЛЬНО уступает клауду, либо настолько конский ценник, что не понятно зачем вообще платить, если за такие деньжища можно нанять собсветнного специалиста по сетевой безопасности на зарплате.

      Если есть у кого годные примеры куда можно с клауда переехать - закиньте в комменты.

      Добавить комментарий

      Ограниченный HTML

      • Допустимые HTML-теги: <a href> <b> <i>
      • Строки и абзацы переносятся автоматически.
      • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.