Анонимность DNS-запросов (кэширование+шифрование)

Работающий пенсионер
Олдфаг
Статус
Оффлайн
Регистрация
9 Авг 2016
Сообщения
1,366
Реакции[?]
1,048
Поинты[?]
4K

Любой человек, который задумывается об анонимности в интернете знает отличный способ скрыть свой 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).
DNS-сервера провайдеров по закону обязаны сохранять логи (с какого IP, на какие сайты заходили, и время соединения), а также по запросу от правоохранительных органов предоставлять эти логи (я надеюсь, все знали это? J). Скажу даже больше, 99% DNS-серверов мира пишут логи и не скрывают этого.
Если вдруг вы не хотите чтобы ваши данные кто то перехватывал или читал логи ваших посещений есть надёжный вариант. Что нужно сделать:
1. Нужно зашифровать соединение. Для этого существует программа DNSproxy. Она соединяется к DNS-серверу не напрямую, а зашифровано через DNS-резольвер (он просто редиректит запросы на DNS-сервер). В свою очередь резольвер передаёт данные DNS-серверу тоже по зашифрованному соединению. То есть таким образом с помощью снифферов (например WIreshark) можно лишь узнать IP-адрес резольвера. Но поскольку пакеты зашифрованы с помощью «Elliptic curve cryptography» (эллиптическая криптография), то с каким конкретно DNS-сервером мы обмениваемся данными определить невозможно.
2. Нужно использовать DNS-сервера, которые не ведут логов. Как Вы сами понимаете, сервера провайдера сразу отпадают. Также для анонимности нельзя использовать DNS-сервера Гугла или Яндекса, поскольку они честно признаются в хранении информации (почитайте их Соглашения о Конфиденциальности). Но есть DNS-сервера, которые нам помогут. Это
Пожалуйста, авторизуйтесь для просмотра ссылки.
. На сайте написано, что сервера не пишут никаких логов (ну что ж, поверим). Но, к сожалению, эти сервера нестабильны и иногда отваливаются. Для решения этой проблемы можно использовать программу "Acrylic DNS Proxy". Она позволяет делать запросы не на один DNS-сервер, а на 10 сразу. И пакет с того сервера, который придёт быстрее всех будет принят программой. Следовательно мы решим сразу две задачи – минимизируем потерю скорости запросов (потому что наиболее быстрый обмен данными как правило происходит с DNS-серверами провайдера), и нивелируем нестабильность каких либо серверов.

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

1) Качаем AcrylicDNSProxy отсюда:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Устанавливаем. Меняем файл конфигурации в папке с установленной программой на уже настроенный на сервера
Пожалуйста, авторизуйтесь для просмотра ссылки.
. Сделать это проще простого и написано на сайте так что описывать тут не вижу смысла.

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

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

4) Теперь проверяем наши DNS-сервера на сайте
Пожалуйста, авторизуйтесь для просмотра ссылки.
. Должно быть примерно так как на скрине:

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

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

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


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

7) Проверим что же теперь покажут нам наши сервисы проверки. Заходим на
Пожалуйста, авторизуйтесь для просмотра ссылки.
. Ни один наш сервер не должен определиться.

А если зайти на
Пожалуйста, авторизуйтесь для просмотра ссылки.
, то единственное что он может показать – это адрес DNS-резольвера, через которые проходят DNS-запросы. Сами же сервера «неизвестны».
Вот так к вам не приедет маски шоу. :)
Всем спасибо за внимание, всего хорошего, Drag.​
 
Сверху Снизу