В браузере Mozilla Firefox есть возможность включить использование протоколов DNS over HTTPS и Encrypted SNI. Настроим вместе DoH и ESNI в браузере Mozilla Firefox через провайдера Cloudflare.
Что такое DoH и ESNI?
DoH — DNS over HTTPS
Обращение к DNS серверу для разрешения доменных имён происходит по 53 порту в открытом виде. Такой запрос ничем не защищён от кибератаки вида Man-in-the-Middle (человек посередине). Злоумышленник, получив доступ к любому серверу в цепочке DNS запроса, может манипулировать вашим DNS трафиком, выдавая себя за систему, с которой вы общаетесь. Мне, например, глубоко безразлично, подсматривают ли на какие порносайты я захожу. А кому-то не хочется светить свою историю. А вот если уведут мою учётную запись от онлайн банка, то это будет печально.
Для усиления безопасности и защиты приватности пользователей путём шифрования DNS запросов был придуман протокол DNS over HTTPS. Протокол DoH инкапсулирует DNS запросы в HTTPS трафик и по 443 порту отправляет их DNS серверу. Естественно, нужно использовать специальный DNS сервер с поддержкой DoH.
Примеры общедоступных DNS серверов с поддержкой DoH:
Провайдер | IP | Блокировка | DoH-URI-template |
Cloudflare | 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001 |
Нет. | https://cloudflare-dns.com/dns-query |
Cloudflare Security |
1.1.1.2 1.0.0.2 2606:4700:4700::1112 2606:4700:4700::1002 |
Вредоносный контент. | https://security.cloudflare-dns.com/dns-query |
Cloudflare |
1.1.1.3 1.0.0.3 2606:4700:4700::1113 2606:4700:4700::1003 |
Вредоносный и взрослый контент. | https://family.cloudflare-dns.com/dns-query |
8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844 |
Нет. | https://dns.google/dns-query | |
CleanBrowsing |
185.228.168.9 185.228.169.9 2a0d:2a00:1::2 2a0d:2a00:2::2 |
Вредоносный контент. | https://doh.cleanbrowsing.org/doh/security-filter/ |
CleanBrowsing |
185.228.168.10 185.228.169.11 2a0d:2a00:1::1 2a0d:2a00:2::1 |
Вредоносный и взрослый контент. | https://doh.cleanbrowsing.org/doh/adult-filter/ |
CleanBrowsing Family |
185.228.168.168 185.228.169.168 2a0d:2a00:1:: 2a0d:2a00:2:: |
Вредоносный, взрослый и смешанный контент. | https://doh.cleanbrowsing.org/doh/family-filter/ |
Adguard | 94.140.14.14 94.140.15.15 2a10:50c0::ad1:ff 2a10:50c0::ad2:ff |
Рекламный контент. | https://dns.adguard.com/dns-query |
Adguard Family |
94.140.14.15 94.140.15.16 2a10:50c0::bad1:ff 2a10:50c0::bad2:ff |
Рекламный и взрослый контент. | https://dns-family.adguard.com/dns-query |
Quad9 | 9.9.9.10 149.112.112.10 2620:fe::10 2620:fe::fe:10 |
Нет. | https://dns10.quad9.net/dns-query |
Quad9 Sequrity |
9.9.9.9 149.112.112.112 2620:fe::fe 2620:fe::9 |
Вредоносный контент. | https://dns.quad9.net/dns-query https://dns9.quad9.net/dns-query |
Quad9 Secured ECS support |
9.9.9.11 149.112.112.11 2620:fe::11 2620:fe::fe:11 |
Вредоносный контент. | https://dns11.quad9.net/dns-query |
OpenDNS | 208.67.222.222 208.67.220.220 2620:119:35::35 2620:119:53::53 |
Нет. | https://doh.opendns.com/dns-query |
OpenDNS Family |
208.67.222.123 208.67.220.123 2620:119:35::123 2620:119:53::123 |
Взрослый контент. | https://doh.familyshield.opendns.com/dns-query |
ESNI — Encrypted Server Name Indication
Даже если вы включили DoH, то ваш провайдер всё равно знает, на какой домен вы пытаетесь зайти. Дело в том, что обычный протокол TLS SNI перед началом шифрования отправляет провайдеру доменное имя в ClientHello во время рукопожатия. Перед началом шифрования серверу необходимо знать, к какому домену вы обращаетесь, чтобы предъявить нужный сертификат. И доменное имя отправляется в открытом виде, что на корню рубит идею приватности DNS запросов.
А протокол Encrypted SNI шифрует все данные публичным ключом сервера из DNS до установления TLS сессии.
Выбор дистрибутива браузера Mozilla Firefox
Прежде чем перейти непосредственно к настройкам, следует правильно выбрать дистрибутив браузера. Дело в том, что начиная с версии 85.0 браузер Firefox официально больше не поддерживает технологию защиты от перехватов ESNI (Encrypted Server Name Indication). Вместо неё теперь — ECH или Encrypted Client Hello.
В общем, ECH круче чем ESNI, но есть ньюанс. Провайдер Cloudflare сам ещё не включил эту технологию. Сложилась парадоксальная ситуация, Mozilla Firefox уже не поддерживает ESNI, а Cloudflare ещё не поддерживает ECH. Но выход есть. Mozilla рекомендует пользователям временно перейти на Firefox ESR, в котором поддержка ESNI еще не отключена.
Firefox Extended Support Release
Я скачиваю Firefox Extended Support Release 78.9.0esr (64-битный) для Windows 10.
Настройка сети
В настройках сети в качестве DNS серверов я укажу IP адреса Cloudflare. Это не обязательно, просто будет наглядно. Указываю IP адреса:
- 1.1.1.1
- 1.0.0.1
Протестируем браузер в Cloudflare.
https://www.cloudflare.com/ssl/encrypted-sni/
Итак, мы видим, что Encrypted SNI не работает. Secure DNS (в нашем случае это DNS over HTTPS) тоже не работает, не смотря на то, что мы используем безопасный DNS сервер CloudFlare с IP адресом 1.1.1.1.
Настройка DoH в браузере Mozilla Firefox
Открываем настройки браузера. Можно через вкладку:
about:preferences
Или через интерфейс:
Основные > Параметры сети > Настроить.
Устанавливаем галку "Включить DNS через HTTPS". Используемый провайдер по умолчанию "Cloudflare". Можно выбрать также NextDNS или указать Другой URL. Для указания своего URL можно использовать DoH-URI-template из таблицы выше. В таблице приведены не все провайдеры. OK.
Переходим к более тонким настройкам. Открываем вкладку:
about:config
Находим параметр network.trr.mode. Это режим работы TRR (Trusted Recursive Resolver).
При включении DoH в Firefox параметр network.trr.mode по умолчанию устанавливается в значение 2. Возможны варианты:
- 0 — Отключить TRR по умолчанию.
- 1 — Firefox выберет самый быстрый вариант.
- 2 (по умолчанию) — DNS over HTTPS по умолчанию, стандартный DNS-сервер резервный.
- 3 — Только TRR. Отключается стандартный резолвер.
- 4 — Теневой режим. DNS over HTTPS работает параллельно с обычным DNS-сервером для синхронизации и измерений. Используются только результаты стандартного DNS-сервера.
- 5 — Отключить TRR по выбору.
Оставляю вариант по умолчанию — 2.
Находим параметр network.trr.uri.
По умолчанию для Cloudflare браузер устанавливает значение https://mozilla.cloudflare-dns.com/dns-query. Не меняю.
Secure DNS (в нашем случае DNS over HTTPS) теперь заработает. Или не заработает, потому что IP адрес https://mozilla.cloudflare-dns.com/dns-query заблокирован РКН.
Я просто явно укажу другой IP адрес Cloudflare. Находим параметр network.trr.bootstrapAddress и устанавливаем ему значение DNS сервера Cloudflare 1.1.1.1. Этот параметр переопределяет IP адрес домена, указанного в network.trr.uri.
Протестируем браузер в Cloudflare.
https://www.cloudflare.com/ssl/encrypted-sni/
Secure DNS (в нашем случае DNS over HTTPS) теперь работает.
Настройка ESNI в браузере Mozilla Firefox
Для включения ESNI в браузере Mozilla Firefox необходимо предварительно настроить DNS over HTTPS как описано выше.
Находим параметр network.security.esni.enabled и устанавливаем ему значение true.
Протестируем браузер в Cloudflare.
https://www.cloudflare.com/ssl/encrypted-sni/
Encrypted SNI теперь работает.
Вместо заключения
С какой стороны ни посмотри — DNS over HTTPS для нас, как конечных пользователей, очень хорошая штука.
Но технологии DNS over HTTPS и Encrypted SNI как кость в горле провайдеров, которые стремятся повысить свой доход путём встраивания рекламы в контент или продажи статистических данных сторонным компаниям.
Госорганы тоже не заинтересованы в том, чтобы преступники скрывали свои действия данной технологией. Кстати, уже появились вирусы, которые маскируют свою активность помощью DNS over HTTPS.
Повсеместное внедрение DoH в компаниях может снизить возможности встроенных централизованных средств информационной безопасности, которые мониторят общий трафик и ловят DNS обращения к зловредным и сомнительным ресурсам. Проблема, конечно, решается путём децентрализации таких систем защиты, но это накладно.
Всё это тормозит внедрение технологии DoH, но движение есть. Mozilla Firefox уже собирается включить по умолчанию DNS over HTTPS в США. В Великобритании DoH будет по умолчанию отключён. Цели Google, Cloudflare, Mozilla, Microsoft и прочих интернет-гигантов, конечно, не бескорыстны. Статистика и трафик DNS запросов теперь будет сосредотачиваться только у них. Этот ресурс монитизируется, промежуточные провайдеры окажутся в пролёте.
Ссылки
В операционной системе Windows тоже появилась возможность использовать DNS over HTTPS: