[Из песочницы] Подмена провайдером DNS-запросов

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

Вчера, по причине некоторых проблем с основным провайдером, я временно переключился на провайдера под названием Дом.ру.

Сегодня, я лазил в гугле и искал некоторую информацию по уходу за кактусами. Одна из ссылок привела меня на сайт psy*****s.org. Там, как выяснилось, вовсю торгуют «веществами». И кактусы тоже продают, правда, довольно специфические.

Но, об этом я узнал позже, а сначала, я был шокирован показом мне странички «доступ к данному ресурсу был заблокирован…» с логотипом Дом.РУ.

С тех пор, как купил ВПН, я такие страницы не наблюдал вообще, по понятной причине.

Расследование
Для начала, я решил проверить, а работает ли мой VPN?
Проверил самым тупым способом — зашёл на сайт my-ip.ru. Увидел свой свой голландский IP, следовательно, c VPN всё в порядке.

Начал разбираться дальше. Мысль, что Дом.РУ каким-то образом может расковырять ssl, я отмёл сразу.

Проверил маршрут при помощи traceroute. Маршрут до сайта psy*****s.org ведёт, как положено, через мой VPN-сервер, а потом приводит на ДОМРУшную заглушку с адресом 92.255.241.100.

Остаётся ДНС. Но, на моём домашнем сервере настроен кэширующий ДНС-сервер bind, и в качестве forwarders указаны гугловские 8.8.8.8 и 8.8.4.4. Есть только одно «но»: доступ к этим серверам идёт по открытому каналу.

Проверяем:

ksh@master:~$ nslookup
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> psy*****s.org
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	psy*****s.org
Address: 92.255.241.100

Теперь, заворачиваем трафик до внешних ДНС-серверов через VPN и проверяем снова:

ksh@master:~$ nslookup
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> psy*****s.org
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	psy*****s.org
Address: 37.252.124.170

Ситуация понятна.

Морально-этическую и законную стороны действий провайдера, думаю, обсуждать смысла нет. По сути, речь идёт об атаке MITM.

Что делать?
Использовать DNSSEC — не выход, хотя, публичные сервера от Google и поддерживают этот протокол. Да, фальшивые ответы не пройдут валидацию, и в результате у вас попросту отвалится ДНС.

Выход один — любым способом шифровать трафик до публичных ДНС-серверов.

Интересна, также, позиция Google по этому вопросу.

Комментарии (5)

  • 28 января 2017 в 20:05

    +1

    Ну, а куда провайдерам деваться? Как альтернатива можно или делать MITM уже на HTTPS или просто тупо банить по IP, причём ещё и подрезолвливая самому адреса для доменов, внесённых в реестр — на практике это будет означать, что cloudflare и прочие aws будут забанены целыми подсетями, например.

  • 28 января 2017 в 20:12

    +2

    DNSCrypt?

  • 28 января 2017 в 20:22

    0

    DNSSEC надо везде. Чтобы с ним было сложно бороться. Вообще это ФАС — навязанная услуга. Да ещё и без соглашения о качестве услуги. Это ведь услуга «наш DNS»
  • 28 января 2017 в 20:27

    0

    Ставьте себе резолвер локально, а трафик через VPN пусть идет весь (ну кроме торрентов, может, и то не факт).
  • 28 января 2017 в 21:01

    0

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

© Habrahabr.ru