Как спрятать DNS от зорких глаз провайдера

  • Автор темы Moriarty
  • Дата начала
  • Просмотров 10867 Просмотров

Moriarty

Crime consultant
Продавец
424
327
10 Дек 2018
Многие из нас каждый день на постоянной основе имеют дело с чем-то, что не очень хочется показывать другим, и для этих целей используют прокси, vpn, tor и кучу другого софта

И вот мы все такие крутые обмазались с ног до головы этими штуками и думаем, что никто никогда не узнает что мы и когда делали, но как правило все кто недавно(а иногда и давно) занимается веселыми делами в интернете забывает про то как же на самом деле работают сетевые протоколы.

Небольшое отступление для тех кого слова IP, DNS, DHCP бросают в дрожь: каждый раз когда мы обращаемся к интернет ресурсам о имени (url) наша машинка стучится к таблице в которой записаны однозначные сопоставления url <=> IP адрес сервера куда должен улететь запрос, эта служба называется DNS (Domain Name System «система доменных имён»).
Как правило вся база с сопоставлениями находится на ближайшем к нам DHCP сервер, а он в свою очередь принадлежит провайдеру.

Вроде ничего страшного не происходит, ну спрашиваем мы у него куда нам слать пакеты, мы то сидим за ssl/tls провайдер же не прочтет наш трафик, но знание о том куда ходит пользователи и главное когда, это очень важно, и нередко может сыграть с вами злую шутку, начиная от продажи этих данных рекламодателям и заканчивая актов в уголовном деле о взломе чьей-то системы

Что же тогда делать? Ну самый простой вариант это принудительно в системе указать где же брать таблицу с сопоставлениями например на 8.8.8.8 (google dns) или 1.1.1.1 (cloudflaer) и все круто, они (как заявляют сами поставщики услуг) не ведут логи и не отслеживают действия пользователей, но проблема в том что общение с этими сервисами идет по не защищенному каналу и если у вас не очень честный (читай не очень честный с вами но очень лояльный к службам безопасности) провайдер то перехватить все это дело не вопрос

И вот именно тут нам на помощь приходит DNSCrypt, DNS по TLS и DNS по HTTPS, эти протоколы обеспечивают шифрование между вами и службой которая обеспечивает корректную работу. Из всех 3 я предпочитаю TLS по DNS и цепляюсь к cloudflaer.

Для тех кто хочет попробовать dnsCrypt есть Simple DNSCrypt для Windows и клиент для Apple iOS под названием DNS Cloak, но они не очень стабильные и периодически повисают.

У DNS по TLS (Transport Layer Security) несколько преимуществ перед DNSCrypt. Во-первых, это предлагаемый стандарт IETF. Также он довольно просто работает по своей сути — принимает запросы стандартного формата DNS и инкапсулирует их в зашифрованный TCP-трафик.

Я лично пользуюсь Stubby, не очень хочу переписывать как это все поднимать и настраивать, по этому просто дам линк(не реклама) но ту инструкцию по которой делал это я :
A lot of people ran dnscrypt-proxy alongside their pihole, now that dnscrypt-proxy is largely abandoned, i'd like to give you a guide for running stubby (current implementation of dns-over-tls for clients).
I'm going to assume you are using raspbian or its variant:
Install Stubby, take a look Для просмотра ссылки Войди или Зарегистрируйся, EDIT: for building dependencies, take a look at this instruction from Для просмотра ссылки Войди или Зарегистрируйся
Alright due to popular request, here's how you build the package:
Install build dependencies ( you don't need libunbound2-dev libidn2-dev)
sudo apt install -y build-essential libssl-dev libtool m4 autoconf libyaml-dev

Then follow the instruction from dnsprivacy wiki:
git clone Для просмотра ссылки Войди или Зарегистрируйся
cd getdns
git checkout develop
git submodule update --init
libtoolize -ci
autoreconf -fi
mkdir -v build && cd build

Configure the package, using the prefix /usr/local (you can change this to whatever you want, i.e. /opt or plain /usr (the latter is a bad idea)
../configure --prefix=/usr/local --without-libidn --without-libidn2 --enable-stub-only --with-stubby
make
make install # as superuser

Runtime dependencies:
sudo apt install -y libev4 libevent-core-2.0.5 libuv1 libidn11 libyaml dns-root-data libunbound2

You also need to create stubby user if it's what you want, or you can also delete the lines containing User=stubby from stubby.service, or you can also use User=nobody.
Next up copy and edit stubby.yml from stubby.yml.example, make sure to change lines containing listen_addresses to something like:
listen_addresses:
- address_data: 127.0.2.2 # or any other local address
port: 2053 # for example, you can select other ports
- address_data: 0::2
port: 2053

You need to be careful around whitespaces in yaml file, it's sensitive to it, worst case scenario stubby will fail to parse yaml (generic error, blah blah).
Next up install the stubby.yml from your edited stubby.yml file in stubby directory
/usr/bin/install -Dm644 stubby.yml /etc/stubby.yml

You need to edit the stubby.service so that it points to your binary file (i.e. /usr/local/bin/stubby or /usr/bin/stubby or /opt/bin/stubby), and make sure that it loads your config (/etc/stubby.yml) using -C flag. Example (look for the # added part) :
# this is the content of stubby.service
[Unit]
Description=stubby DNS resolver
Wants=network-online.target # added
After=network-online.target # added

[Service]
ExecStart=/usr/local/bin/stubby -C /etc/stubby.yml # added
Restart=on-abort # added

[Install]
WantedBy=multi-user.target

Install stubby systemd files inside stubby/systemd to its intended location:
/usr/bin/install -Dm644 stubby.conf /usr/lib/tmpfiles.d/stubby.conf
/usr/bin/install -Dm644 stubby.service /lib/systemd/system/stubby.service

Create new config for dnsmasq inside /etc/dnsmasq.d, let's call it 02-stubby.conf, edit it so that it points to your new server, example:
server=127.0.2.2#2053
server=0::2#2053

now enable and start the stubby service (as root)
systemctl enable stubby && systemctl start stubby

If your system refused to start stubby due to its inability to load libgetdns.so.10, do this:
sudo /sbin/ldconfig -v

Edit: Added instruction for build dependencies, as well as stubby.service, as suggested by Для просмотра ссылки Войди или Зарегистрируйся
Edit2: Fix install instruction for stubby.yml file, as suggested by Для просмотра ссылки Войди или Зарегистрируйся
Edit3: Fix how-to configure and install, as well as build and runtime dependencies.
EDIT4:
I made a bash script to do those processes above automatically, you can have a look here:
Для просмотра ссылки Войди или Зарегистрируйся
The script made no assumption of pihole existence, so you still have to edit dnsmasq config to point and include your stubby local ip address and port.
Install it via script (please have a look at the source first before execute it):
curl -sSL Для просмотра ссылки Войди или Зарегистрируйся -o stubby-install.sh
chmod +x stubby-install.sh
sudo ./stubby-install.sh <prefixdir> <ipv4,ipv6> <port>

EDIT5:
Edited runtime dependencies and /etc/environment tweaks

(осторожно много букв на английском), как я потом выяснил это все есть в базовых репах ubuntu и все сводится к
sudo apt install stubby и правки конфигурационного файла, и то только в том случае если вы хотите добавить cloudflaer (осторожнее с пробелами yml файлы к ним очень чувствительны).
 

stayprimitive

Новорег
3
0
5 Июл 2018
Как считаешь, стоит ли использовать тор днс? Ибо их настроить проще и работают на одном демоне с тором.