Утечка DNS: что это такое и как ее устранить с помощью утилиты DNSCrypt

,

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


Понятно, что подмена перехваченных пакетов не составит особого труда даже при использовании вами VPN -сервисов.

Закрыть дыру можно только путем шифрования DNS -трафика, но для этого вам понадобится специальное программное обеспечение, поскольку ни одна из операционных систем не поддерживает шифрование DNS из коробки. Наиболее простым инструментом для шифрования DNS -трафика является - небольшая бесплатная утилита, выгодно отличающаяся тем, что не нуждается в дополнительных настройках, а значит может использоваться новичками. Есть консольный инструмент - DNSCrypt Proxy , но с ним нужно возиться - выполнять серию команд в PowerShell , изменять адрес DNS вручную и так далее. У кого есть время и желание, пожалуйста, можете ознакомиться с ним на страничке github.com/jedisct1/dnscrypt-proxy .

Мы же предлагаем использовать более простую и удобную десктопную версию DNS -шифровальщика. Скачайте с сайта разработчика simplednscrypt.org соответствующую вашей разрядности ОС версию программы и установите.

Укомплектована легким интуитивно понятным интерфейсом да к тому же на русском языке, так что вы без труда разберетесь что к чему. Основные настройки выполняются в разделе «Меню» . Чтобы начать пользоваться программой, сразу после установки нажмите кнопку «Применить» , а затем выберите внизу вашу сетевую карту, она должна быть отмечена галочкой, как показано на скриншоте. Переключатель «Служба DNSCrypt» должен быть активным.

Проверить, всё ли работает нетрудно. Выполните в окошке Run команду ncpa.cpl , откройте свойства вашего подключения, выберите в списке IP версии 4 (TCPIPv4) и откроете его свойства. Радиокнопка «Использовать следующие адреса DNS-серверов» должна быть активной, а в поле должен быть указан предпочитаемый DNS -сервер. У нас это 127.0.0.1 , у вас адрес может быть другим.

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

Параметры раздела можно не менять, если вы не используете протокол IPv4 . В общих настройках можно включить дополнительные вкладки «Черный список доменов» , «Журнал блокировки доменов» , но это опять, если вы собираетесь работать с предлагаемыми в них функциями, в частности, составлять «черные» списки доменов.

Есть еще вкладки и «Черный список адресов» , но у нас они почему-то неактивны.

DNSCrypt шифрует DNS , а что насчет приватности вообще, может ли программа сделать работу в сети анонимной? Нет, задача DNSCrypt заключается в защите от подмены DNS -серверов злоумышленниками (при условии, что вы не редактировали файл HOSTS) , на анонимность она никак не влияет, но может использоваться в качестве вспомогательного инструмента приватности в случае подключения к интернету через VPN .

В Windows 10 можно очень легко добавлять и удалять подключения по VPN, но при этом нет возможности экспортировать уже настроенные подключения. Зачем это может понадобиться? Сама по себе процедура настройки VPN в Windows ...

Любой человек, который задумывается об анонимности в интернете знает отличный способ скрыть свой IP-адрес в интернете – это VPN-сервис. Однако даже при VPN-соединении зачастую запросы к DNS-серверу остаются незащищенными, и можно запросто отследить куда идут ваши DNS-запросы. По другому это называется “DNSleaks” или «утечка DNS».

Давайте рассмотрим поподробнее что такое DNS и какие существуют проблемы.

Как известно, каждый компьютер в сети Интернет имеет свой IP-адрес, не зная IP-адреса компьютера, невозможно отправить ему информацию или запрос. IP-адрес имеет вид 4-х байтового числа, разделенного точками (например, 162.234.12.110 или 78.31.54.226).

Для простого человека запомнить большое количество IP-адресов не легко, поэтому в начале развития сети Интернет возникла необходимость в средстве, которое должно было бы облегчить жизнь пользователям Интернета. Таким средством стала ДНС — система доменных имен. ДНС сервер — это средство, которое позволяет определить IP-адрес по доменному имени.

К примеру вы ввели в строке браузера адрес сайта, браузер послал запрос на DNS-сервер, который указан в настройках вашего интернет-подключения. Сервер отправляет обратно пакет с ответом, в котором содержится IP-адрес нужного сайта.

С одной стороны всё сделано удобно – вы просто воткнули кабель в сетевую карту, вам автоматически присвоили DNS-сервер провайдера с быстрым откликом и всё работает. Но с другой стороны есть две проблемы при такой схеме:

1) Отсутствует шифрование соединения . Это значит что любой злоумышленник сможет перехватить ваш трафик и сделать подмену IP-адреса. Например, показать вам поддельную страницу интернет-банка. Также желательно скрыть этот трафик от провайдера или от правоохранительных органов (мало ли что J).

2) DNS-сервера провайдеров по закону обязаны сохранять логи (с какого IP, на какие сайты заходили, и время соединения), а также по запросу от правоохранительных органов предоставлять эти логи (я надеюсь, все знали это? J). Скажу даже больше, 99% DNS-серверов мира пишут логи и не скрывают этого.

Если вдруг вы не хотите чтобы ваши данные кто то перехватывал или читал логи ваших посещений есть надёжный вариант. Что нужно сделать:

1) Нужно зашифровать соединение. Для этого существует программа DNSproxy. Она соединяется к DNS-серверу не напрямую, а зашифровано через DNS-резольвер (он просто редиректит запросы на DNS-сервер). В свою очередь резольвер передаёт данные DNS-серверу тоже по зашифрованному соединению. То есть таким образом с помощью снифферов (например WIreshark) можно лишь узнать IP-адрес резольвера. Но поскольку пакеты зашифрованы с помощью «Elliptic curve cryptography» (эллиптическая криптография), то с каким конкретно DNS-сервером мы обмениваемся данными определить невозможно.

2) Нужно использовать DNS-сервера, которые не ведут логов. Как Вы сами понимаете, сервера провайдера сразу отпадают. Также для анонимности нельзя использовать DNS-сервера Гугла или Яндекса, поскольку они честно признаются в хранении информации (почитайте их Соглашения о Конфиденциальности). Но есть DNS-сервера, которые нам помогут. Это www.opennicproject.org . На сайте написано, что сервера не пишут никаких логов (ну что ж, поверим). Но, к сожалению, эти сервера нестабильны и иногда отваливаются. Для решения этой проблемы можно использовать программу «Acrylic DNS Proxy «. Она позволяет делать запросы не на один DNS-сервер, а на 10 сразу. И пакет с того сервера, который придёт быстрее всех будет принят программой. Следовательно мы решим сразу две задачи – минимизируем потерю скорости запросов (потому что наиболее быстрый обмен данными как правило происходит с DNS-серверами провайдера), и нивелируем нестабильность каких либо серверов.

Итак, нам нужно зашифровать соединение на безопасные DNS сервера. Это пригодится не только для тех, кто не использует VPN (как можно решить проблему утечки DNS будет написано позднее). Начнём:

2) В настройках вашего сетевого подключения нужно прописать вручную DNS-адрес. Заходим «Центр управление сетями и общим доступом» -> «Подключение по локальной сети» -> «Свойства» -> «Протокол интернета версии 4 TCP/IPv4». Там ставим 127.0.0.1. Вторую строчку нужно оставить пустой.

3) Чтобы запустить AcrylicDNSProxy заходим через Пуск и нажимаем «Start Acrylic Service». Должно появиться сообщение об удачном запуске.

4) Теперь проверяем наши DNS-сервера на сайте www.perfect-privacy.com/dns-leaktest . Должно быть примерно так как на скрине:


Рис. 2

Можете добавить файл AcrylicController.exe в автозагрузку.

5) Теперь шифруем наши запросы к DNS-серверам с помощью программы DNScrypt.

6) Распаковываем и запускаем dnscrypt-winclient.exe. Там выбираем свою сетевую карту и нажимаем Install. Теперь соединение с DNS-серверами зашифровано.

7) Проверим что же теперь покажут нам наши сервисы проверки. Заходим на www.perfect-privacy.com/dns-leaktest . Ни один наш сервер не должен определиться.

А если зайти на http://whoer.net , то единственное что он может показать – это адрес DNS-резольвера, через которые проходят DNS-запросы. Сами же сервера «неизвестны».


Рис. 3

VPN + DNS-шифрование

На рисунке указана типичная схема вашего соединения, при подключении к VPN-серверам.


Рис 4.

Как видите, есть уязвимость – DNS-запросы могут отправляться одновременно и через VPN-сервер, и напрямую к указанному DNS-серверу вашего сетевого подключения.

Казалось бы, можно просто вручную прописать DNS-сервер в настройках соединения как 127.0.0.1, чтобы не было никаких лишних запросов к DNS провайдера. Но, очевидно, что при отключении от VPN интернет работать не будет, поскольку при подключении к VPN используются их собственные DNS-сервера. Если же просто вписать два сервера проекта www.opennicproject.org , то это снизит скорость серфинга в интернете, когда VPNбудет отключен. В этом случае так же рекомендуется установить программу AcrylicDNSProxy, которая не позволит упасть скорости серфинга. Но раз установили AcrylicDNSProxy, то почему бы и не установить и DNScrypt?

Если же вы 100% времени пользуетесь VPN-сервисами, то можете просто прописать один IP-адрес в настройках DNS: 127.0.0.1. Этого будет достаточно.

Таким образом, была найдена интересная схема, позволяющая анонимизировать и скрыть DNS-запросы, что немного поможет если столкнётесь с «органами», и если местный злой хакер решит перенаправить DNS-запросы и показывать вашим детям сайты вместо «Ну погоди» — сайты для взрослых.

Примечание: если же вам всё это ни к чему, просто установите AcrylicDNSProxy с указанием серверов вашего провайдера, Яндекса, Гугла и т.д., что даст вам ощутимое ускорение интернет-серфинга.

Спасибо за внимание.

Зашифровать DNS трафик и уберечь от третьей стороны, поможет DNSCrypt.

    Для чего нужен DNS ?
  1. Настройка DNS сервера это хорошо но еще лучше зашифровать трафик между сервером и клиентом то есть вами. Я уже писал в других статьях что такое DNS и делал обзоры на самые продвинутые сервис DNS серверов. Отличие простых DNS от DNSCrypt тем что весь передаваемый трафик от вашего компьютерного устройства и до сервера DNS не шифруется. Единственное что дают простые Сервисы DNS это блокировка подозрительных сайтов. А трафик как писал выше который передается обратно к вашему компьютеру и отсылается запрос с вашего компьютера на DNS сервер проходит в открытом виде.
  2. Привожу список статей которые писал ранее о известных сервис DNS:
  3. Эти DNS Сервисы прекрасно защищают ваше компьютерное устройство и предлагают выбор фильтрации сайтов. Но передаваемый трафик от сервера DNS к Вашему компьютерному устройству не шифруется, как писал выше. Более о настройки различных компьютерных устройств на вашей стороне как клиент вы можете узнать из самой первой статьи, которые я перечислял выше. Также там есть обзор как выбрать подходящий сервер DNS. Возможно о DNS вам более углубленно поведает. Так как в этой статье мы говорим о DNS но только углубление делаем на шифрование самого соединения от сервера DnS и вашего компьютера.
  4. Шифрования DNS соединения:
  5. Зашифровать само DNS соединение можно установив и настроив на вашем компьютерном устройстве а также посетить официальный сайт. Скачав последнюю версию DNSCrypt для вашего компьютерного устройства с ос., Windows, все ссылки выложу в конце статьи. Распаковав архив на системный диск C:/ папку можно назвать на ваше усмотрение или оставить по умолчанию. Открываем командную строку под именем администратора, сделать это можно если не знаете прочитав статью . Далее в командной строке идем в папку которую распаковали на диск C:/. Название папки в пути отличается как вы ее назвали, нажимаете Enter и если все правильно получиться ответ, картинка ниже:
  6. Далее идете в папку куда распаковали, открывая папку в обычном проводнике и находите файл dnscrypt-resolvers.csv в нем выбираете сервер DNS к которому будем подключаться. На самом первом месте стоит сервер наверное все знают такую программу как. Помимо серверов Adguard есть еще много других на выбор, но из списка этот самый известный. Хотя предпочитаю Yandex.
  7. Можно воспользоваться DNSCrypt и настроит для подключения к Yandex DNS подробней на официальном сайте есть название и прочее для настройки программы DNSCrypt(Лично мое мнение я настроил Яндекс DNS). Параметры DNSYandex: yandex,"Yandex","Yandex public DNS server","Anycast","",https://www.yandex.com,1,no,no,no,77.88.8.78:15353,2.dnscrypt-cert.browser.yandex.net,D384:C071:C9F7:4662:AF2A:CCD5:7B5D:CC97:14D4:07B6:AD36:01E1:AEDC:06D5:6D49:6327 Взято из того файла с настройками программы(dnscrypt-resolvers.csv) Как видите настроить соединение с выбранным ранее DNS сервером и не только из файла а из выше упомянутых статей. Настроив данным методом ваше соединение вам не надо будет устанавливать программы против рекламы и слежки.
  8. В этом примере я расскажу о подключения ADGuard сервера DNS. Далее выбрали названия из списка в файле dnscrypt-resolvers.csv название сервера будет следующим: adguard-dns-family-ns1 и набираем команду в командной строке я подчеркнул ее на картинке ниже:
  9. Если сервер доступен то вы увидите следующее как на картинке выше в краном прямоугольнике. Устанавливаем DNSCrypt в систему следующей командой, подчеркнул на картинке ниже и нажимаем Enter:
  10. Если все пройдет удачно то ответ в командной строке будет как на картинке выше в прямоугольнике. Если вы захотите удалить DnSCrypt то команда будет такая же только в место последнего Install будет Uninstall. Далее все также если захотите сменить сервер проделываете тоже самое с установкой Install и так далее. Программу настроили и теперь надо чтобы соединение в компьютерном устройстве вашем подключалось через DNSCrypt. Идем в подключения вашего соединения и в свойствах соединения предпочитаемые DNS серверы набираете 127.0.0.1 это ваш адрес вашей машины. О смене адреса Dns сервера в подключении можно узнать из примеров статей о которых я писал выше. Как зайти в свойства подключения для изменения адреса Dns все можно узнать по ссылкам в верху статьи.

Мы расскажем об установке и настройке программы DNSCrypt (клиентская часто программы), защищающей от возможной подмены провайдером DNS-ответов на запросы, исходящие от ваших компьютеров. Такая подмена может стать одним из способов блокирования доступа к форуму Рутрекера после вынесенного судебного решения о блокировке.

Инструкции даны с учётом того, что на компьютере установлена OC Windows 8 с русскоязычной локализацией. Для других операционных систем действия, возможно, будут несколько иными, но мало отличаться как по описанию, так и по приведённым снимкам экранов.

Конкретные IP-адреса, указанные в статье, актуальны на момент её написания и могут измениться в будущем. Не используйте их без проверки работоспособности.

Небольшой FAQ

Не вдаваясь в подробности, коих немало, можно сказать, что система DNS превращает имена серверов, например rutracker.org, в их IP-адреса, например 195.82.146.214. Так функционирует связь в интернете: соединение между машинами происходит по таким адресам, а не по привычным и более удобным для запоминания человеку именам различных сайтов. Когда вы хотите попасть на форум Рутрекера, вы просите ваш браузер соединиться с тем сервером, на котором этот форум работает. Браузер по имени домена rutracker.org определяет его IP-адрес и создаёт соединение с соответствующим сервером.

Опять же, в двух словах: это DNS-сервер, к которому можно подсоединиться стандартным образом из других программ для разрешения имён интернет-сайтов, т.е. преобразования строковых имён типа rutracker.org в IP-адреса типа 195.82.146.214. Сам этот сервер не занимается подобным преобразованием, а запрашивает его у заданного ему внешнего сервера. Суть использования DNSCrypt в том, что запрос внешнего сервера происходит в шифрованном виде и по нестандартному протоколу, что не даёт провайдеру возможность заменить DNS-ответ на свой и затрудняет выявление использования этой программы.

Важная для понимания вещь: DNSCrypt представляет собой пару программ - программа-клиент, шифрующая ваш запрос и расшифровывающая полученный ответ, и программа-сервер, принимающая зашифрованный запрос, превращающая имя сайта в IP-адрес и отправляющая зашифрованный ответ обратно. Мы с вами будем устанавливать именно программу-клиент, а парную ей программу-сервер выберем из уже существующих и работающих в интернете.

Ваш браузер обращается к локальной службе DNS и просит её определить IP-адрес нужного сервера. Служба обращается к тому серверу DNS, чей адрес прописан в настройках сетевого соединения компьютера. Так или иначе запрос либо попадает на сервер DNS вашего провайдера, либо проходит через его обычные сервера, чтобы достичь внешнего сервера DNS, например Яндекс.DNS или Google DNS . В этот момент провайдерская система может принять решение об измении ответа сервера, и вместо правильного IP-адреса 195.82.146.214 вы получите IP-адрес, например, провайдерского сервера, соединившись с которым, вы увидите в своём браузере страницу с информацией о блокировке. Или провайдер может вернуть неверный адрес, соединение с которым вообще невозможно. К тому же, ваша локальная служба DNS запомнит провайдерский ответ как правильный и впредь будет использовать его при последующих попытках соединения с тем же сайтом, пока срок действительности такого ответа не истечёт. Ещё одним неприятным моментом может стать то, что провайдер отметит факт запроса вами имени заблокированного сайта.

Мы настроим свои компьютеры так, что запросы к внешнему DNS-серверу будут зашифрованы, и создаваться они будут иным способом. Таким образом, провайдер не сможет подменять его ответы или выдавать вместо них свои.

Настраивать мы будем именно компьютер как самое простое решение проблемы, хотя более правильно было бы внести соответствующие изменения в устройство, дающее доступ в интернет всем потребителям - компьютерам, планшетам, смартфонам и пр., например в установленный в квартире роутер. Если у вас есть возможность сделать именно так, выберите такой путь.

Графические оболочки

Сама по себе программа DNSCrypt имеет только консольный интерфейс, что подходит не всем. Есть как минимум три вспомогательные программы, управляющие ею через графическую оболочку, и сейчас мы расскажем обо всех.. Для вашего удобства сохраните файл dnscrypt-winclient.exe в той же директории, где вы установили DNSCrypt, а затем запустите его от имени администратора (как это сделать, рассказано в описании шага 4 ). Согласившись с предупреждением системы о запуске программы с администраторскими правами, вы увидите основное окно WinClient. Перейдите во вкладку «Config».


В зависимости от того, запущен ли у вас уже клиент DNSCrypt, некоторые надписи будут отличаться от того, что показано на приведённой картинке: левая кнопка будет иметь надпись «Install» (DNSCrypt не установлен или не запущен) или «Uninstall» (DNSCrypt в данный момент запущен), а правая кнопка, соответственно, «Start» или «Stop». В этом окне вы можете сделать те же самые шаги, что делали в основном разделе: выбрать подходящий вам сервер DNSCrypt (выпадающий список «Select Provider») и запустить ваш клиент с соответствующей настройкой. Нажимая на «Install», вы устанавливаете клиент как службу Windows, а нажимая на кнопку снова, удаляете эту службу. Нажимая «Start» / «Stop», вы запускаете и останавливаете клиент в обычном режиме, например, если вы не уверены в работоспособности выбранного сервера DNSCrypt и хотите временно запустить клиент, чтобы проверить его работу.

Единственным недостатком программы на данный момент является то, что, запускаясь, она не определяет выбранный вами сервер DNSCrypt и всегда выделяет первый элемент из списка доступных серверов (он берётся из того же файла dnscrypt-resolvers.csv). Имея это в виду, можно управлять вашим клиентом DNSCrypt удобней, чем в консоли.

DNSCrypt Windows Service Manager

Другой графической оболочкой является DNSCrypt Windows Service Manager. Функционально она почти не отличается от DNSCrypt WinClient, но имеет небольшое преимущество: она правильно показывает выбранный вами сервер DNSCrypt.


Вверху вы увидите список всех ваших сетевых интерфейсов, выберите тот, через который вы выходите в интернет. Ниже находится список серверов DNSCrypt из файла dnscrypt-winclient.exe («Select Provider») и выбор протокола («Protocol»), с помощью которого клиент будет отправлять DNS-запросы на сервер; выберите «UDP». Под списком серверов находится основная кнопка программы, она запускает («Enable») или останавливает («Disable») DNSCrypt как службу Windows. Наконец, внизу окна вы можете видеть текущее состояние DNSCrypt - запущен он (зелёная надпись «enabled») или остановлен (красная надпись «disabled»). Размер шрифта подобран неудачно и часть слова обрезается.

Когда вы настроили службу и запустили её, вы можете закрыть окно программы.

Эта статья написана по просьбе одного из читателей блога. И должен сказать - тема весьма интересная.

В наше время, всё более остро встаёт вопрос о защите передаваемого трафика в сети Интернет. Очень многие могут позариться на ваши данные - от злоумышленников, который всеми силами будут хотеть заполучить ваши пароли к различным сервисам, до спецслужб, которые хотят знать всё о каждом вашем шаге. И на данное время, существует большое количество "средств самообороны" в Интернете. Об одном таком простом, но весьма эффективном средстве, пойдёт речь в этой статье - DNScrypt .

Существует такой замечательный ресурс, под названием OpenDNS , который предоставляет свои публичные DNS-сервера . OpenDNS предлагает DNS-решения для пользователей и предприятий, как альтернативу использованию DNS-сервера, предлагаемого их провайдером. Размещение серверов компании в стратегически важных районах и использование большого кэша доменных имен приводит к тому, что OpenDNS, как правило, выполняет запросы гораздо быстрее, тем самым увеличивая скорость открытия страницы. Результаты DNS-запросов некоторое время кэшируются в операционной системе и/или приложениях, так что эта скорость может быть заметна не при каждом запросе, а только при тех запросах, которые не кэшированы.

Так как трафик между DNS-сервером и вашим компьютером не шифруется , это создаёт серьёзную опасность перехвата трафика. Шифрование DNS-трафика позволит защитить клиента от атак "человек посередине" , при которых злоумышленник вклинивается в канал связи и притворяется DNS-сервером. Кроме того, шифрование предотвращает наблюдение за трафиком и блокирует активность злоумышленников, связанную с подбором идентификаторов пакетов или отправкой фиктивных DNS-ответов. Проще говоря: шифрование DNS предотвратит фишинговые атаки, когда вместо желаемой страницы, открывается её вредоносная копия, где вы вводите свои данные. Со всеми вытекающими. Плюс ко всему, провайдеру станет гораздо тяжелее узнать, какие сайты вы посещали (ибо в логах не будет информации о запросах на разрешение имён). Чтобы всё это организовать, проект OpenDNS выпустил замечательную утилиту с открытым исходным кодом - DNScrypt .

Эта утилита будет шифровать весь передаваемый трафик между вашим компьютером и OpenDNS-серверами. Если ваш провайдер блокирует какой-нибудь сайт по его доменному имени - теперь этот сайт заработает! Ещё один плюс. Данная утилита доступна на великом множестве систем. Опишу установку и настройку на примере Debian и Ubuntu/Linux Mint .

В Ubuntu 14.04 и Debian 8 , этой утилиты нет. Варианта 2: собирать самому или использовать сторонние репозитории. В случае Ubuntu, это будет PPA-репозиторий:

sudo add-apt-repository ppa:xuzhen666/dnscrypt
sudo apt-get update
sudo apt-get install dnscrypt-proxy

В случае Дэбиана, достаточно скачать пакет dnscrypt-proxy из репозитория тестового выпуска . И установить с помощью GDebi , либо командой sudo dpkg -i dnscrypt-proxy_1.6.0-2_amd64.deb .

Для самостоятельной сборки:

wget https://raw.github.com/simonclausen/dnscrypt-autoinstall/master/dnscrypt-autoinstall.sh && chmod +x dnscrypt-autoinstall.sh && ./dnscrypt-autoinstall.sh

В процессе установки будет предложено выбрать DNS-сервер. Выбирайте OpenDNS.

Дополнительной настройки не требуется, в пакете есть всё необходимое. Всё что вам нужно - слега перенастроить подключение к сети. Открываем настройку сетевых соединений, выбираем своё, идём на вкладку IPv4, меняем Авто (Auto) на Автоматически (только адреса) (Auto (Address only) и указываем DNS-адрес 127.0.2.1

Перезагружаемся, подключаемся и переходим по