DNS поверх HTTPS
DNS over HTTPS (DoH) — протокол для выполнения разрешения имён DNS по протоколу HTTPS. Целью внедрения этого протокола является повышение конфиденциальности и безопасности пользователей путём предотвращения перехвата и манипулирования данными DNS с помощью атак типа «Атака посредника»[1].
Протокол DNS over HTTPS описан в стандарте RFC 8484 IETF[2].
История
[править | править код]Предпосылкой создания DoH стали выявленные массовые вмешательства интернет-провайдеров и правительств в работу распределённой системы DNS, в результате которых пользователи незаметно для себя получали поддельную информацию об адресах серверов и их запросы были перенаправлены на посторонние серверы, о чём пользователи не подозревали[1].
В 2016 году на Google Public DNS было внедрено собственное API Google для запросов DoH, использующее нотацию JSON[3]
В мае 2017 года в IETF была сформирована рабочая группа по протоколу разрешения доменных имён через HTTPS[1].
В марте 2018 года Mozilla Foundation тестировала свою реализацию DoH в браузере Firefox[4].
В октябре 2018 года IETF утвердил стандарт DoH – RFC 8484[2].
Преимущества DoH перед классическим DNS
[править | править код]DoH исключает подделку адресов интернет-доменов правительством, интернет-провайдером или злоумышленником и гарантирует, что браузер пользователя получит верный адрес сервера для запрошенного доменного имени[1].
В дополнение к повышению безопасности ещё одна цель DNS over HTTPS — повысить производительность: тестирование DNS-ресолверов разных интернет-провайдеров показало, что во многих случаях они дают неожиданно медленный отклик, что может вызывать серьёзные задержки в реакции браузера на действия пользователя из-за необходимости получения адресов многих доменов при загрузке веб-страницы[1].
Реализации
[править | править код]Google в своих публичных серверах DNS использует две реализации DoH[5]:
- URL https://dns.google/dns-query — стандартизованный в RFC 8484 с поддержкой HTTPS-запросов GET и POST;
- URL https://dns.google/resolve? — собственная реализация API для DoH, в которой используются только запросы GET в нотации JSON.
Стандартная реализация
[править | править код]В стандарте RFC 8484 используются протокол HTTP/2 в HTTPS, запрос отправляется на путь /dns-query
(в иерархии веб-сервера), запрос идентифицируется полем accept = application/dns-message
, содержимое запроса идентично двоичному запросу к серверу DNS по RFC 1035, преобразованное в текстовый вид: в случае метода GET используется переменная dns с кодированным Base64 значением запроса DNS, в случае POST используется content-type = application/dns-message
и значение DNS-запроса передаётся в шестнадцатиричном виде (англ. hex encoding). Ответы передаются с типом content-type = application/dns-message
и текстом, содержащим шестнадцатиричный код ответа сервера DNS[6]. Также в обмене данными c клиентом сервер может использовать для отправки значений клиенту push протокола HTTP/2, описанный в RFC 7540[6].
Общедоступные серверы DNS over HTTPS
[править | править код]![]() | Информация в этом разделе устарела. |
Реализации серверов DoH доступны публично и бесплатно у некоторых поставщиков DNS[7][неавторитетный источник].
Предлагаются три реализации для производственных услуг[8][неавторитетный источник]:
Провайдер | IP-адреса | Блокирование | URL описания |
---|---|---|---|
Cloudflare | 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001 |
нет | https://cloudflare-dns.com/dns-query |
Cloudflare | 1.1.1.2 1.0.0.2 2606:4700:4700::1112 2606:4700:4700::1002 |
вредоносный контент | |
Cloudflare | 1.1.1.3 1.0.0.3 2606:4700:4700::1113 2606:4700:4700::1003 |
вредоносный и взрослый контент[9] | |
Google Public DNS | 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.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 2a00:5a60::ad1:0ff 2a00:5a60::ad2:0ff |
рекламный контент | https://dns.adguard.com/dns-query (недоступная ссылка) |
Quad9 | 9.9.9.9 149.112.112.112 2620:fe::fe 2620:fe::9 |
вредоносный контент | |
OpenDNS | 208.67.222.222 208.67.220.220 2620:119:35::35 2620:119:53::53 |
нет | https://doh.opendns.com/dns-query |
Яндекс DNS | 77.88.8.8 77.88.8.1 2a02:6b8::feed:0ff 2a02:6b8:0:1::feed:0ff |
нет | https://common.dot.dns.yandex.net |
Поддержка в клиентах
[править | править код]- Firefox с версии 62 — поддержка браузера[10]
- DNSCrypt-proxy — локальный DNS → прокси DoH[11]
- doh-php-client — реализация PHP[12]
- KeeneticOS с версии 3.00 — прошивка для маршрутизаторов KEENETIC[13]
- OpenWRT — открытая прошивка для маршрутизаторов позволяет включить поддержку DNS over HTTPS в dnsmasq[14]
- Router OS — начиная с версии 6.47 — прошивка для маршрутизаторов Mikrotik[15]
В апреле 2019 года специалисты компании Qihoo 360 обнаружили образец вредоносного ПО, использующий протокол DNS over HTTPS, и назвали его Godlua Backdoor[16].
См. также
[править | править код]Примечания
[править | править код]- ↑ 1 2 3 4 5 Chirgwin, R. IETF protects privacy and helps net neutrality with DNS over HTTPS : [англ.] : [арх. 14 декабря 2017] // The Register. — 2017. — 14 December.
- ↑ 1 2 Datatracker8484.
- ↑ JSON API for DNS over HTTPS (DoH) // Public DNS : [англ.] : [арх. 27 декабря 2024]. — Google Developers, 2024.
- ↑ Cimpanu, C. Mozilla Is Testing «DNS over HTTPS» Support in Firefox (англ.). Bleeping Computer (20 марта 2018). Дата обращения: 3 января 2025. Архивировано 20 марта 2018 года.
- ↑ DNS-over-HTTPS // Public DNS : [англ.] : [арх. 20 марта 2018]. — Google Developers, 2024.
- ↑ 1 2 draft-ietf-doh-dns-over-https-07 — DNS Queries over HTTPS . Дата обращения: 21 апреля 2018. Архивировано 25 апреля 2018 года.
- ↑ DNS over HTTPS · curl/curl Wiki · GitHub . Дата обращения: 22 мая 2018. Архивировано 2 апреля 2018 года.
- ↑ DNS Security and Privacy — Choosing the right provider . Medium. Дата обращения: 22 мая 2018. Архивировано 9 ноября 2020 года.
- ↑ Introducing 1.1.1.1 for Families (англ.). The Cloudflare Blog (1 апреля 2020). Дата обращения: 23 сентября 2020. Архивировано 1 марта 2022 года.
- ↑ Improving DNS Privacy in Firefox — Firefox Nightly News . Дата обращения: 7 июня 2018. Архивировано 2 сентября 2018 года.
- ↑ GitHub — jedisct1/dnscrypt-proxy: DNSCrypt Proxy — A flexible DNS proxy, with support for encrypted DNS protocols. Дата обращения: 7 июня 2018. Архивировано 20 января 2016 года.
- ↑ GitHub — dcid/doh-php-client: DoH (DNS over HTTPS) PHP Client . Дата обращения: 7 июня 2018. Архивировано 30 декабря 2020 года.
- ↑ Информация о релизе KeeneticOS 3.1 . https://help.keenetic.com. Keenetic (22 января 2020). Дата обращения: 29 октября 2020. Архивировано 18 января 2022 года.
- ↑ OpenWrt Project: DNS over HTTPS with Dnsmasq and https-dns-proxy . openwrt.org. Дата обращения: 17 мая 2020. Архивировано 18 января 2022 года.
- ↑ MikroTik (англ.). mikrotik.com. Дата обращения: 4 июня 2020. Архивировано 20 января 2022 года.
- ↑ Turing, A. An Analysis of Godlua Backdoor : [англ.] : [арх. 3 июля 2019] / A. Turing, Y. Genshen // 360 Netlab Blog. — 2019. — 1 July.
Литература
[править | править код]- DNS Queries over HTTPS (DoH) : RFC 8484 : [англ.] : [арх. 25 декабря 2024] // Datatracker. — IETF.