использовать dns сервер с шифрованием dnscrypt яндекс браузер что это
Решаем проблему перехвата и подмены DNS-запросов. DNSCrypt в Яндекс.Браузере
Когда речь заходит о защите веб-трафика от перехвата и подмены, то на ум в первую очередь приходят протокол HTTPS или даже собственный VPN-сервер. К сожалению, многие забывают еще об одной незащищенной стороне, а именно о DNS-запросах. Сегодня я еще раз привлеку внимание к этой проблеме и расскажу о том, как мы решаем ее в Яндекс.Браузере с помощью технологии DNSCrypt.
Архитектура системы доменных имен (DNS) за редким исключением остается неизменной с 1983 года. Каждый раз, когда вы хотите открыть сайт, браузер отправляет запрос с указанием домена на DNS-сервер, который в ответ отправляет необходимый IP-адрес. И запрос, и ответ на него передаются в открытом виде, без какого-либо шифрования. Это значит, что ваш провайдер, администратор сети или злоумышленник c MITM могут не только хранить историю всех запрошенных вами сайтов, но и подменять ответы на эти запросы. Звучит неприятно, не правда ли?
Предлагаю вспомнить несколько реальных историй перехвата и подмены DNS-запросов.
Перехват DNS-запросов (DNS hijacking) это не какая-то редкая страшилка, а вполне распространенная практика. Например, среди провайдеров. Обычно это работает следующим образом. Если пользователь пытается перейти на несуществующий сайт, то провайдер перенаправляет его на свою страницу с рекламой. А может и не на свою.
Американский провайдер Earthlink в 2006 году стал перенаправлять пользователей и информацию об их запросах рекламному партнеру Barefruit. Особенно плохо это выглядело в том случае, если пользователь запрашивал несуществующий домен известного сайта, например, webmale.google.com. Пользователь видел рекламу и контент, которые не имели ничего общего с google.com в адресной строке.
Подобная практика явно нарушает стандарт RFC для DNS-ответов и делает пользователей уязвимыми для XSS-атак. К примеру, исследователь Дэн Камински продемонстрировал уязвимость, которая позволяла встраивать в Facebook или PayPal мошеннические фреймы.
Вы, конечно же, можете отказаться от использования DNS-сервера провайдера и прописать в настройках роутера сторонние решения (например, Google Public DNS или Яндекс.DNS). Но при отсутствии шифрования это никак не решит проблему. Провайдер вполне может вмешаться и здесь, подменив ответ на свой.
Масштабы трояна DNSChanger впечатляют, но бразильцы его переплюнули. 4,5 млн DSL-модемов было взломано в одной только Бразилии в 2011-2012 годах. Для этого было достаточно разослать спам со ссылкой на вредоносную страницу, которая взламывала модем и прописывала новый адрес DNS-сервера. Причем в этот раз мошенники не стали мелочиться с рекламой. На своих подставных DNS-серверах они подменяли адреса для всех крупнейших банков Бразилии.
С домашними и офисными WiFi-роутерами дело обстоит так же печально, как и с бразильскими модемами. Пользователи нередко оставляют заводские логин и пароль на админку, да и за выходом свежих прошивок с исправленными уязвимостями не следит почти никто (кроме читателей Хабра, конечно же). В прошлом году исследователи из Sentrant в своем докладе рассказали о новых случаях взлома роутеров. Мошенники перехватывали обращения к Google Analytics и благодаря этому встраивали на сайты рекламу.
Думаю, с примерами перехвата можно закончить. Вывод тут простой: DNS перехватывают много, на разных этапах и с разной целью.
Разработчики популярного сервиса OpenDNS предложили решение проблемы еще несколько лет назад. Они создали опенсорсную утилиту DNSCrypt и одноименный протокол, который играет для DNS-запросов такую же роль, как и SSL для HTTP.
Во-первых, DNSCrypt зашифрует с помощью стойкой эллиптической криптографии сообщения между вашим компьютером и DNS-сервером. Это защитит их от прослушки и MITM.
Во-вторых, вы больше не привязаны к серверу провайдера или настройкам своего роутера. DNSCrypt обращается за адресами напрямую на указанный вами сервер.
До сих пор для применения DNSCrypt пользователям было необходимо установить на компьютер отдельную утилиту. Это не сложно, но без широкого распространения знаний об угрозе и способах ее решения вряд ли стоит рассчитывать на массовое применение технологии.
Поддержка DNSCrypt в Яндекс.Браузере
Наша команда считает шифрование DNS не менее важным, чем переход на HTTPS, поэтому мы решили поддержать DNSCrypt на уровне Яндекс.Браузера. И сегодня мы начинаем тестирование новой бета-версии Яндекс.Браузера 16.4, пользователи которой могут включить в настройках защиту DNS-запросов.
При этом все запросы в зашифрованном виде будут отправляться на быстрый DNS-сервер Яндекса, который также получил поддержку протокола DNSCrypt. Ограничивать пользователей только одним сервером мы не хотим, поэтому уже в ближайшее время добавим в этом месте возможность выбрать альтернативный DNS-сервер (например, тот же OpenDNS).
И еще кое-что. Подменить IP-адрес на фишинговый можно не только через перехват запроса, но и через самый обычный системный host-файл. Поэтому мы сейчас экспериментируем с запретом использовать системный резолвер в случае недоступности DNS-сервера. Мы понимаем, что включение этой опции по умолчанию может навредить пользователям корпоративных и локальных ресурсов, поэтому пока только наблюдаем и собираем отзывы.
Яндекс.Браузер первым в мире обзавёлся поддержкой DNSCrypt
Яндекс.Браузер будет защищать пользователей от любого рода мошенничества, связанного с подменой сайтов. Обновлённая система защиты основывается на внедрении технологии DNSCrypt, обеспечивающей безопасный обмен данными между браузерами и серверами DNS. Ранее такая технология не применялась в подобных программах. Суть работы DNSCrypt заключается в следующем: при открытии сайта пользователем, браузер отправляет его доменное имя на DNS-сервер провайдера и получает в ответ понятный ему числовой IP-адрес. Обычно браузеры и серверы DNS обмениваются данными без шифрования, что позволяет мошенникам перехватывать и подменивать их, отправляя людей на сторонние ресурсы. Нередко злоумышленники даже взламывают домашние роутеры с целью смены адреса сервера DNS.
Благодаря разработанной компанией OpenDNS технологии DNSCrypt возможность совершения подобных противоправных действий со стороны сетевых жуликов сводится практически к нулю: во-первых, все запросы к DNS-серверу и его ответы шифруются, что не позволяет подменить их; во-вторых, браузер направляет запросы не на тот DNS-сервер, который указан в настройках роутера или компьютера, а на сервис Яндекс с поддержкой DNSCrypt. Таким образом, пользователи не окажутся на сайтах мошенников, даже если те заменят адрес DNS-серверов на их устройствах.
Для защиты от подмены сайтов нужно обновить Яндекс.Браузер и выбрать настройках опцию «Всегда использовать защищенный DNS-сервер Яндекса с шифрованием DNSCrypt».
Подробнее о технологии можно узнать из блога компании.
DNSCrypt — шифрование DNS трафика для параноиков.
Используя VPN, TOR, и даже Tails Linux вы думаете что ваша анонимность надежно защищена. Но к сожалению это не так. Существует один очень важный канал утечки вашей приватной информации — служба DNS. Но к счастью на это тоже придумано решения. Сегодня я раскажу как зашифровать свой DNS трафик с помощью утилиты DNSCrypt.
При использовании HTTPS или SSL твой HTTP трафик зашифрован, то есть защищен. Когда ты используешь VPN, шифруется уже весь твой трафик (конечно, все зависит от настроек VPN, но, как правило, так оно и есть). Но иногда, даже когда используется VPN, твои DNS-запросы не зашифрованы, они передаются как есть, что открывает огромное пространство для «творчества», включая MITM-атаки, перенаправление трафика и многое другое.
Тут на помощь приходит опенсорсная утилита DNSCrypt, разработанная хорошо известными тебе создателями OpenDNS, — программа, позволяющая шифровать DNS-запросы. После ее установки на компьютер твои соединения также будут защищены и ты сможешь более безопасно бороздить просторы интернета. Конечно, DNSCrypt — это не панацея от всех проблем, а только одно из средств обеспечения безопасности. Для шифрования всего трафика все еще нужно использовать VPN-соединение, но в паре с DNSCrypt будет безопаснее. Если тебя такое краткое объяснение устроило, можешь сразу переходить к разделу, где я буду описывать установку и использование программы.
Попробуем разобраться глубже. Этот раздел предназначен для настоящих параноиков. Если ты ценишь свое время, тогда можешь сразу перей ти к установке программы.
Итак, как говорится, лучше один раз увидеть, чем сто раз услышать. Посмотри на рисунок.
Принцип работы DNSCrypt
Допустим, клиент (ноутбук на рисунке) пытается обратиться к google.com Первым делом он должен
разрешить символьное имя узла в IP-адрес. Если же конфигурация сети такова, что используется DNS-сервер провайдера (незашифрованное соединение, красная линия на рисунке), то разрешение символьного имени в IP-адрес происходит по незашифрованному соединению.
Да, какие данные ты будешь передавать на dkws.org.ua, никто не узнает. Но есть несколько очень неприятных моментов. Во-первых, провайдер, просмотрев логи DNS, сможет узнать, какие сайты ты посещал. Тебе это нужно? Вовторых, вероятна возможность атак DNS спуфинг и DNS снупинг. Подробно описывать их не буду, об этом уже написано множество статей. В двух словах ситуация может быть следующей: некто между тобой и провайдером может перехватить DNS-запрос (а так как запросы не шифруются, то перехватить запрос и прочитать его содержимое не составит никакого труда) и отправить тебе «поддельный» ответ. В результате вместо того, чтобы посетить google.com, ты перейдешь на сайт злоумышленника, как две капли воды похожий на тот, который тебе нужен, введешь свой пароль от форума, ну а дальше развитие событий, думаю, ясно.
Описанная ситуация называется DNS leaking («утечка DNS»). DNS leaking происходит, когда твоя система даже после соединения с VPN сервером или Tor продолжает запрашивать DNS серверы провайдера для разрешения доменных имен. Каждый раз, когда ты посещаешь новый сайт, соединяешься с новым сервером или запускаешь какое-то сетевое приложение, твоя система обращается к DNS провайдера, чтобы разрешить имя в IP. В итоге твой провайдер или любой желающий, находящийся на «последней миле», то есть между тобой и провайдером, может получить все имена узлов, к которым ты обращаешься. Приведенный выше вариант с подменой IP-адреса совсем жестокий, но в любом случае есть возможность отслеживать посещенные тобой узлы и использовать эту информацию в собственных целях.
Если ты «боишься» своего провайдера или просто не хочешь, чтобы он видел, какие сайты ты посещаешь, можешь (разумеется, кроме использования VPN и других средств защиты) дополнительно настроить свой компьютер на использование DNS серверов проекта OpenDNS (www.opendns.com). На данный момент это следующие серверы:
При этом тебе не нужно никакое другое дополнительное программное обеспечение. Просто настрой свою систему на использование этих DNS-серверов.
Но все равно остается проблема перехвата DNS-соединений. Да, ты уже обращаешься не к DNS провайдера, а к OpenDNS, но все еще можно перехватить пакеты и посмотреть, что в них. То есть при желании можно узнать, к каким узлам ты обращался.
Вот мы и подошли к DNSCrypt. Эта программулина позволяет зашифровать твое DNS соединение. Теперь твой провайдер (и все, кто между тобой и им) точно не узнает, какие сайты ты посещаешь! Еще раз повторюсь. Эта программа не замена Tor или VPN. По-прежнему остальные передаваемые тобой данные передаются без шифрования, если ты не используешь ни VPN, ни Tor. Программа шифрует только DNS трафик.
DNS LEAK
Как показано на рис, владельцы 12 DNS серверов имеют возможность записывать все посещенные мною сайты. Но поскольку я работаю через Tor, то меня этот вопрос мало беспокоит. На страничке bit.ly/1ctmgaJ описано, как исправить эту уязвимость (то есть что сделать, чтобы после подключения к VPN твоя система использовала DNS-серверы VPN-провайдера, а не твоего интернет-провайдера). Повторять все это не вижу смысла, поскольку любой справится с пошаговой
последовательностью действий.
УСТАНОВКА И ИСПОЛЬЗОВАНИЕ DNSCRYPT
Самый простой способ защитить свое DNS соединение — это использовать DNSCrypt.
Первым делом качаем сам DNSCrypt (https://github.com/opendns/dnscrypt-win-client). Я сразу привел ссылку на GitHub, откуда можно скачать программу. Если хочешь получить о ней дополнительную информацию, тогда тебе сюда: bit.ly/vjGXjB. Чтобы скачать программу с GitHub, нажми кнопку Download ZIP. Будет загружен архив с исходниками DNSCrypt. Уже откомпилированная версия находится в каталоге DNSCrypt архива. Распакуй файлы. В принципе тебе нужен только один файл — dnscrypt-proxy.exe. Он находится в том самом каталоге. Все остальное (исходники) можно удалить.
Но это еще не все. Если ты уже погуглил, то, значит, видел скриншоты DNSCrypt. Запустив dnscrypt-proxy.exe, ты понял, что что-то не то. Программа запустилась в окне командной строки. Все правильно, ты скачал сам прокси, а теперь еще нужно скачать к нему оболочку. На GitHub есть еще один проект — необходимая нам оболочка (https://github.com/Noxwizard/dnscrypt-winclient).
Аналогичным образом скачай ZIP-архив, распакуй его куда-нибудь. В каталоге binaries/Release/ будет программа dnscrypt-winclient.exe. Скопируй этот файл в каталог, в котором находится файл dnscrypt-proxy.exe.
Осталось только запустить dnscrypt-proxy. exe. В появившемся окне выбери сетевые адаптеры, которые нужно защитить, и нажми кнопку Start. Если все нормально, тогда возле кнопки Stop (в нее превратится кнопка Start) появится надпись DNSCrypt is running. Кстати, обрати внимание, что интерфейс для OS X выглядит несколько иначе (клиент для OS X можно взять здесь: bit.ly/rCNp01).
В КАЧЕСТВЕ ЗАКЛЮЧЕНИЯ
Статья получилась не очень большая, поскольку сама программа очень проста в использовании. Но она была бы неполной, если бы я не упомянул и о VPN. Если ты прочитал эту статью, тебя она заинтересовала, но ты еще не пользуешься услугами VPN-провайдера для шифрования своих данных, то самое время это сделать.
VPN-провайдер предоставит тебе безопасный туннель для передачи твоих данных, а DNSCrypt обеспечит защиту DNS-соединений. Конечно, услуги VPN провайдеров платны, но ведь за безопасность нужно платить?
Можно использовать, конечно, и Tor, но Tor работает относительно медленно, и это, как ни крути, не VPN — весь трафик «торифицировать» не получится. В любом случае (какой бы вариант ты ни выбрал) теперь твои DNS-соединения защищены. Осталось только определиться со средством шифрования трафика (если ты это еще не сделал).
В «Яндекс.Браузер» добавили DNS-шифрование для защиты от мошенников
«Яндекс.Браузер» теперь оснащен технологией DNSCrypt, говорится в сообщении компании.
Теперь все запросы от браузера направляются на безопасный DNS-сервер «Яндекса». Кроме того, DNSCrypt шифрует все данные, которыми обмениваются браузер и DNS-сервер. «Благодаря шифрованию перехват трафика становится бесполезен — не имея ключа, перехватчик вместо доменных имён и IP-адресов будет видеть лишь бессмыслицу», — сказано в сообщении.
Информация, которой обмениваются браузер и DNS-сервер, никак не защищена, и её довольно легко перехватить, говорят в «Яндексе». Например, перехватив DNS-трафик, можно узнать, какие сайты вы посещаете. Злоумышленники также могут взломать домашний роутер и заменить адрес DNS-сервера в настройках. Мошеннический DNS-сервер может давать неправильные IP-адреса — по его вине вместо интернет-банка можно оказаться на фишинговом сайте.
Протокол DNSCrypt разработала компания OpenDNS, запустившая в 2006 году одноимённый DNS-сервис. Ранее для того, чтобы включить защиту DNSCrypt, требовалось установить на компьютер специальную утилиту, сказано в сообщении. Теперь для пользователей последней версии «Яндекс.Браузера» достаточно включить DNSCrypt в настройках. Доступно для операционных систем Windows и OS X.
Включение DNSCrypt в настройках Яндекс.Браузера
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как включить DNS через HTTPS и для чего это нужно
Оглавление
Такие компании, как Microsoft, Google и Mozilla, продвигают DNS через HTTPS (DoH). Эта технология будет шифровать поисковые запросы DNS, улучшая конфиденциальность и безопасность в Интернете. Давайте познакомимся поближе с технологией DNS Over HTTPS, узнаем, для чего она нужна и как её включить. Вполне возможно, что вы уже пользуетесь DNS через HTTPS даже не зная этого!
Что такое DNS через HTTPS (DoH)?
Интернет стремится, чтобы по умолчанию шифрование присутствовало везде. На данный момент большинство веб-сайтов, к которым вы обращаетесь, вероятно, используют шифрование HTTPS. Современные веб-браузеры, такие как Chrome, теперь помечают любые сайты, использующие стандартный HTTP, как «небезопасные». HTTP/3, новая версия протокола HTTP, имеет встроенное шифрование.
Это шифрование гарантирует, что никто не сможет вмешаться в работу веб-страницы, пока вы её просматриваете, или следить за тем, что вы делаете в Интернете. Например, если вы подключаетесь к Wikipedia.org, оператор сети — будь то общедоступная точка доступа Wi-Fi компании или ваш Интернет-провайдер — может видеть только то, что вы подключены к wikipedia.org. Они не видят, какую статью вы читаете, и не могут изменять статью Википедии пока она идёт до вашего компьютера.
Но в стремлении к шифрованию DNS остался позади. Система доменных имён делает так, что мы можем подключаться к веб-сайтам через их доменные имена, а не с помощью числовых IP-адресов. Вы вводите доменное имя, например google.com, и ваша система свяжется с DNS-сервером, который указан в настройках системы, чтобы получить IP-адрес, связанный с google.com. Затем ваш компьютер или телефон подключится к этому IP-адресу.
Смотрите также статьи:
До сих пор эти запросы DNS не были зашифрованы. Когда вы подключаетесь к веб-сайту, ваша система отправляет запрос о том, что вы ищете IP-адрес, связанный с определённым доменом. Любой посредник передачи данных — возможно, ваш интернет-провайдер, но, возможно, также просто общедоступная точка доступа Wi-Fi, записывающая трафик, — могут регистрировать, к каким доменам вы подключаетесь. Из-за этого возможны атаки и сбор информации, описанные в статье «Применение фальшивого DNS».
DNS через HTTPS делает этот надзор невозможным. При использовании DNS через HTTPS ваша система установит безопасное зашифрованное соединение с вашим DNS-сервером и будет передавать запрос и ответ через это соединение. Все, кто находится между ними, не смогут увидеть, какие доменные имена вы ищете, или вмешаться в присланный ответ.
Сегодня большинство людей используют DNS-серверы, предоставленные их интернет-провайдером. Однако существует множество сторонних DNS-серверов, таких как Google Public DNS, Cloudflare и OpenDNS. Эти сторонние поставщики одними из первых включили поддержку DNS через HTTPS на стороне сервера. Чтобы использовать DNS через HTTPS, вам потребуется как DNS-сервер, так и клиент (например, веб-браузер или операционная система), который его поддерживает.
Как соотносятся DNS поверх HTTPS, DNSSEC, DNSCrypt, DNS поверх TLS
Имеется несколько протоколов, обеспечивающих шифрование DNS запросов. В настоящее время на клиентском программном обеспечении лучше всего поддерживается DNS поверх HTTPS (DoH) — именно ему и посвящена данная статья. Чтобы ориентироваться в терминах, рассмотрим краткие характеристики каждого из протоколов.
DNS поверх HTTPS (DoH) — протокол для выполнения разрешения DNS по протоколу HTTPS. Целью этого метода является повышение конфиденциальности и безопасности пользователей путём предотвращения перехвата и манипулирования данными DNS с помощью атак типа «Атака посредника».
DNS поверх TLS (DoT) — предлагаемый стандартный протокол для выполнения разрешения удалённой системы DNS с использованием TLS. Целью этого метода является повышение конфиденциальности и безопасности пользователей путём предотвращения перехвата и манипулирования данными DNS с помощью атак типа «Атака посредника».
DNSSEC (англ. Domain Name System Security Extensions) — набор расширений IETF протокола DNS, позволяющих минимизировать атаки, связанные с подменой DNS-адреса при разрешении доменных имён. Он направлен на предоставление DNS-клиентам (англ. термин resolver) аутентичных ответов на DNS-запросы (или аутентичную информацию о факте отсутствия данных) и обеспечение их целостности. При этом используется криптография с открытым ключом.
DNSCrypt — это сетевой протокол, который аутентифицирует и шифрует трафик системы доменных имён (DNS) между компьютером пользователя и рекурсивными серверами имён. Первоначально он был разработан Фрэнком Денисом и Йеченг Фу.
Хотя существует несколько реализаций клиента и сервера, протокол никогда не предлагался Инженерной группе Интернета (IETF) в виде RFC.
DNSCrypt обёртывает неизмененный DNS-трафик между клиентом и преобразователем DNS в криптографической конструкции для обнаружения подделки. Хотя он не обеспечивает сквозную безопасность, он защищает локальную сеть от атак типа «злоумышленник в середине».
Он также снижает опасность атак с усилением на основе UDP, требуя, чтобы вопрос был не меньше размера соответствующего ответа. Таким образом, DNSCrypt помогает предотвратить атаки с усилением DNS.
DNSCurve — это предлагаемый безопасный протокол для системы доменных имён (DNS), разработанный Дэниелом Дж. Бернстайном.
Способы включения DNS через HTTPS (DoH)
Можно включить зашифрованные DNS запросы двумя способами — на уровне веб-браузеров и на уровне операционной системы. Каждый из этих способов имеет свои преимущества.
Включение безопасного DNS на уровне веб-браузеров выполняется очень просто, достаточно поставить галочку в настройках. Более того, в Google Chrome эта настройка уже включена по умолчанию. Недостаток этого метода в том, что все другие приложения, использующие Интернет-подключение, не смогут использовать DNS через HTTPS. Такими приложениями могут быть программы для скачивания файлов, мессенджеры, службы обновления программ и операционной системы и так далее.
Включение DoH на уровне системы делает так, что все программы будут делать DNS запросы исключительно по зашифрованному каналу. Но это требует установки программы — кэширующего DNS сервера. На самом деле, установка очень простая и программа будет потреблять минимум ресурсов. При этом собственный DNS будет кэшировать полученные данные благодаря чему немного увеличит скорость работы сети.
Какой вариант выбрать — исключительно на ваше усмотрение. В этой инструкции будут рассмотрены оба способа и вы увидите, насколько всё просто при выборе любого метода шифрования DNS запросов.
Публичные сервера имён с поддержкой DNS через HTTPS
Чтобы использовать DNS через HTTPS сервер имён должен поддерживать эту технологию. В настоящее время публичные самые популярные DNS серверы её поддерживают. Их адреса для DoH или обычных DNS запросов одинаковые.
Провайдер | IP-адреса | Блокирование | Особенности |
---|---|---|---|
Cloudflare | 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001 | нет | Конечная точка DNS поверх HTTPS. |
Google Public DNS | 8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844 | нет | Конечная точка DNS поверх HTTPS. |
CleanBrowsing | 185.228.168.168 185.228.169.168 2a0d:2a00:1:: 2a0d:2a00:2:: | Взрослый контент. | Конечная точка DNS поверх HTTPS. |
Adguard | 176.103.130.130 176.103.130.131 2a00:5a60::ad1:0ff 2a00:5a60::ad2:0ff | Рекламный контент. | Конечная точка DNS поверх HTTPS. |
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 | нет |
Независимо от того, включаете вы DoH в браузерах или для всей системы, вы можете использовать любой DNS сервер из этого списка. Лично я предпочитаю DNS сервера от Google.
Как включить DNS через HTTPS (DoH) в веб-браузерах
Google Chrome
В Google Chrome в Windows уже включена опция DNS через HTTPS. Вы можете её проверить перейдя в «Настройки» → «Конфиденциальность и безопасность» → «Безопасность» → «Дополнительные» → «Использовать безопасный DNS сервер». Чтобы быстро найти эту настройку, введите в адресную строку «chrome://settings/security/» и пролистните в самый низ.
Вы можете выбрать из списка любой DNS сервер с поддержкой DoH или указать свой собственный.
На момент написания, в Google Chrome в Linux данная опция недоступна.
Firefox
Перейдите в Настройки → Основные. Пролистните в самый низ, чтобы найти кнопку «Параметры сети, Настроить».
Поставьте галочку «Включить DNS через HTTPS» и выберите провайдера из списка или введите свой IP адрес:
Opera
Перейдите в настройки (шестерёнка внизу левого сайдбара или кнопка «Простые настройки» → «Открыть все настройки браузера»).
Затем перейдите в «Дополнительно» → «Система».
Включите галочку «Использовать DNS поверх HTTPS вместо системных настроек DNS» и выберите желаемый DNS сервер.
Microsoft Edge
На момент написания предустановленный по умолчанию Internet Explorer (Microsoft Edge) вовсе не знает про DNS через HTTPS. Если скачать последнюю версию Microsoft Edge, то там эту настройку можно включить с помощью флага.
Введите в адресную строку edge://flags#dns-over-https
Включите экспериментальный флаг и перезапустите веб-браузер.
Эммм… вроде как нужно бы ещё ввести настройки DNS сервера, но я не нашёл, где это сделать в Microsoft Edge. Да и кому дело до Microsoft Edge — кто им вообще пользуется?!
Как включить DNS через HTTPS (DoH) для всех приложений
Программы для DNS через HTTPS (DoH)
dnscrypt-proxy
dnscrypt-proxy — это гибкий DNS-прокси с поддержкой современных зашифрованных DNS-протоколов, таких как DNSCrypt v2, DNS-over-HTTPS и Anonymized DNSCrypt.
У программы открыт исходный код, также программа доступна в виде предварительно скомпилированных двоичных файлов для большинства операционных систем и архитектур.
DNS-over-HTTPS
DNS-over-HTTPS — это клиентское и серверное программное обеспечение для запроса DNS через HTTPS, используя протоколы Google DNS-over-HTTPS и IETF DNS-over-HTTPS (RFC 8484).
Как включить DNS через HTTPS (DoH) на уровне операционной системы в Windows
Для операционной системы Windows мы можем использовать только dnscrypt-proxy, поскольку эта программа является кроссплатформенной.
Чтобы скачать dnscrypt-proxy для Windows, перейдите на официальную страницу https://github.com/DNSCrypt/dnscrypt-proxy/releases и скачайте файл вида dnscrypt-proxy-win64-*.zip
Распакуйте скаченный архив — в нём папка «win64». Переименуйте эту папку в «dnscrypt-proxy» и переместите в корень диска C:\. Таким образом, папка и все файлы расположены по пути C:\dnscrypt-proxy\.
Откройте командную строку с правами администратора. Для этого нажмите Win+x и выберите «PowerShell (администратор)».
Выполните там команды:
При запуске nscrypt-proxy загружает списки DNS серверов с шифрованием, тестирует доступность и скорость отклика DNS серверов с поддержкой шифрования.
Если всё запустилось нормально, то продолжайте, здесь же несколько подсказок для тех, у кого возникла ошибка:
Нет ошибок? Отлично!
Пока не закрывайте терминал. В дальнейшем мы установим dnscrypt-proxy как системную службу и нам не нужно будет каждый раз запускать её в командной строке. Но пока мы этого не сделали, dnscrypt-proxy будет работать только пока не закрыто окно консоли.
Теперь мы поменяем системные настройки DNS.
Откройте настройки сети, для этого нажмите Win+i, затем выберите «Сеть и Интернет».
И нажмите кнопку «Настройка параметров адаптера».
Кликните правой кнопкой мыши по сетевому адаптеру, который используется для выхода в Интернет, и выберите «Свойства».
Найдите и дважды кликните пункт IP версии 4 (TCP/IPv4).
В открывшемся окне поставьте переключатель на «Использовать следующие адреса DNS-серверов» и впишите 127.0.0.1:
В качестве резервного DNS сервера впишите «8.8.8.8».
Если ваш Интернет провайдер поддерживает IPv6, то повторите эту же процедуру для «IP версии 6 (TCP/IPv6)», но в качестве IPv6 адресов используйте «::1» и «2001:4860:4860::8888».
Откройте ещё одно окно командной строки и выполните там:
Также в командной строке проверим IP адрес домена с помощью утилиты nslookup:
Обратите внимание на строку:
Она означает, что IP адресом DNS сервера является 127.0.0.1.
Проверьте работу операционной системы — откройте веб сайты, загрузите файлы, используйте свою систему обычным образом, чтобы проверить, что нет никаких проблем с DNS.
Если что-то пошло не так и вы хотите вернуть всё назад, то откройте настройки сетевого адаптера, как это показано чуть выше и переключитесь на автоматическое получение адреса DNS-сервера.
Если всё нормально, то нажмите Ctrl+c в первом терминале, где запущен dnscrypt-proxy чтобы остановить DNS прокси.
Теперь зарегистрируйте его как системную службу (эту команду нужно выполнить в окне с повышенными привилегиями, то есть с правами администратора):
Если не появились ошибки, то это прекрасно! Значит ваша версия Windows совместима со встроенным установощиком.
Теперь, когда служба установлена, запустите её:
Всё готово! При перезагрузке компьютера, данная служба будет запускаться автоматически.
Если вам нужно остановить службу, то выполните:
Чтобы перезапустить запущенную службу (например, после изменения конфигурационного файла) выполните:
Для удаления службы выполните:
Для проверки DNS сервера используйте команду:
Чтобы полностью удалить dnscrypt-proxy сервер выполните:
А затем удалите папку C:\dnscrypt-proxy — всё готово!
Как обновить nscrypt-proxy
Чтобы установить новую версию, остановите службу, замените исполнимый файл (dnscrypt-proxy) на новую версию и запустите службу снова.
У dnscrypt-proxy много опций, но они будут рассмотрены в следующем разделе.
Как включить DNS через HTTPS (DoH) на уровне операционной системы в Linux
Установка dnscrypt-proxy в Kali Linux
Данная инструкция с минимальными поправками должна также работать и в Linux Mint, Ubuntu и аналогичных. Если у вас данный дистрибутив, то попробуйте этот раздел и если что-то не получится, то пишите ваши ошибки в комментариях.
Установите пакет dnscrypt-proxy:
Проверьте, чтобы порт 53 не был занят:
В выводе должна быть всего одна строка, а именно шапка:
Если вывод содержит более чем одну первую строку с названием столбцов, нужно отключить сервис, который использует порт 53. Одним из частых виновников является systemd-resolved.service (NetworkManager), но другие сетевые менеджеры могут иметь аналогичные компоненты. В общем, какая бы там ни была служба (возможно, вы уже устанавливали другой кэширующий DNS сервер), её нужно остановить и убрать из автозагрузки. Если нет процессов, прослушивающих порт 53, то можно продолжать.
Выполните проверку, чтобы убедиться, что dnscrypt-proxy работает:
Запустите службу dnscrypt-proxy и проверьте её статус:
Если всё в порядке, добавьте службу в автозагрузку:
Откройте файл /etc/NetworkManager/NetworkManager.conf:
Сделайте резервную копию файла /etc/resolv.conf:
А затем удалите /etc/resolv.conf (это важно, поскольку это может быть ссылка на файл, а не настоящий файл):
И создайте файл /etc/resolv.conf
со следующим содержимым:
Установка dnscrypt-proxy в Arch Linux, BlackArch и их производные
Установите пакет dnscrypt-proxy:
Проверьте, чтобы порт 53 не был занят:
В выводе должна быть всего одна строка, а именно шапка:
Если вывод содержит более чем одну первую строку с названием столбцов, нужно отключить сервис, который использует порт 53. Одним из частых виновников является systemd-resolved.service (NetworkManager), но другие сетевые менеджеры могут иметь аналогичные компоненты. В общем, какая бы там ни была служба (возможно, вы уже устанавливали другой кэширующий DNS сервер), её нужно остановить и убрать из автозагрузки. Если нет процессов, прослушивающих порт 53, то можно продолжать.
Выполните проверку, чтобы убедиться, что dnscrypt-proxy работает:
Запустите службу dnscrypt-proxy и проверьте её статус:
Если всё в порядке, добавьте службу в автозагрузку:
Откройте файл /etc/NetworkManager/NetworkManager.conf:
и проверьте, имеются ли там следующие строки:
Если их нет, то добавьте их и перезапустите NetworkManager:
Сделайте резервную копию файла /etc/resolv.conf:
А затем удалите /etc/resolv.conf (это важно, поскольку это может быть ссылка на файл, а не настоящий файл):
И создайте файл /etc/resolv.conf
со следующим содержимым:
Защита файла /etc/resolv.conf от изменений
Выше мы добавили настройку NetworkManager чтобы эта служба не меняла содержимое файла /etc/resolv.conf, как это делает она без предупреждений. На самом деле, NetworkManager действительно является самой частой причиной сброса настроек в /etc/resolv.conf, но не единственной. Подробности, а также способы, как определить, какая программа меняет файл /etc/resolv.conf и как надёжно заблокировать этот файл от изменения любыми программами, смотрите в статье «Как запретить NetworkManager менять файл /etc/resolv.conf».
Как настроить dnscrypt-proxy
Настройка dnscrypt-proxy выполняется с помощью файла dnscrypt-proxy.toml. В Windows этот файл расположен по пути C:\dnscrypt-proxy\dnscrypt-proxy.toml, а в Linux это файл /etc/dnscrypt-proxy/dnscrypt-proxy.toml. Независимо от операционной системы, настройка делается одинаково.
Откройте этот файл любым текстовым редактором, например, в Linux:
Содержимое этого файла зависит от вашего дистрибутива: иногда там полный дефолтный файл, иногда уже настроенный сопровождающими пакета.
Чтобы после редактирования файла dnscrypt-proxy.toml изменения вступили в силу, выполните следующую команду.
Чтобы понять, что настраивать, немного информации о том, как работает dnscrypt-proxy. Для преобразования имён в IP адреса dnscrypt-proxy скачивает большой список DNS серверов и в фоне проверяет их доступность и скорость отклика. Запросы делаются к разным DNS серверам в зависимости от скорости отклика и алгоритмов балансировки нагрузки. Это можно изменить — например, можно выбрать определённое имя или несколько имён и указать его (или их) в директиве server_names. Если директива server_names пустая, то будут использоваться все сервера. Если в директиве server_names указано одно или более имён DNS серверов, то будут использоваться только эти сервера.
К примеру, я предпочитаю DNS сервер Google, тогда значение моей директивы:
Если хотите сразу несколько DNS серверов, то укажите их используя следующий синтаксис:
Чтобы узнать, какие сервера выбраны для использования, выполните команду.
Директива listen_addresses устанавливает порт и IP адрес для прослушивания. Обычно, нет необходимости здесь что-то менять. Для работы с сокетами устанавливается следующее значение:
Установите fallback_resolvers на
Если вам зачем-то нужно вести журнал сделанных запросов, то найдите и раскомментируйте следующие строки:
Как добавить DNS сервер в исключение
Предположим, вы хотите использовать полный список DNS серверов, но хотите исключить некоторые из них. К примеру, как написали в комментарии, в данный момент у сервера rdns.faelix.net просрочен сертификат, что приводит к выводу предупреждений от антивирусного ПО. По этой причине мы хотим исключить данный сервер из списка используемых.
Это можно сделать с помощью директивы disabled_server_names, в качестве её значения нужно перечислить имена серверов, которые нужно избегать даже если они удовлетворяют всем критериям.
В первую очередь нам нужно знать имя проблемного DNS сервера. Для этого перейдите на страницу https://dnscrypt.info/public-servers
Внизу найдите выпадающий список «Rows per page» (Строк на страницу) и выберите там «All» (Все).
Нажмите в веб-браузере Ctrl+f для поиска по странице. Мы знаем, что проблемный адрес rdns.faelix.net, попробуем поискать по части имени «faelix»:
Итак, имена IPv4 DNS серверов это faelix-ch-ipv4 и faelix-uk-ipv4.
В файле настроек найдите disabled_server_names и добавьте имена туда:
Если вы используете IPv6 подключение, то также добавьте в список исключений и IPv6 имена.
Сохраните файл настроек и перезапустите службу dnscrypt-proxy.
Документация по настройке dnscrypt-proxy на русском
На странице карточки программы размещён пример конфигурационного файла dnscrypt-proxy с объяснением всех опций и переводом комментариев на русский язык: https://kali.tools/?p=5964
Проверка работы dnscrypt-proxy
Я уже упоминал, что благодаря кэшированию, повторные DNS запросы обрабатываются быстрее. Для проверки можно выполнить два раза подряд команду:
Первый ответ получен через 0,047s, а второй всего через 0,006s. Конечно, это только доли секунды, но всё равно хорошо. К тому же, вы реже будете сталкиваться с ситуацией, когда браузер «задумался» во время запроса из-за того, что по какой-то причине некоторые DNS ответы идут слишком долго или вовсе потеряны.
Можно проверить, сколько идёт запрос «напрямую», без DoH:
В моём случае это 0,058s-0,094s с периодическими таймаутами, видимо, задержка на СОРМ. Видимо, зашифрованный трафик пропускается «как есть», а незашифрованный проходит какую-то обработку, вроде как проверку доменов/IP по реестру запрещённых сайтов и т. п. Больше шифрования — больше скорости!
Запустите Wireshark и начните захват трафика. Через некоторое время проверьте с использованием фильтра
Там должно быть пусто, совсем.
Также с помощью фильтра посмотрим на пакеты, которые уходят к DNS серверу и возвращаются от него:
Как можно увидеть на скриншоте, всё зашифровано, теперь у Интернет-провайдера и других посредников нет никакой возможности узнать или изменить содержимое DNS запросов и ответов.
Настройка dnscrypt-proxy для использования с IPv6
Во-первых, измените файл /etc/resolv.conf
там должны быть строки
В файле dnscrypt-proxy.toml
Нужно установить прослушивание IPv6 интерфейса:
Помните, что сервер google это IPv4 сервер, а google-ipv6 это IPv6 сервер. Поэтому если вы установили значение server_names, то не забудьте туда вписать и IPv6 сервера, например: