Как скрыть DNS-запросы от третьих лиц

Можно ли зашифровать DNS
DNS расшифровывается как “Система имён доменов” и является сервисом, который ваш браузер (и любые другие приложения) использует, чтобы вычислить IP-адрес сервиса. По сути своей, это огромный “список контактов” (для тех, кто постарше — телефонная книга), вы задаете имя, а он возвращает номер, по которому нужно позвонить. Только в данном случае он возвращает IP-адрес.
Каждый раз, когда ваш браузер хочет получить доступ к определённому сервису, такому как Google — через www.google.com, ваш браузер (Chrome или Firefox) обратится к DNS-сервису за IP-адресом веб-серверов Google.
Вот видео, объясняющее, что такое DNS, в картинках, если вы всё таки запутались: https://www.youtube.com/watch?v=vrxwXXytEuI [Invidious]
Обычно, данный сервис предоставляется вашем интернет провайдером и автоматически настраивается сетью, к которой вы подключаетесь. Этот DNS-сервис также может подлежать правилам хранения данных, либо сохранять логи по каким-либо другим причинам (сбор данных в целях рекламы, например). Таким образом, интернет провайдер сможет вычислить всё, что вы делали в интернете, просто взглянув на эти логи, которые, в свою очередь, могут быть предоставлены злоумышленникам. И, кстати, это также очень простой способ наложить цензуру или родительский контроль, используя блокировку DNS. Предоставленные DNS-сервисы будут для некоторых сайтов выдавать вам другой адрес (вместо реального), например, перенаправлять вас с theriratebay на какой-нибудь правительственный веб-сайт. Такие способы блокировки применяются для «неудобных» сайтов по всему миру.
Использование приватного DNS-сервиса или вашего личного DNS- сервиса могло бы свести эти проблемы на нет, но загвоздка в том, что большинство запросов по умолчанию всё равно отправляются без шифрования. Даже если вы заходите на Pornhub в режиме инкогнито, используя HTTPS и приватный DNS-сервис, очень высока вероятность, что ваш браузер отправит чистый незашифрованный текст на некоторые DNS-сервера, спрашивая, по сути, “А какой IP-адрес у www.pornhub.com?”.
Поскольку эти данные не зашифрованы, ваш интернет провайдер и/или к, то то другой, например злоумышленник сможет (используя атаку “Незаконный посредник”) перехватить ваш запрос и узнать, а возможно и залогировать, какой IP-адрес вы запрашивали. Тот же самый интернет провайдер может подменять DNS-запросы, даже если вы используете приватный DNS. Что делает использование приватного DNS бесполезным.
В качестве бонуса, многие устройства и приложения используют зашитый DNS-сервер, переопределяя любые системные настройки. Это верно, например, для многих (70%) Smart-телевизоров и для большинства (46%) Игровых Консолей. Если вы используете такие устройства, вам придётся вручную заставить их перестать использовать свой DNS-сервис, а это может привести к тому, что они будут работать некорректно.
Решением может быть использование защищенного DNS через DoH (DNS по HTTPS), DoT (DNS по TLS) с приватным DNS-сервером (его можно развернуть локально при помощи pi-hole, либо удаленно при помощи сервисов навроде nextdns.io, либо при помощи решений, которые предлагает ваш VPN-провайдер или сеть Tor). Это должно помешать вашему интернет провайдеру или какому-нибудь посреднику подглядывать за вашими запросами… вот только может оказаться так, что и не поможет :).
К несчастью, протокол TLS, используемый во многих HTTPS-соединениях в большинстве браузеров (Chrome/Brave/Ungoogled-Chromium в их числе) всё же сольёт ваш DNS на этапе SNI-рукопожатий (можете проверить это сами на Cloudflare: https://www.cloudflare.com/ssl/encrypted-sni/ [Archive.org] .
(На момент написания этого руководства, только браузеры Firefox поддерживают технологию ECH (Encrypted Client Hello, ранее известная как eSNI), которая применит сквозное шифрование (в дополнение к использованию безопасного приватного DNS поверх TLS/HTTPS), а также позволит вам скрывать ваши DNS-запросы от третьих лиц.)
Но эта опция выключена по умолчанию, так что вам придётся включить её вручную.
Незашифрованные/зашифрованные
HTTPS с незашифрованным DNS и без ECH
HTTPS с зашифрованным DNS и без ECH
HTTPS с зашифрованным DNS и ECH
В дополнение к ограниченному числу поддерживаемых браузеров, только Веб Сервисы и CDN внутри CDN Cloudflare поддерживают на данной стадии ECH/eSNI. Это означает, что ECH, или eSNI, не поддерживаются (на момент написания этого руководства) большинством популярных платформ, таких как:
Amazon (включая AWS, Twitch…)
Microsoft (включая Azure, OneDrive, Outlook, Office 365…)
Google (включая Gmail, Google Cloud…)
Apple (включая iCloud, iMessage…)
Reddit
YouTube
Facebook
Instagram
Twitter
GitHub
…
В некоторых странах, таких как Россия и Китай, ECH/eSNI-рукопожатия блокируются на сетевом уровне, чтобы обеспечить возможность отслеживания и предупредить обход блокировок. Это значит, что вы не сможете установить https-соединение с сервисом, если вы не позволите увидеть, что это за сервис.
Проблемы здесь не заканчиваются. Часть валидации HTTPS TLS называется OCSP, и этот протокол будет сливать метаданные в виде серийного номера сертификата вебсайта, который вы посещаете. Злоумышленник затем сможет с лёгкостью вычислить, какой веб-сайт вы посещали, всего лишь сопоставив номер сертификата. Эту проблему можно решить, используя OCSP-стейплинг , и, к счастью, эта возможность по умолчанию включена в браузерах Firefox/Tor. Но вебсайт, который вы посещаете, также должен поддерживать такую возможность, и, к сожалению, не все сайты её поддерживают.
И, наконец, даже если вы используете свой зашифрованный DNS-сервер (DoH или DoT) с поддержкой ECH/eSNI и OCSP-стейплинга, этого всё ещё может быть недостаточно, так как результаты исследований анализа трафика показали, что при этом всё ещё возможно отслеживать и блокировать нежелательные запросы. Только DNS поверх Tor смог продемонстрировать в последних исследованиях достаточную степень конфиденциальности, но даже он всё ещё может быть повержен другими способами (см. Ваш анонимизированный трафик через Tor/VPN).
Вы также можете решить использовать Скрытый DNS-сервис от Tor, или ODoH (Скрытый DNS поверх HTTPS), чтобы ещё больше увеличить приватность и анонимность, но к несчастью, насколько мне известно, такие методы предоставляются только Cloudflare на момент написания этого руководства (https://blog.cloudflare.com/welcome-hidden-resolver/ [Archive.org], https://blog.cloudflare.com/oblivious-dns/ [Archive.org]). Лично я считаю, что это жизнеспособные и в разумных пределах безопасные технические возможности, но вы также должны принять этическое решение по поводу того, использовать Cloudflare или нет (несмотря на риски, высказанные некоторыми исследователями).
И, наконец, есть ещё новая возможность, которая называется DoHoT, что расшифровывается как DNS поверх HTTPS поверх Tor, и она также может увеличить вашу конфиденциальность и анонимность. Вам стоит её рассмотреть, если вы неплохо работаете на Linux. См. https://github.com/alecmuffett/dohot [Archive.org]. Это руководство не поможет вам с Linux на текущей стадии, но, возможно оно будет дополнено позже.
Вот иллюстрация, показывающая текущее состояние дел касательно DNS-конфиденциальности, основанная на моих текущих знаниях.
Дисклеймер: на этой иллюстрации перечислены только основные веб-браузеры, операционные системы и CDN-сети. Поддержка браузера означает нативную поддержку без использования дополнительного программного обеспечения либо расширений. OS Native Support означает нативную поддержку без использования доп. программного обеспечения/пакетов.
Это непрямое шифрование из-за наложенного протокола Tor Onion Router. Шифрование происходит не в рамках DNS/TLS протокола, а в рамках Exit Node, но протоколы Тора скрывают источники запросов, так что для злоумышленников результат такой же.
ECH на данный момент времени поддерживается только Firefox и сервисами Cloudflare CDN. ECH сам по себе не связан с DNS, но, тем не менее, упомянут здесь в рамках “глобальной картины” DNS-приватности.
ODoH, на данный момент, предоставляется только Cloudflare
DoHoT — довольно новый подход, и нативно не применяется, насколько мне известно, пока нигде, и, на мой взгляд, является лучшей опцией обеспечения DNS-приватности
Таким образом, чтобы разобраться со всеми этими проблемами настолько, насколько возможно, я позже порекомендую два следующих решения: Tor и виртуальное (см. Приложение W: Виртуализация) много-уровневое решение — VPN поверх Tor, которое неплохо должно решить большинство проблем. Я также позже расскажу и про другие варианты (Tor поверх VPN, только VPN, без Tor/VPN), но их я не так рекомендую.
Что же касается обычного ежедневного использования (не конфиденциального), запомните, что пока только браузеры на основе Firefox поддерживают ECH (ранее eSNI), и что на данной стадии это имеет смысл только для вебсайтов, размещенных на Cloudflare CDN. Аналогично, только браузеры на движках Firefox будут принудительно использовать OCSP-стейплинг. Если вы предпочитаете браузеры на движке Chrome (что можно понять, ведь они предоставляют крутые возможности, такие как перевод на лету), то я бы рекомендовал использовать Brave, который поддерживает все решения Chrome, но предоставляет гораздо более высокую степень конфиденциальности, чем сам Chrome. В качестве альтернативы, если вы не доверяете Brave, вы можете также использовать Ungoogled-Chromium (https://github.com/Eloston/ungoogled-chromium [Archive.org]).